首页 > 其他分享 >DNS递归解析和迭代解析之间的区别

DNS递归解析和迭代解析之间的区别

时间:2023-02-22 18:11:33浏览次数:28  
标签:本地 迭代 查询 域名 DNS 服务器 解析 客户端

DNS解析是互联网中的重要环节,承担着将域名翻译为可由计算机直接读取的IP地址的基础功能。根据查询对象不同DNS解析可分为递归解析和迭代解析两种方式,接下来,中科三方将简单介绍下两种查询方式的流程以及两种方式的区别。

摘自:https://baijiahao.baidu.com/s?id=1715474506043397545&wfr=spider&for=pc

 什么是递归查询?

 “递归解析”是最常见也是默认的一种解析方式。在这种解析方式中,如果客户端配置的本地域名服务器(Local DNS服务器)不能解析的话,则后面的查询过程全部由本地域名服务器代替DNS客户端进行查询,直到本地域名服务器从权威域名服务器得到了正确的解析结果,然后由本地域名服务器告诉DNS客户端查询的结果。

 在整个递归查询过程中,除一开始客户端向本地域名服务器发起查询请求外,其余各个环节均是以本地域名服务器为中心进行迭代查询,DNS客户端一直处于等待状态,直到本地域名服务器发回最终查询结果。相当于,在整个查询环节中本地域名服务器承担了中介代理的角色。

 递归解析的查询过程大致如下:

 

 

 

 1.客户端向本机配置的本地域名服务器发起DNS域名查询请求;

 2.本地域名服务器收到请求后,会先查询本地缓存,如果有记录值会直接返回给客户端;如果没有记录,则本地域名服务器会向根域名服务器发起请求;

 3.根域名服务器收到请求后,会根据所要查询域名中的后缀将所对应的顶级域名服务器(如.com、.cn等)返回给本地域名服务器;

 4.本地域名服务器根据返回结果向所对应的顶级域名服务器发起查询请求;

 5.对应的顶级域名服务器在收到DNS查询请求后,也是先查询自己的缓存,如果有所请求域名的解析记录,则会直接将记录返回给本地域名服务器,然后本地域名服务器再将记录返回给客户端,完成整个DNS解析过程。

 6.如果顶级域名服务器没有记录值,就会将二级域名对应的服务器地址返回给本地域名服务器,本地域名服务器再次对二级域名服务器发起请求,如此类推,直到最终对应区域的权威域名服务器返回结果给本地域名服务器。然后本地域名服务器将记录值返回给DNS客户端,同时缓存本地查询记录,以便在TTL值内用户再次查询时直接将记录返回给客户端。

 

什么是迭代查询?

 从上面的介绍中我们看到了,递归查询除在一开始客户端发起查询请求外,其他环节都是由本地域名服务器代替客户端进行的。而迭代查询则是指所有查询工作全部由客户端自己进行,除此之外,整个查询路径和步骤与递归查询没有太大区别。

 

DNS迭代查询流程图

 首先客户端向本地域名服务器发起请求,如果本地域名服务器没有缓存记录,客户端便会依次对根域名服务器、顶级域名服务器和二级域名服务器等发起迭代查询,直到获得最终的查询结果。

 在以下条件之一满足时,就会采用迭代解析方式:

 1.在查询本地域名服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报文中的RD字段没有设置为1。

 2.客户端在DNS请求报文中申请使用递归查询,但所配置的本地域名服务器禁止使用递归查询,即在应答DNS报文头部的RA字段设置为0。

标签:本地,迭代,查询,域名,DNS,服务器,解析,客户端
From: https://www.cnblogs.com/sword0077/p/17145388.html

相关文章

  • C# 解析xml串节点值
    例如xml串:<?xmlversion="1.0"encoding="UTF-16"standalone="yes"?><rootversion="1.00.0965"><statesuccess="true"></state><detailreprintflag>0</detailreprintf......
  • 解析HTTPS如何让数据传输更安全
    鉴于HTTP的明文传输使得传输过程毫无安全性可言,且制约了网上购物、在线转账等一系列场景应用,于是引入加密方案。从HTTP协议栈层面来看,我们可以在TCP和HTTP之间插入......
  • SafeArray 一维数组解析方法
    //方法2SafeArrayGetElement(SAFEARRAY*psa,long*ailndex,void*pvElem)if(pvDataValues->vt&VT_ARRAY){switch(pvDataValues->vt){......
  • 《分布式技术原理与算法解析》学习笔记Day19
    分布式通信:消息队列什么是消息队列?队列是一种具有先进先出特点的数据结构,消息队列是基于队列实现的、存储具有特定格式的消息数据。消息以特定格式放入这个队列的尾部后......
  • Ubutun操作系统启用/查看/刷新本地DNS缓存
    前言①DNS被认为是Internet连接的关键部分之一。目的是更快地访问访问的网站。更常见的是,计算机会跟踪DNS记录,或者将其缓存。②DNS缓存是用于DNS查找的临时存储系统,负责......
  • golang 解析json数据
       packagemainimport(jsoniter"github.com/json-iterator/go")funcString2Bytes(datastring)[]byte{return[]byte(data)}funcmain(){......
  • java初学-代码解析02
    publicclassHelloWorld{ publicstaticvoidmain(String[]args){ System.out.println("HelloWorld"); }} 能修改的地方只有类名称和双括号里面的语句......
  • 深入解析 JavaScript 中 ES6 的 Generator 生成器
    前言大家好,我是CoderBin,本次将深入解析JavaScript中ES6的Generator生成器,希望对大家有所帮助,谢谢。如果文中有不对、疑惑的地方,欢迎在评论区留言指正......
  • linux源码解析15- 匿名页面的生命周期
    1.匿名页面的产生从内核角度看,如下情况会产生匿名页面:1.1用户空间malloc()/mmap()分配的内存;在内核发生缺页中断时,调用do_anonymous_page()产生匿名页;1.2写时复制:当......
  • 物理服务器与云服务器的优缺点解析
    如果您想在线提供信息或应用程序,则需要一个安全可靠且量身定制的托管基础。无论它是一个业余爱好网站,还是博客论坛,抑或是公司数据库,都需要评估自身需求,例如需要怎样的服务......