目录

DNS查询

/weixin_miniapp.png

DNS查询

DNS查询

DNS 查询分为 递归查询 和 迭代查询 两种方式,它们在查询过程中有不同的行为和角色分工。以下是它们的详细说明:


1. 递归查询(Recursive Query)

在递归查询中,DNS 客户端(如浏览器或操作系统)将查询请求发送给本地 DNS 服务器,并期望本地 DNS 服务器 完全负责 解析域名,最终返回一个明确的答案(IP 地址或错误信息)。

递归查询的特点 :

• 客户端只发送一次查询请求,等待本地 DNS 服务器返回最终结果。

• 本地 DNS 服务器需要完成所有查询工作,包括与其他 DNS 服务器的交互。

• 如果本地 DNS 服务器没有缓存结果,它会依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询,直到找到答案。

递归查询的过程 :
  1. 客户端向本地 DNS 服务器发送递归查询请求,例如查询 www.example.com 的 IP 地址。
  2. 本地 DNS 服务器检查自己的缓存,如果有结果则直接返回。
  3. 如果没有缓存,本地 DNS 服务器依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询。
  4. 最终,本地 DNS 服务器将查询结果返回给客户端,并缓存结果以便后续使用。
递归查询的适用场景 :

• 客户端通常使用递归查询,因为它不需要关心复杂的查询过程,只需等待最终结果。

• 本地 DNS 服务器(如 ISP 提供的 DNS 服务器)通常支持递归查询。


2. 迭代查询(Iterative Query)

在迭代查询中,DNS 服务器不会完全负责解析域名,而是返回一个 参考信息 (如下一级域名服务器的地址),让查询方继续向其他服务器发起查询。

迭代查询的特点 :

• 查询方需要主动向多个 DNS 服务器发起查询,直到找到最终答案。

• 每个 DNS 服务器只返回自己知道的信息,而不是完全解析域名。

• 查询方需要根据返回的参考信息,继续向下一级服务器发起查询。

迭代查询的过程 :
  1. 客户端向本地 DNS 服务器发送查询请求,例如查询 www.example.com 的 IP 地址。
  2. 本地 DNS 服务器检查自己的缓存,如果有结果则直接返回。
  3. 如果没有缓存,本地 DNS 服务器向根域名服务器发起查询。
  4. 根域名服务器返回顶级域名服务器(如 .com 服务器)的地址。
  5. 本地 DNS 服务器向顶级域名服务器发起查询。
  6. 顶级域名服务器返回权威域名服务器(如 example.com 服务器)的地址。
  7. 本地 DNS 服务器向权威域名服务器发起查询。
  8. 权威域名服务器返回 www.example.com 的 IP 地址。
  9. 本地 DNS 服务器将结果返回给客户端,并缓存结果以便后续使用。
迭代查询的适用场景 :

• DNS 服务器之间的查询通常使用迭代查询,因为这样可以分担查询负载,避免单一服务器承担所有查询任务。

• 根域名服务器、顶级域名服务器和权威域名服务器通常只支持迭代查询。


递归查询 vs 迭代查询

特性递归查询迭代查询
查询方客户端(如浏览器)DNS 服务器
返回结果最终答案(IP 地址或错误信息)参考信息(下一级服务器地址)
查询过程本地 DNS 服务器完成所有查询工作查询方需要主动向多个服务器发起查询
负载本地 DNS 服务器承担较大负载查询负载分散到多个服务器
适用场景客户端与本地 DNS 服务器之间的查询DNS 服务器之间的查询

DNS 查询的完整过程

在实际的 DNS 查询中,递归查询和迭代查询通常会结合使用:

  1. 客户端向本地 DNS 服务器发起 递归查询 。
  2. 本地 DNS 服务器向根域名服务器发起 迭代查询 。
  3. 根域名服务器返回顶级域名服务器的地址。
  4. 本地 DNS 服务器向顶级域名服务器发起 迭代查询 。
  5. 顶级域名服务器返回权威域名服务器的地址。
  6. 本地 DNS 服务器向权威域名服务器发起 迭代查询 。
  7. 权威域名服务器返回最终答案。
  8. 本地 DNS 服务器将结果返回给客户端。

通过递归查询和迭代查询的结合,DNS 实现了高效、可靠的域名解析服务。

/weixin_miniapp.png