DNS 客户端在得到多个答案时如何选择 IP 地址?

bpf*_*inn 29 domain-name-system

当 DNS 服务器为客户端查找 IP 地址时,它收到要查询的多个 DNS 服务器的列表,它如何选择一个?同样,当 DNS 客户端收到 FQDN 的多个 IP 地址列表时,它如何选择一个?它是特定于实现的,还是包含在 RFC 中?

小智 23

解析查询的 DNS 服务器可以根据历史响应时间数据(RFC1035 第 7.2 节)优先使用列出的服务器的顺序。它也可以通过更近的子网来确定优先级(我在 RFC 中看到过这个,但不记得是哪个)。如果没有可用的历史或子网优先级,它可以随机选择,或者简单地选择第一个。我已经看到 DNS 服务器实现做了上述的各种组合。

从(A/AAAA 记录)列表中选择 IP 地址的客户端程序通常会按照 DNS 服务器返回的地址(循环)尝试这些地址。如果客户端无法连接到返回的第一个 IP 地址,则应尝试第二个,依此类推。例如,所有主要浏览器都这样做,但是许多其他 Internet 客户端程序“忘记”了这一步,如果无法连接到第一个 IP 地址,就会失败。


小智 5

RFC 1794涵盖了您提出的循环问题。

就答案而言,大多数 DNS 客户端将使用列表中的第一个 IP 地址,有些会进行子网计算以找出哪个更接近,有些则随机选择,但大多数依赖于 DNS 服务器来发送列表。