DNS迭代查询和递归查询

域名 DNS 名称服务器查询都是从根部 . 按照从右往左顺序原则进行的

通常情况下,主机向本地名称服务器的查询一般都是采用递归查询 ,而本地名称服务器向 DNS (一级、二级、三级...) 名称服务器采用 迭代查询

image-20230510181036174

主机的 DNS 查询主要有两种方式:

  • 递归查询 Recursive Query
  • 迭代查询 Iterative Query

其主要区别为:

  • 发送 DNS 查询时,DNS 请求报头部 的 RD 字段默认为 1,默认为递归查询
  • RD 为 1 => 递归查询,默认查询方式
  • RD 为 0 => 迭代查询

  • 递归查询

  • 递归查询以本地名称服务器为中心,DNS 客户端只是发出原始的域名查询请求报文,然后就一直处于等待状态,直到本地名称服务器发来了最终的查询结果;此时的本地名称服务器就相当于中介代理的作用

  • 递归查询的触发条件:1. 默认触发;2. RD 设置为 1 触发

  • 迭代查询

  • 迭代查询以 DNS 客户端自己为中心,所有查询工作全部是 DNS 客户端自己进行。DNS 客户会按照顺序向本地名称服务器 、一级名称服务器、二级名称服务器、权威名称服务器发出查询 DNS 的请求查询报文,这个过程中每一级服务器就会返回一个能解答这个查询的下一个名称服务器列表 A,获取到下个查询列表信息 A 后 DNS 客户 会再向返回的列表 A 中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果

  • 迭代查询 的触发条件:1. 在所配置的本地名称服务器上查询触发(因为本地名称服务器禁止使用递归查询);2. RD 设置为 0 触发

  • 递归查询和迭代查询查询一级域名服务器到权威域名服务器的步骤相似,主要区别是递归查询以本地名称服务器为中心进行查询, 迭代查询以 DNS 客户端自己为中心查询