
DNS分为查询请求和查询响应. 请求和响应的分组结构基本相同. DNS消息格式如图所示.

上图显示了DNS消息格式. 其中,交易ID,徽标,问题计数,答案资源记录计数,权威名称服务器计数以及其他资源记录计数是DNS邮件标头的6个字段,总计12个字节.
整个DNS格式主要分为三个部分,即基础结构部分,问题部分和资源记录部分. 每个部分的内容和含义将在下面详细介绍. 基础结构部分DNS消息的基本部分是指消息头,如图所示.

本节中每个字段的含义如下.
基本结构部分中的徽标字段分为几个字段,如图所示.

徽标字段中每个字段的含义如下:

为了更好地理解DNS数据包的基础结构部分,让我们通过捕获的DNS数据包查看基础结构部分.
1)DNS请求数据包的基本结构,如图所示.

图中的数据包是DNS请求包,域名系统(查询)部分框中的信息是DNS消息的基本结构部分.
为便于解释,此处列出并说明了信息:
Domain Name System (query)
Transaction ID: 0x9ad0 #事务ID
Flags: 0x0000 Standard query #报文中的标志字段
0... .... .... .... = Response: Message is a query
#QR字段, 值为0, 因为是一个请求包
.000 0... .... .... = Opcode: Standard query (0)
#Opcode字段, 值为0, 因为是标准查询
.... ..0. .... .... = Truncated: Message is not truncated
#TC字段
.... ...0 .... .... = Recursion desired: Dont do query recursively
#RD字段
.... .... .0.. .... = Z: reserved (0) #保留字段, 值为0
.... .... ...0 .... = Non-authenticated data: Unacceptable
#保留字段, 值为0
Questions: 1 #问题计数, 这里有1个问题
Answer RRs: 0 #回答资源记录数
Authority RRs: 0 #权威名称服务器计数
Additional RRs: 0 #附加资源记录数
上面的输出信息显示了DNS请求消息的基础结构部分中包含的字段和相应的值. 这里应该注意,请求中的Questions值不能为0;应答RR,授权RR和附加RR的值都为0,因为请求中对查询结果信息没有响应. 这些消息在响应包中将具有相应的值.
2)DNS响应包的基本结构如图所示.


图中标记的框是响应包中的基本结构部分,每个字段如下:
Domain Name System (response)
Transaction ID: 0x9ad0 #事务ID
Flags: 0x8180 Standard query response, No error #报文中的标志字段
1... .... .... .... = Response: Message is a response
#QR字段, 值为1, 因为是一个响应包
.000 0... .... .... = Opcode: Standard query (0) # Opcode字段
.... .0.. .... .... = Authoritative: Server is not an authority for
domain #AA字段
.... ..0. .... .... = Truncated: Message is not truncated
#TC字段
.... ...1 .... .... = Recursion desired: Do query recursively
#RD字段
.... .... 1... .... = Recursion available: Server can do recursive
queries #RA字段
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion
was not authenticated by the server
.... .... ...0 .... = Non-authenticated data: Unacceptable
.... .... .... 0000 = Reply code: No error (0) #返回码字段
Questions: 1
Answer RRs: 2
Authority RRs: 5
Additional RRs: 5
以上输出信息的粗体部分是DNS响应数据包中的字段信息,多于请求数据包. 这些字段信息只能出现在响应数据包中. 在输出信息的末尾,您可以看到应答RR,授权RR和其他RR都有对应的值(不一定全为0). 问题部分问题部分是指消息格式中的查询问题区域(查询)部分. 本部分用于显示DNS查询请求的问题. 通常只有一个问题. 本节包含有关正在进行的查询的信息,包括查询名称(正在查询的主机的名称),查询类型和查询类.
问题部分的格式如图所示.

本节中每个字段的含义如下:
1)DNS请求数据包的问题部分的字段信息,如图所示.

在下图中,“查询”部分中的信息就是“问题”部分中的信息,每个字段的描述如下:

Domain Name System (query) #查询请求
Queries #问题部分
baidu.com: type A, class IN
Name: baidu.com #查询名字段, 这里请求域名baidu.com
[Name Length: 9]
[Label Count: 2]
Type: A (Host Address) (1) #查询类型字段, 这里为A类型
Class: IN (0x0001) #查询类字段, 这里为互联网地址
其中dns协议详解,您可以看到DNS请求类型为A,因此响应信息也应为A.
2)DNS响应数据包的问题部分的字段信息,如图所示.

从图中的“查询”部分可以看到,响应数据包中的查询类型也是A,这与请求数据包中的查询类型相同. 资源记录部分资源记录部分引用DNS消息格式的最后三个字段,包括答案问题区域字段,权威名称服务器区域字段和附加信息区域字段. 这三个字段都使用一种称为资源记录的格式,该格式如图所示.

资源记录格式中每个字段的含义如下:
资源记录部分仅出现在DNS响应数据包中. DNS响应数据包用于进一步了解资源记录部分中的字段信息.
1)DNS响应数据包的资源记录部分的字段信息,如图所示.


框中标记的信息是DNS响应消息的资源记录的一部分. 这部分信息主要分为三部分信息,即回答问题区域,权威名称服务器区域和附加信息区域. 下面依次分析这三部分信息.
2)答案区域字段的资源记录部分中的信息如下:
Answers #“回答问题区域”字段
baidu.com: type A, class IN, addr 220.181.57.216 #资源记录部分
Name: baidu.com #域名字段, 这里请求的域名为baidu.com
Type: A (Host Address) (1) #类型字段, 这里为A类型
Class: IN (0x0001) #类字段
Time to live: 5 #生存时间
Data length: 4 #数据长度
Address: 220.181.57.216 #资源数据, 这里为IP地址
baidu.com: type A, class IN, addr 123.125.115.110 #资源记录部分
Name: baidu.com
Type: A (Host Address) (1)
Class: IN (0x0001)
Time to live: 5
Data length: 4
Address: 123.125.115.110
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-226313-1.html
真的不太喜欢这次的冷色调
打他呢