在DNS解析(将域名转换为IP地址)中,IP地址的顺序有意义吗?

在DNS解析(将域名转换为IP地址)中,IP地址的顺序有意义吗?

客户端是否应按从前到后的顺序排列 IP 地址?还是应使用随机 IP 地址?

答案1

DNS 中没有顺序,这就是为什么我们说有记录集,而不是说记录列表。

但您的问题很模糊,取决于记录类型。例如,对于SRVMX记录,有一个顺序,取决于记录中的各种参数。

对于您A可能AAAA正在考虑的记录类型,您将(可能)获得一组记录。当然,如果您分析网络流量,它们会按某种顺序出现。但顺序根本没有设置,每次查询时顺序都可能不同,这是故意为之。

例如,如果有多个 IP 地址,客户端应该做什么取决于应用程序和客户端。例如,浏览器可能会按照获取的顺序逐个尝试所有 IP 地址,直到找到哪个 IP 地址可以回复。

但也有其他情况,比如RFC 8305 Happy Eyeballs 版本 2:使用并发实现更好的连接,其中解释了如何优先使用 IPv6 同时仍为用户提供良好的体验,简而言之,尝试 IPv6 和 IPv4 地址(显然用于双栈主机),略微优先于 IPv6。

答案2

如果您有多个响应 DNS 请求的记录,DNS 服务器本身会以不可预测的顺序返回它们。这是设计使然,称为循环 DNS。通常,客户端只会使用返回的第一个记录,但如果编程为依次尝试它们,它可以使用多个记录,例如,如果连接尝试失败。

相关内容