我必须在Android应用程序中对SRV记录进行DNS查找,然后选择其中一个。 当我在DNS服务器上查询多个SRV记录的优先级和权重不同时,我会在每个请求中获得不同顺序的记录,这些记录是由服务器订购的吗?如果是,订单算法是什么?
我猜测它尊重优先级,因为优先级较低是最优先考虑的,但是如果优先级相同,我认为它会以循环方式尊重权重,但这并没有发生!
我有一个简单的bind9 DNS服务器,其中包含2条SRV记录,如下所示:
域名优先权
aaa.example.com 1 90
bbb.example.com 2 10
当我查找时,我希望第一次得到 aaa.example.com 9 次,而第10次我会得到< em> bbb.example.com 作为第一个结果,没有发生!,服务器只是反转每个请求的顺序!
答案 0 :(得分:1)
如果您要查询SRV记录,则返回它们的顺序是任意的,客户端应用程序不应将其考虑在内。
相反,您的应用程序负责根据权重和优先级对收到的结果进行排序,如RFC 2782中所述。
在RFC中还指出,如果返回的多个记录具有相同的权重和优先级,则客户端将随机选择,而不是根据返回这些记录的顺序。
因此,使用循环DNS来提供SRV记录是多余的。
答案 1 :(得分:1)
由于我相信您在SIP应用程序的上下文中询问应该使用哪些指南来决定使用哪个SRV记录,请参阅http://www.ietf.org/rfc/rfc3263.txt。