报文格式DNS报文格式分为DNS查询和响应的报文格式。这个报文由12字节长的首部和4个长度可变的字段组成。报文中问题字段是由客户填入的,由服务器返回问题的回答、授权和附加信息字段。报文格式如下(RFC

1035):

图1 DNS报文封装格式

Header段是必须存在的,它定义了报文是请求还是应答,也定义了其他段是否需要存在,以及是标准查询还是其他。

头部字段格式如下:

图2 头部字段格式

字段

长度

描述

ID

16 bit

标识字段,客户通过标识字段来确定DNS响应是否与查询请求匹配。

QR

1 bit

操作类型:0:查询报文1:响应报文

OPCODE

4 bit

查询类型:0:标准查询1:反向查询2:服务器状态查询3~15:保留未用

反向查询是客户端请求服务器根据回答生成导致此回答的问题,这个查询类型的使用并不多。

AA

1 bit

若置位,则表示该域名解析服务器是授权回答该域的。

TC

1 bit

若置位,则表示报文被截断。

使用UDP传输时,应答的总长度超过512字节时,只返回报文的前512个字节内容。

RD

1 bit

客户端希望域名解析服务器采取的解析方式:

0:表示希望域名解析服务器采取迭代解析1:表示希望域名解析服务器采取递归解析

RA

1 bit

域名解析服务器采取的解析方式:

0:表示域名解析服务器采取迭代解析1:表示域名解析服务器采取递归解析

Z

3 bit

全部置0,保留未用。

RCODE

4 bit

响应类型:

0:无差错1:查询格式错2:服务器失效3:域名不存在4:查询没有被执行5:查询被拒绝6-15: 保留未用

QDCOUNT

16 bit

无符号16位整数表示报文请求段中的问题记录数。

ANCOUNT

16 bit

无符号16位整数表示报文回答段中的回答记录数。

NSCOUNT

16 bit

无符号16位整数表示报文授权段中的授权记录数。

ARCOUNT

16 bit

无符号16位整数表示报文附加段中的附加记录数。

大多数查询中,Question段包含着问题(question),比如,指定问什么。这个段包含QDCOUNT(usually

1)个问题,每个问题为下面的格式:

图3 Question字段的格式

字段

长度

描述

QNAME

变长

域名被编码为一些labels序列,每个labels包含一个字节表示后续字符串长度,以及这个字符串,以0长度和空字符串来表示域名结束。注意这个字段可能为奇数字节,不需要进行边界填充对齐。

QTYPE

2个字节

表示查询类型,.取值可以为任何可用的类型值,以及通配码来表示所有的资源记录。

QCLASS

2个字节

表示查询的协议类,比如,IN代表Internet。

图4 资源记录字段的格式

应答,授权,附加段都共用相同的格式:多个资源记录,资源记录的个数由报文头段中对应的几个数值确定,每个资源记录格式如下:

字段

长度

描述

NAME

不定长

资源记录包含的域名。

TYPE

2个字节

表示资源记录的类型,指出RDATA数据的含义。

CLASS

2个字节

表示RDATA的类。

TTL

4字节

无符号整数,表示资源记录可以缓存的时间。0代表只能被传输,但是不能被缓存。

RDLENGTH

2个字节

无符号整数,表示RDATA的长度。

RDATA

不定长

字符串,表示记录,格式跟TYPE和CLASS有关。比如,TYPE是A,CLASS是IN,那么RDATA就是一个4个字节的ARPA网络地址。

Copyright © 2088 炼狱狂骨活动中心_暗黑风格游戏_装备掉落 All Rights Reserved.
友情链接