文档详情

TCPIP详解-卷一-协议-14.3-DNS的报文格式.docx

发布:2025-06-06约2.01千字共4页下载文档
文本预览下载声明

14.3DNS的报文格式

DNS定义了一个用于查询和响应的报文格式。图14-3显示这个报文的总体格式。

标识

标识

标志

资源记录数

额外资源记录数

查询问题

答复

(

资源记录数可变

)

授权

(

资源记录数可变

)

额外信息

(

资源记录数可变

)

12

字节

问题数

授权资源记录数

图14-3DNS查询和响应的一般格式

这个报文由12字节长的首部和4个长度可变的字段组成。

标识字段由客户程序设置并由效劳器返回结果。客户程序通过它来确定响应与查询是否匹配。

16bit的标志字段被划分为假设干子字段,如图14-4所示。

图14-4DNS报文首部中的标志字段

我们从最左位开始依次介绍各子字段:

QR是1bit字段:0表示查询报文,1表示响应报文。

opcode是一个4bit字段:通常值为0〔标准查询〕,其他值为1〔反向查询〕和2〔效劳器状态请求〕。

AA是1bit标志,表示“授权答复(authoritativeanswer)”。该名字效劳器是授权于该域的。

TC是1bit字段,表示“可截断的(truncated)”。使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节。

RD是1bit字段表示“期望递归〔recursiondesired〕”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字效劳器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字效劳器没有一个授权答复,它就返回一个能解答该查询的其他名字效劳器列表,这称为迭代查询。在后面的例子中,我们将看到这两种类型查询的例子。

RA是1bit字段,表示“可用递归”。如果名字效劳器支持递归查询,那么在响应中将该比特设置为1。在后面的例子中可看到大多数名字效劳器都提供递归查询,除了某些根效劳器。

随后的3bit字段必须为0。

rcode是一个4bit的返回码字段。通常的值为0〔没有过失〕和3〔名字过失〕。名字过失只有从一个授权名字效劳器上返回,它表示在查询中制定的域名不存在。

随后的4个16bit字段说明最后4个变长字段中包含的条目数。对于查询报文,问题

(question)数通常是1,而其他3项那么均为0。类似地,对于应答报文,答复数至少是1,剩下的两项可以是0或非0。

查询报文中的问题局部

问题局部中每个问题的格式如图14-5所示,通常只有一个问题。

查询名

查询名

查询类型

0

15

16

31

查询类

图14-5DNS查询报文中问题局部的格式

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须是0~63的数,因为标识符的最大长度仅为63〔在本节的后面我们将看到计数字节的最高两比特为1,即值192~255,将用于压缩格式〕。不像我们已经看到的许多其他报文格式,该字段无需以整32bit边界结束,即无需填充字节。

图14-6显示了如何存储域名。

计数 计数 计数 计数 计数

图14-6域名的表示

每个问题有一个查询类型,而每个响应〔也称一个资源记录,我们下面将谈到〕也有一个类型。大约有20个不同的类型值,其中的一些目前已经过时。图14-7显示了其中的一些值。

查询类型是类型的一个超集(superset):图中显示的类型值中只有两个能用于查询类型。

名字

名字

数值

描述

类型

?

查询

类型

IP

地址

名字效劳器

标准名称

指针记录

主机信息

邮件交换记录

对区域转换的请求

对所有记录的请求

图14-7DNS问题和响应的类型值和查询类型值

最常用的查询类型是A类型,表示期望获得查询名的IP地址。一个PTR查询那么请求获得一个IP地址对应的域名。这是一个指针查询,我们将在14.5节介绍。其他的查询类型将在14.6节介绍。

查询类通常是1,指互联网地址〔某些站点也支持其他非IP地址〕。

响应报文中的资源记录局部

DNS报文中最后的三个字段,答复字段、授权字段和附加信息字段,均采用一种称为资源记录RR〔ResourceRecord〕的相同格式。图14-8显示了资源记录的格式。

域名

域名

类型

生存时间

资源数据长度

资源数据

图14-8DNS资源记录格式

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式〔图14-6〕相同。

类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,指

Internet数据。

生存时间字段是客户程序保存该资源记录的秒数。资源记录通常的生存时间值为2天。

资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1〔A记录〕资源数据是4字节的IP地址。

现在已经介绍了DNS查询和响应的根本格式,我们将使用tcpdump程序来观察

显示全部
相似文档