我試圖實施排序算法,以確保我的DNS庫始終與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記錄,I've got it。 我需要找到一個有效的算法來排序答案的答案部分。
此外,請記住問題不限於一個問題。原始的DNS查詢可能是NS查詢,CNAME查詢或任何你想要的。
我正在使用Ruby,但這與問題本身無關。
'ruby'標籤沒有給你提示語言的提示嗎? – womble 2010-01-10 20:28:51
這正是我想到的規則。這似乎是最合理的解決方案。 – 2010-01-11 13:15:34