我已經使用RFC 1035.4.1.3作爲DNS RR格式的引用: http://www.freesoft.org/CIE/RFC/1035/42.htmDNS CNAME類型記錄有不正確的RDLENGTH字段?
的RFC說RDLENGTH是但在「指定在RDATA字段的字節長度的無符號16位整數」我得到RDLENGTH的數據報有時候比應該少2。我檢查了wireshark以確保我正確地獲取數據報。這裏有一個CNAME記錄在查找谷歌我:
C0 0C 00 05 00 01 00 03 95 FC 00 10 03 77 77 77
01 6C 06 67 6F 6F 67 6C 65 03 63 6F 6D 00
所以這名:C0 0℃(指針www.google.com早些時候DGRAM)
然後鍵入:00 05(CNAME)
那麼類:00 01(IN)
然後TTL:00 03 95 FC(無論)
然後RDLENGTH:00 10(這是16個字節,是嗎?)
然後RDATA:
03 77 77 77 01 6C 06 67 6F 6F 67 6C 65 03 63 6F 6D 00(www.l.google.com - 格式無誤)
正如您所看到的,RDATA的長度爲18個字節。 18字節是0x12,而不是0x10。
類型A記錄後面的地址數據正確報告RDLENGTH 4。我在這裏錯過了什麼嗎?我會將它視爲錯誤,但是我會爲每個DNS服務器和每個域獲取此信息。
我想我真正想問的是爲什麼RDATA比RDLENGTH長,我應該遵循什麼規則來適應它,以便我可以解析任何類型的記錄。 (具體而言,我可以期待其他RR類型的這種東西嗎?)
謝謝你提供建議的任何人。 :)
:( 似乎一夜之間已經糾正了自己。現在的報告×12。難道我的路由器做一些奇怪的? 感謝您的回答,我真的準備拉我的頭髮在那裏。現在我m只是困惑,我檢查了很多東西,現在它們都在工作。 – Khatharr 2009-11-25 21:02:25
典型的低端路由器和CPE通常不正確地代理DNS協議,請參閱RFC 5625。 – bortzmeyer 2009-11-27 09:30:54