消息类型
DNS消息包含三种类型:
- 请求
- 响应
- 更新
请求和响应在原始标准中定义,更新在RFC 2136中定义。
DNS通用消息格式
DNS通用消息格式如下:
DNS消息头
DNS消息头包含以下字段:
字段名称 | 描述 |
---|---|
Transaction ID | 16比特,标识一次DNS交互。由请求端生成,响应端返回,用于将响应报文对应到请求报文 |
Flags: | 16比特,包含各种标记,标记定义如下: |
Request/response | 1比特,为0时表示请求,为1时表示响应 |
Operation code | 4比特,表示操作码,0x0表示查询 |
Authoritative answer | 1比特,表示响应者是域名的权威名字服务器 |
Truncation | 截断标志位,1比特,为1时表示响应超过512字节,已被截断 |
Recursion desired | 1比特,表示递归查询 |
Recursion available | 1比特,为1时表示响应值可以处理递归查询 |
Reserved | 3比特,保留字段,为0 |
Return code | 4比特,返回码。0表示成功响应,0x3表示域名错误,域名在权威名字服务器上不存在 |
Question Resource Record count | 16比特,表示问题个数 |
Answer Resource Record count | 16比特,表示回答个数 |
Authority Resource Record count | 16比特,表示权威资源记录个数 |
Additional Resource Record count | 16比特,表示额外资源记录个数 |
问题字段
该字段表示查询的域名,包含以下三个字段:
- Question Name:查询名,由一组labels组成,为length-value格式,1字节表示长度,尾随数据(即label)。例如对于域名www.baidu.com,表示为0x03www0x05baidu0x03com,其中十六进制数表示长度。
- Question Type:16比特,表示查询类型,有以下类型:
- 0x01 Host (A) record
- 0x02 Name server (NS) record
- 0x05 Alias (CNAME) record
- 0x0C Reverse-lookup (PTR) record
- 0x0F Mail exchange (MX) record
- 0x21 Service (SRV) record
- 0xFB Incremental zone transfer (IXFR) record
- 0xFC Standard zone transfer (AXFR) record
- 0xFF All records
- Question Class:表示查询类
DNS资源记录
回答、授权、额外信息字段均采用资源记录(Resource Record)格式,定义如下:
字段名称 | 描述 |
---|---|
Resource Record Name | DNS域名,其格式与问题字段中的查询名相同,但是为了节省数据,如果之前出现了相同的名字,则此处的值为之前相同名字相对报文中DNS起始数据的位置。如问题的查询名为www.baidu.com,回答字段中的资源记录名字与之相同,因此其值为0xc0 0x0c(0xc0表示引用,0x0c表示查询名相对DNS起始数据的位置是12) |
Resource Record Type | 16比特,资源记录类型,与问题字段中查询类型相同 |
Resource Record Class | 16比特,资源记录类(IN: 0x0001) |
Time-to-Live | 32比特,TTL |
Resource Data Length | 16比特,资源数据长度 |
Resource Data | 资源数据 |
时间: 2024-11-05 13:30:37