在迭代 DNS 查询中,本地 DNS 服务器向根、TLD 和权威服务器发出的请求可以缓存在本地 DNS 中。而在递归查询中,只有特定的主机名到 IP 地址可以缓存在本地 DNS 服务器中。这是否意味着迭代 DNS 查询速度更快,因为它包含更多缓存在本地 DNS 服务器中的条目?
如果不是这样,这两种方法之间会有什么区别吗?
答案1
在递归DNS 查询,客户端只向第一个 DNS 服务器发送查询。如果服务器无法回答,它将向下一个服务器发送请求,依此类推,直到查询得到解决。此时 DNS 客户端要求 DNS 服务器响应查询,因此解析查询的负担落在了服务器上。
在迭代DNS 查询,客户端负责将查询发送到后续服务器,直到查询通过命中授权域名的服务器得到解析(或直到出现错误或超时)。此时解析查询的负担落在了客户端身上。
我认为两者之间的速度没有太大差异,只是层次结构足够高的 DNS 服务器可能比客户端拥有更快的互联网连接。
对于迭代 DNS 查询,客户端最终会在其缓存中拥有连续的中间 DNS 服务器,但我不知道它如何利用这一点。
更详细地说,DNS 服务器可以提供以下四个最常见的答案:
- 权威性- 向客户端返回肯定答复,并在响应中设置权威答复 (AA) 位。
- 积极的- 包含与查询匹配的资源记录 (RR) 或 RR 列表的答复。
- 推荐- 包含客户端可用于解析名称的备用服务器列表的答案。如果不支持递归,则给出此类答案。
- 消极的- 此答案表明权威服务器报告该名称(或记录类型)在 DNS 名称空间中不存在。
在迭代查询中,客户端向服务器发送查询。如果递归被禁用,并且服务器无法回答查询,则服务器将以推荐答案进行响应。然后,客户端将使用该信息查询另一个 DNS 服务器。此过程将持续进行,直到服务器以权威或否定响应进行响应,或者直到客户端用尽时间。