我已经使用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