![在DNS解析(将域名转换为IP地址)中,IP地址的顺序有意义吗?](https://linux22.com/image/754982/%E5%9C%A8DNS%E8%A7%A3%E6%9E%90%EF%BC%88%E5%B0%86%E5%9F%9F%E5%90%8D%E8%BD%AC%E6%8D%A2%E4%B8%BAIP%E5%9C%B0%E5%9D%80%EF%BC%89%E4%B8%AD%EF%BC%8CIP%E5%9C%B0%E5%9D%80%E7%9A%84%E9%A1%BA%E5%BA%8F%E6%9C%89%E6%84%8F%E4%B9%89%E5%90%97%EF%BC%9F.png)
客户端是否应按从前到后的顺序排列 IP 地址?还是应使用随机 IP 地址?
答案1
DNS 中没有顺序,这就是为什么我们说有记录集,而不是说记录列表。
但您的问题很模糊,取决于记录类型。例如,对于SRV
和MX
记录,有一个顺序,取决于记录中的各种参数。
对于您A
可能AAAA
正在考虑的记录类型,您将(可能)获得一组记录。当然,如果您分析网络流量,它们会按某种顺序出现。但顺序根本没有设置,每次查询时顺序都可能不同,这是故意为之。
例如,如果有多个 IP 地址,客户端应该做什么取决于应用程序和客户端。例如,浏览器可能会按照获取的顺序逐个尝试所有 IP 地址,直到找到哪个 IP 地址可以回复。
但也有其他情况,比如RFC 8305 Happy Eyeballs 版本 2:使用并发实现更好的连接,其中解释了如何优先使用 IPv6 同时仍为用户提供良好的体验,简而言之,尝试 IPv6 和 IPv4 地址(显然用于双栈主机),略微优先于 IPv6。
答案2
如果您有多个响应 DNS 请求的记录,DNS 服务器本身会以不可预测的顺序返回它们。这是设计使然,称为循环 DNS。通常,客户端只会使用返回的第一个记录,但如果编程为依次尝试它们,它可以使用多个记录,例如,如果连接尝试失败。