SRV记录从DNS服务器检索的订单

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

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

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


域优先级权重


aaa.example.com 1 90


bbb.example.com 2 10

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

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

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

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

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

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