我正在尝试实现一种排序算法,以确保我的 DNS 库始终与 DNS 记录的有序列表一起使用,即使响应来自循环配置。
让我们采取以下两个回应。
第一的。
$ dig google.com A
; <<>> DiG 9.6.0-APPLE-P2 <<>> google.com A
;; ...
;; ANSWER SECTION:
google.com. 201 IN A 74.125.39.106
google.com. 201 IN A 74.125.39.105
google.com. 201 IN A 74.125.39.147
google.com. 201 IN A 74.125.39.104
google.com. 201 IN A 74.125.39.103
google.com. 201 IN A 74.125.39.99
;; ...
第二。
$ dig google.com A
; <<>> DiG 9.6.0-APPLE-P2 <<>> google.com A
;; ...
;; ANSWER SECTION:
google.com. 119 IN A 74.125.39.147
google.com. 119 IN A 74.125.39.104
google.com. 119 IN A 74.125.39.103
google.com. 119 IN A 74.125.39.99
google.com. 119 IN A 74.125.39.106
google.com. 119 IN A 74.125.39.105
;; ...
除了该ANSWER
部分包含不同顺序的 DNS 记录之外,它们是相同的。我需要应用排序算法来规范化答案部分。
我已经想出了算法的初始版本,但是我添加的测试越多,我发现的案例就越多。例如,在以下响应中,第一条记录的顺序必须保持不变。
$ dig www.google.com A
; <<>> DiG 9.6.0-APPLE-P2 <<>> www.google.com A
;; ...
;; ANSWER SECTION:
www.google.com. 603039 IN CNAME www.l.google.com.
www.l.google.com. 78 IN A 74.125.39.105
www.l.google.com. 78 IN A 74.125.39.104
www.l.google.com. 78 IN A 74.125.39.147
www.l.google.com. 78 IN A 74.125.39.106
www.l.google.com. 78 IN A 74.125.39.99
www.l.google.com. 78 IN A 74.125.39.103
;; ...
为了提取合适的算法,我可以阅读任何现有的实现/参考吗?
更新:对我原来的问题的一些澄清。我不需要图书馆来获取 DNS 记录,我有。我需要找到一种有效的算法来对响应的答案部分进行排序。
另外,请记住,问题不仅限于 A 问题。原始 DNS 查询可能是 NS 查询、CNAME 查询或任何您想要的。
我正在使用 Ruby,但这与问题本身无关。