目录

DNS查询

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 实现了高效、可靠的域名解析服务。