<返回更多

DNS消息:如何阅读查询和响应消息

2023-11-23  微信公众号  小技术君
加入收藏

DNS消息:如何阅读查询和响应消息

DNS消息相对简单:浏览器查询一个域名并获取一个IP地址。

如果DNS服务器无法识别域名,它会将查询传递给下一个DNS服务器。然后,在收到响应后,将响应传递给浏览器。

有兴趣了解DNS解析工作原理吗?希望这篇文章可以帮助。

查询消息

DNS消息:如何阅读查询和响应消息

这是查询消息的结构。

需要关注的是问题数,答案RR和查询。

DNS消息:如何阅读查询和响应消息

以下是针对image.google.com的查询消息的示例。

接下来,让我们深入查询的条目结构,仅包括3个部分。

DNS消息:如何阅读查询和响应消息

通过查看示例,更容易理解结构。

DNS消息:如何阅读查询和响应消息

DNS消息:如何阅读查询和响应消息

有趣的部分是消息如何编码名称字段。

使用.作为分隔符,示例域名可以分为3个组。

在蓝色标记的示例中,第一个字节是05,表示接下来的5个字节是域名的第1组。

在屏幕截图中,字节以ASCII码呈现。我们可以轻松将其解码为字符。

我们得到了image。

按照相同的规则,我们可以找到域名的其余部分——google和com。

最后,在域名的末尾,00标志着该部分的结束。

这就是查询的全部内容。通过查询提供的所有必要信息,DNS服务器将发送一个响应消息。

响应消息

DNS消息:如何阅读查询和响应消息

响应消息与查询消息共享相同的标题和查询部分,另外还有一个额外的答案部分。

为什么响应消息包括原始的查询部分?这是供参考的。我们将很快了解它。

以下是查询image.google.com的响应示例。

DNS消息:如何阅读查询和响应消息

在消息中,我们在答案部分收到3个条目。因此,答案RRs设置为3。

除了查询条目中找到的相同的3个部分外,答案条目还有3个额外的部分。

让我们来看看名称部分,它只有两个字节:c0 0c。

域名如何在两个字节中编码?

原来,这些字节是偏移量,指向查询部分中编码的域名。

c0是一个开始标记,而0c是实际的偏移量,为12。

我们从消息的开始字节17(在屏幕截图中以红色标记)开始数12个字节。最后,我们到达第13个字节05,这是image.google.com的开头,用黄色标记。

不复杂,对吧?接下来是一个复杂的例子。

DNS消息:如何阅读查询和响应消息

在答案的第二个条目中,名称偏移量为2e,即46个字节。

通过计算46个字节,我们找到了前一个条目的CNAME中编码的images。

在images的末尾,我们看到另一个偏移量引用c0 12。这是18个字节。

同样,通过计算18个字节,我们到达了绿色标记的引用部分——在前一个条目的名称中的google.com。

偏移量的想法是一个令人鼓舞的设计。有了它,消息可以节省大量空间。

DNS消息:如何阅读查询和响应消息

最后,我们可以解码最后一个答案条目中的地址。

要点

关键词:DNS      点击(10)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多DNS相关>>>