1

我必须对 Android 应用程序中的 SRV 记录进行 DNS 查找,然后选择其中一个。当我向 DNS 服务器查询多个优先级和权重不同的 SRV 记录时,我在每个请求中以不同的顺序获取记录,这些记录是否按服务器排序?如果是,顺序算法是什么?

我猜它尊重优先级,因为较低的优先级是最优先的,但如果优先级相等,我认为它会以循环方式尊重权重,但这并没有发生!

我有一个带有 2 个 SRV 记录的简单 bind9 DNS 服务器,如下所示:


域优先权重


aaa.example.com 1 90


bbb.example.com 2 10

当我查找时,我希望得到aaa.example.com 9次作为第一个结果,而第 10 次我会得到bbb.example.com作为第一个结果,这没有发生!服务器只是颠倒每个请求的顺序!

4

2 回答 2

2

如果您正在查询 SRV 记录,它们的返回顺序是任意的,不应被您的客户端应用程序考虑在内。

相反,您的应用程序负责根据RFC 2782中指定的权重和优先级对接收到的结果进行排序。

RFC 中还规定,如果以相同的权重和优先级返回多个记录,客户端将随机选择,而不是根据这些记录返回的顺序。

因此,使用循环 DNS 来提供 SRV 记录是多余的。

于 2012-01-24T14:24:49.387 回答
1

由于我相信您是在 SIP 应用程序的上下文中询问的,因此应该使用一些指南来决定使用哪个 SRV 记录,请参阅http://www.ietf.org/rfc/rfc3263.txt

于 2012-01-29T21:56:07.730 回答