我一直在寻找Wireshark中的DNS响应数据包,并且无法理解答案和权威部分的十六进制编码。DNS响应答案和权威部分
考虑DNS查询:mail.abcd.com
答案部分包含名称字段,并为这个十六进制编码的不同而不同:
0xc00c
0xc012
他们都导致整个名称为在外地居住。
权威部分还包含名称字段,但十六进制编码,这通常是:
0xc010
这导致abcd.com被填充在外地。
任何人都可以告诉填充这些字段的惯例是什么,因为它很混乱。
感谢
我一直在寻找Wireshark中的DNS响应数据包,并且无法理解答案和权威部分的十六进制编码。DNS响应答案和权威部分
考虑DNS查询:mail.abcd.com
答案部分包含名称字段,并为这个十六进制编码的不同而不同:
0xc00c
0xc012
他们都导致整个名称为在外地居住。
权威部分还包含名称字段,但十六进制编码,这通常是:
0xc010
这导致abcd.com被填充在外地。
任何人都可以告诉填充这些字段的惯例是什么,因为它很混乱。
感谢
DNS标签使用格式<length><data ...>
。
一个标签最多可以有63个字节长,因此<length>
字段有两位剩余。这些用于编码标签类型。
如果开头两个比特是0b11
然后其余六个比特,而不是用下面的字节形式的压缩指针这是DNS有效载荷内的偏移量到另一个标签的现有实例合并。
由于DNS协议标头长度为12个字节,所以最短合法偏移量为12个字节,给出您在上面看到的值0xc00c
。我们可以构造一个指向头部的压缩指针,但它并不严格符合协议。] []
我强烈建议针对试图从wire数据包反向设计规范 - 您将不可避免地错过东西。只需要阅读RFC 1035 - 所有核心内容都在那里。
说明书中的阅读上name compression。 0xc,0x12和0x10是指向包中名称“mail.abcd.com”和“abcd.com”的较早副本的指针。
希望有用:http://www.zoneedit.com/doc/rfc/ – sarnold 2012-03-25 23:51:24