阅读更多
一.首部:
ID:由程序分配的16位标识符,该程序产生任何种类的查询。这个标识符是被复制的相应响应,这个标识符可由请求者用于匹配未得到解决的查询的响应。
QR:1位字段,该字段规定这个消息是查询(0)还是响应(1)。
OPCODE:4 位字段,该字段规定这个消息中查询的种类。这个值由查询的发起者设置,它被复制进响应中。这个值的具体取值是:
0:标准查询(QUERY)
1:反向查询(IQUERY)
2:服务器状态请求(STATUS)
3-15:保留将来使用
AA:权威回答(Authoritative Answer) ---这个位在响应中有效,这个位规定进行回应的名称服务器是问题部分中域名的权威(名称服务器)。
注意,由于别名,回答部分的内容可以有多个所有者名称。AA位对应匹配查询名称的名称,或者
对应回答部分中第一个所有者
TC:截断(Truncation) ---表示这条消息由于长度大于传送通道上准许的长度而被截断。
RD:期望递归(Recursion Desired) ---在查询中这个位可以置 1,并且被复制进响应中。如果
RD 置 1,它引导名称服务器递归跟踪查询。支持递归查询是可选项。
RA:递归可用(Recursion Available) ---在响应中这个字段被置 1 或被清零,指示在名称服务
器中是否支持递归查询。
Z:保留将来使用。在所有查询和响应中此位必须置 0。
RCODE:响应代码(Response code)---这个 4 位字段是响应的一部分。其取值有如下含意:
0 没有出错条件
1 格式错误---名称服务器不能解释查询。
2 服务器故障---由于与名称服务器有关的问题,名称服务器不能处理这个查询。
3 名称错误---仅对来自权威名称服务器的响应有意义,这个代码预示在该查询中被查询的域名
不存在。
4 未实现---名称服务器不支持请求的查询种类。
5 拒绝---由于策略原因名称服务器拒绝执行指定的操作。例如,名称服务器可能不希望提供信
息给特定的请求者,或者名称服务器可能不希望为特定的数据执行特定的操作(例如,区域传
递)。
6-15 保留将来使用。
QDCOUNT:无正负号 16 位整数,它规定问题部分中条目的数量。
ANCOUNT:无正负号 16 位整数,它规定回答部分中资源记录的数量。
NSCOUNT:无正负号 16 位整数,它规定权威记录部分中名称服务器资源记录的数量。
ARCOUNT:无正负号 16 位整数,它规定附加记录部分中资源记录的数量。
二.问题部分格式
QNAME:用标签序列表示的域名,在标签序列中每个标签包括长度八位位组,再加上那个八位位组的数量。对于根的空标签,此域名用零长度八位位组终止。注意,这个字段可以是奇数个八位位组;不使用填充。
QTYPE:2个八位位组代码,它规定查询的类型。这个字段的值包括所有适用于 TYPE 字段的代码,以及某些更一般的代码(这QCLASS些代码可以匹配不止一个 RR 类型)。
QCLASS:2 个八位位组代码,它规定查询的类。例如,对于互联网,QCLASS 字段是 IN。
三.资源记录格式
回答部分、权威部分和附加部分都共享相同的格式:可变数目资源记录,其中记录的数
目在首部内相应计数字段中规定
NAME:这个资源记录匹配的域名。
TYPE:包括RR类型代码之一的两个八位位组。这个字段规定RDATA字段中数据的含意。
CLASS:两个八位位组,它们规定 RDATA 字段中数据的类。
TTL:32位无正负号整数,它规定时间间隔(单位为秒),即资源记录应当被抛弃前,它可以被缓存的时间。零值的含意是 RR 仅能用于正在进行的业务,不能被缓存。
RDLENGTH:无正负号 16 位整数,它规定 RDATA 字段的长度,以八位位组为单位。
RDATA:可变长度八位位组串,它描述资源。这条信息的格式根据资源记录的 TYPE 和 CALSS 改变。
例如,如果 TYPE 是 A 和 CALSS是 IN,此 RDATA 字段是 4 个八位位组 ARPA 互联网地址。