DNS消息包含三种类型:服务器
请求和响应在原始标准中定义,更新在RFC 2136中定义。code
DNS通用消息格式以下:server
DNS消息头包含如下字段:blog
字段名称 | 描述 |
---|---|
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比特,表示额外资源记录个数 |
该字段表示查询的域名,包含如下三个字段:递归
回答、受权、额外信息字段均采用资源记录(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 | 资源数据 |