首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DNS响应应答和权威部分

DNS响应应答和权威部分
EN

Stack Overflow用户
提问于 2012-03-26 07:46:54
回答 3查看 5.5K关注 0票数 5

我一直在查看Wireshark中的DNS响应包,但无法理解答案和权威部分的十六进制编码。

考虑mail.abcd.com的域名系统查询

答案部分包含名称字段,该字段的十六进制编码因以下情况而异:

代码语言:javascript
运行
复制
 0xc00c
 0xc012

这两种方法都会导致字段中填充整个名称。

权威部分还包含name字段,但该字段的十六进制编码通常为:

代码语言:javascript
运行
复制
 0xc010

这会导致在字段中填充abcd.com。

谁能告诉我填充这些字段所遵循的约定是什么,因为它非常令人困惑。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-26 17:24:12

DNS标签使用<length><data ...>格式。

标签的最大长度可以是63字节长,因此<length>字段有两个剩余比特。它们用于对标签类型进行编码。

如果最高的两个比特是0b11,则剩余的六个比特改为与随后的字节组合形成压缩指针,该压缩指针是DNS有效载荷内到另一标签的先前实例的偏移。

因为DNS协议报头是12字节长,所以最短的合法偏移量是12字节,给出了您在上面看到的0xc00c的值。

从技术上讲,人们可能会构造一个指向头部的压缩指针,但它并不严格符合协议。

我强烈建议不要试图从有线数据包中对规范进行逆向工程--您将不可避免地遗漏一些东西。只需阅读RFC 1035 -所有的核心内容都在那里。

票数 9
EN

Stack Overflow用户

发布于 2012-03-26 08:58:14

请阅读规范中有关name compression的内容。0xc、0x12和0x10是指向数据包中名称"mail.abcd.com“和"abcd.com”的早期副本的指针。

票数 5
EN

Stack Overflow用户

发布于 2018-12-25 15:16:18

DNS消息使用偏移值来表示在消息开始后多少个字节,我们可以找到已经包含在消息中的域名。

其中“开始字节的地址”从整个消息的开头开始以字节计数。作为第一个字节,从零开始计数。

因此,在我们的示例中,0xC00C是1100 0000 0000 1100,这意味着距离整个DNS消息开头12个字节的1100偏移量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9865084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档