java - SRV 记录从 DNS 服务器检索的顺序

标签 java android dns srv

我必须在 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/

相关文章:

android - 由于当前屏幕上的更新,防止 Flutter Provider 重建前一屏幕中的小部件

Android版iOS Quick Look Framework

java - 为游戏随机生成 Sprite ?

web - 我的域名不能正常使用?

heroku - 我在哪里可以找到我的 Heroku 应用程序的名称服务器?

java - 哪些 JVM 优化导致了这些性能结果?

java - 通过 intellij hibernate 持久化工具生成模型时关系引用禁用表

java - 为什么我无法在 Android 应用程序中的任何位置调用静态方法

java - jaotc库无法在javac中运行; java说没有main方法

Windows Azure 上的 Wordpress MultiSite - 带有 www 的域