我必须在 Android 应用程序中为 SRV 记录进行 DNS 查找,然后选择其中的一个。 当我向 DNS 服务器查询优先级和权重不同的多个 SRV 记录时,我在每个请求中得到的记录顺序不同,这些记录是由服务器排序的吗?如果是,排序算法是什么?
我猜它尊重优先级,因为较低的优先级是最优先的,但如果优先级相等,我认为它会以循环方式尊重权重,但这并没有发生!
我有一个带有 2 条 SRV 记录的简单 bind9 DNS 服务器,如下所示:
域优先级权重
aaa.example.com 1 90
bbb.example.com 2 10
当我查找时,我希望得到 aaa.example.com 9 次作为第一个结果和 10 我会得到 < em>bbb.example.com 作为第一个结果,这并没有发生!服务器只是颠倒每个请求的顺序!
最佳答案
如果您正在查询 SRV 记录,它们的返回顺序是任意的,您的客户端应用程序不应考虑这些顺序。
相反,您的应用程序负责根据 RFC 2782 中指定的权重和优先级对接收到的结果进行排序。 .
RFC 中还规定,如果以相同的权重和优先级返回多个记录,客户端将随机选择,而不是根据返回这些记录的顺序。
因此,使用循环 DNS 来提供 SRV 记录是多余的。
关于java - SRV 记录从 DNS 服务器检索的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957145/