当 1.1.1.1 的缓存中没有答案时,它会代表您联系权威名称服务器。权威名称服务器是持有域名的实际记录的 DNS 服务器。本页面描述了 1.1.1.1 如何选择要查询的名称服务器、当名称服务器不可达时会发生什么,以及如何确定最终的响应。
在解析类似于 foo.bar.example.com 的多级域名时,1.1.1.1 不会向链条中的每台服务器透露完整名称。相反,它仅发送每个服务器所需的最低限度信息。例如,当向 .com TLD 服务器提问时,1.1.1.1 仅透露它需要查找 example.com——子域名部分 (foo.bar) 不会被包含在内。这限制了向中间服务器暴露的信息量,并减少了隐私泄露。
1.1.1.1 使用本地托管的根区域文件副本 ↗,而不是在每次查询时都去查询远程根服务器。根区域文件包含所有顶级域名 (TLD) 服务器的地址。通过在本地托管该文件,1.1.1.1 避免了向根服务器的网络往返,从而降低了延迟、提高了隐私性,并减轻了全球 DNS 根服务器系统的负载。
大多数域名都拥有多个权威名称服务器以实现冗余。当 1.1.1.1 需要查询其中一个时,它会根据测得的性能做出选择。解析器会跟踪每个名称服务器的指标——包括往返时间(查询发送到服务器并返回所需的时间)和响应质量——然后从处理您请求的数据中心中挑出历史表现最快且最可靠的名称服务器。
如果所选的名称服务器未能在时间内响应或返回错误,1.1.1.1 会针对同一区域的不同名称服务器进行重试。有关详情,请参阅重试行为。
一小部分查询也会被发送到备选名称服务器,以保持性能测量数据的最新性。如果先前较慢的服务器性能得到改善,这允许对其进行重新评估。有关支持该选择的系统的更多背景信息,请参阅 BigPineapple 架构博客文章 ↗。
如果某个名称服务器未能在时间内响应或返回临时错误,1.1.1.1 会针对同一区域的不同权威名称服务器重试查询。无响应的服务器会被降级,以便后续的查询优先选择更健康的其他服务器。1.1.1.1 会定期重新检查被降级的服务器以检测恢复情况。
当多个客户端同时请求同一个域名时,1.1.1.1 会合并上游查询(去重),以便单个正在进行的请求可以为所有等待的客户端提供服务。具体的重试计时和排名逻辑会随着时间调整并可能发生改变。
对于给定的查询,1.1.1.1 仅向客户端返回一个答案。当权威名称服务器意见不一致时,1.1.1.1 选择哪一个响应取决于所收到的响应类型。
以下 DNS 响应代码具有相关性:
NOERROR— 查询成功。响应包含所请求的记录,或指示该名称存在但没有请求类型的记录(有时称为NODATA)。NXDOMAIN— 域名不存在。SERVFAIL— 名称服务器遇到内部错误,无法回答。REFUSED— 名称服务器拒绝回答该查询。
1.1.1.1 如何处理名称服务器之间的不一致:
NOERROR对比NXDOMAIN: 两者都是有效的权威答案。1.1.1.1 返回它最先收到的响应,而不查询其余的名称服务器进行对比。同一区域的权威名称服务器应当保持一致。如果一个返回NXDOMAIN而另一个对相同名称返回NOERROR,这表明权威端存在配置错误。- 超时对比有效响应: 超时不是一个答案。1.1.1.1 会针对另一个名称服务器进行重试,并返回它收到的第一个有效响应。
SERVFAIL或REFUSED对比有效响应: 临时故障被视为上游错误,而不是权威答案。1.1.1.1 会针对另一个名称服务器进行重试并返回第一个有效响应。只有当所有名称服务器都返回错误时,1.1.1.1 才会向客户端返回失败——通常是SERVFAIL,或者如果名称服务器一直返回REFUSED,则返回REFUSED。