DNS协议报文
1、DNS协议报文
报文 | 中文 | 长度 | 说明 |
---|---|---|---|
Header 1.1 | 报文头 | 12 | |
Question 1.2 | 查询请求 | ||
Answer 1.3 | 应答 | ||
Authority 1.4 | 授权应答 | ||
Additional 1.5 | 附加信息 |
1.1、Header部分
报文 | 中文 | 长度 | 说明 |
---|---|---|---|
TransactionID | 会话标识 | 2 | 客户端设置,响应报文会原样带回,用于客户端区分不同的请求应答 |
Flag | 标志 | 2 | 详细描述见1.1.1 00110000000 |
QDCOUNT | 查询问题区域的数量 | 2 | 对应1.2部分 |
Answers | 回答区域的数量 | 2 | 对应1.3部分 |
Authoritative | 授权区域的数量 | 2 | 对应1.4部分 |
Additional | 附加区域的数量 | 2 | 对应1.5部分 |
1.1.1、Flag说明
QR | OPcode | AA | TC | RD | RA | Z | Rcode |
---|---|---|---|---|---|---|---|
1 | 4 | 1 | 1 | 1 | 1 | 3 | 4 |
- QR(Response):查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。
- Opcode:操作码。其中,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。
- AA(Authoritative):授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。
- TC(Truncated):表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。
- RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉名称服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为 0,且被请求的名称服务器没有一个授权回答,它将返回一个能解答该查询的其他名称服务器列表。这种方式被称为迭代查询。
- RA(Recursion Available):可用递归。该字段只出现在响应报文中。当值为 1 时,表示服务器支持递归查询。
- Z:保留字段,在所有的请求和应答报文中,它的值必须为 0。
- rcode(Reply code):返回码字段,表示响应的差错状态。当值为 0 时,表示没有错误;当值为 1 时,表示报文格式错误(Format error),服务器不能理解请求的报文;当值为 2 时,表示域名服务器失败(Server failure),因为服务器的原因导致没办法处理这个请求;当值为 3 时,表示名字错误(Name Error),只有对授权域名解析服务器有意义,指出解析的域名不存在;当值为 4 时,表示查询类型不支持(Not Implemented),即域名服务器不支持查询类型;当值为 5 时,表示拒绝(Refused),一般是服务器由于设置的策略拒绝给出应答,如服务器不希望对某些请求者给出应答。
1.2、Question部分
报文 | 中文 | 长度 | 说明 |
---|---|---|---|
QNAME | 0x00结束 | 长度+内容+长度+内容…… | |
QTYPE | 查询类型 | 2 | |
QCLASS | 查询类 | 2 |
1.2.1、QTYPE说明
类型 | 助记符 | 说明 |
---|---|---|
1 | A | 由域名获得IPv4地址 |
2 | NS | 查询域名服务器 |
3 | MD | 过期类型 |
4 | MF | 过期类型 |
5 | CNAME | 查询规范名称 |
6 | SOA | 开始授权 |
7 | MB | 指定邮箱域名 |
8 | MG | 指定邮件组成员 |
9 | MR | 指定邮件重命名域名 |
A | NULL | 指定空的资源记录 |
B | WKS | 熟知服务 |
C | PTR | 把IP地址转换成域名 |
D | HINFO | 主机信息 |
E | MINFO | 指定邮箱或列表信息 |
F | MX | 邮件交换 |
10 | TXT | 文本信息 |
28 | AAAA | 由域名获得IPv6地址 |
252 | AXFR | 传送整个区的请求 |
255 | ANY | 对所有记录的请求 |
1.2.2、QCLASS说明
数值 | 类型 | 说明 |
---|---|---|
01 | IN | Internet类别 |
02 | CSNET | 过期类型 |
03 | Chaos | |
04 | MIT Athena Hesiod |
1.3、应答部分(Answer、Authority、Additional)
报文 | 中文 | 长度 | 说明 |
---|---|---|---|
NAME | 0x00结束 | ||
TYPE | 查询类型 | 2 | |
CLASS | 查询类 | 2 | |
TimeToLive | 生存时间 | 4 | |
DaTaLength | 资源数据长度 | 2 | |
DaTa | 资源数据 | DaTaLength |
NAME:不定长,通常以0x00结束。第一个字节是长度,后面是内容,再长度,后面是内容
C0 ~~:C0标识需要启用偏移量,后面是长度
2、报文案例解析说明
2.1、请求包(方便阅读换过行):
55 12
01 00
00 01
00 00
00 00
00 00
05 63 74 6c 64 6c 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 00
00 01
00 01
-----head----
TransactionID:5512
Flag:0x0100->0000000100000000,QR-0 RD-1
QDCOUNT:0x0001
Answers:0x0000
Authoritative:0x0000
Additional:0x0000
----Question----
QNAME:05 63 74 6c 64 6c 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 00
0x05->0x63746c646c->ctldl
0x0d->0x77696e646f7773757064617465->windowsupdate
0x03->0x636f6d->com
0x00->结束
QNAME->ctldl.windowsupdate.com
QTYPE:0x0001->A 由域名获得IPv4地址
QCLASS:0x0001-> In Internet类别
2.2、应答包(方便阅读换过行):
55 12
81 80
00 01
00 0d
00 00
00 00
05 63 74 6c 64 6c 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 00 (此行长度,25)
00 01
00 01
c0 0c
00 05
00 01
00 00 02 f7
00 1c
07 77 75 2d 73 68 69 6d 0e 74 72 61 66 66 69 63 6d 61 6e 61 67 65 72 03 6e 65 74 00 (此行长度,28)
c0 35
00 05
00 01
00 00 00 1b
00 26
08 64 6f 77 6e 6c 6f 61 64 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 01 61 06 62 64 79 64 6e 73 c0 20 (此行长度,38)
c0 5d
00 05
00 01
00 00 00 1b
00 17
0c 6f 70 65 6e 63 64 6e 6d 73 64 6c 32 07 6a 6f 6d 6f 64 6e 73 c0 20 (此行长度,23)
c0 8f
00 01
00 01
00 00 00 0e
00 04
2a ca 98 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 3b 24 cb 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 24 67 ec 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 3c bc 42 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 01 b6 30 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 24 67 f6 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 0e d7 59 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 31 4f e1 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 1b 94 bc 2b
c0 8f 00 01 00 01 00 00 00 0e 00 04 2a 51 54 2b
-----head----
TransactionID:5512
Flag:0x8180->1000000110000000,QR-1 RD-1 RA-1
QDCOUNT:0x0001
Answers:0x000d->13个
Authoritative:0x0000
Additional:0x0000
----Question----
QNAME:05 63 74 6c 64 6c 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 00
0x05->0x63746c646c->ctldl
0x0d->0x77696e646f7773757064617465->windowsupdate
0x03->0x636f6d->com
0x00->结束
QNAME->ctldl.windowsupdate.com
QTYPE:0x0001->A 由域名获得IPv4地址
QCLASS:0x0001-> In Internet类别
----Answer1----
NAME:0xc00c,c0代表偏移,偏移量是0c->长度12,即05 63 74 6c 64 6c 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 00
即:ctldl.windowsupdate.com
TYPE:0x0005->CNAME
CLASS:0x0001->In Internet类别
TimeToLive:0x000002f7 ->759
DaTaLength:0x001c->长度28
DaTa:07 77 75 2d 73 68 69 6d 0e 74 72 61 66 66 69 63 6d 61 6e 61 67 65 72 03 6e 65 74 00
0x07->0x77752d7368696d->wu-shim
0x0e->0x747261666669636d616e61676572->trafficmanager
0x03->0x6e6574->net
即wu-shim.trafficmanager.net
----Answer2----
NAME:0xc035,c0代表偏移,偏移量是35,即长度53
07 77 75 2d 73 68 69 6d 0e 74 72 61 66 66 69 63 6d 61 6e 61 67 65 72 03 6e 65 74 00
即wu-shim.trafficmanager.net
TYPE:0x0005->CNAME
CLASS:0x0001->In Internet类别
TimeToLive:0x0000001b ->27
DaTaLength:0x0026->长度38
DaTa:08 64 6f 77 6e 6c 6f 61 64 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 01 61 06 62 64 79 64 6e 73 c0 20
0x08->0x646f776e6c6f6164->download
0x0d->0x77696e646f7773757064617465->windowsupdate
0x03->0x636f6d->com
0x01->0x61->a
0x06->0x626479646e73->bdydns
0xc020->0x03636f6d
即:download.windowsupdate.com.a.bdydns.com
----Answer3----
NAME:0xc08f,c0代表偏移,偏移量是8f,即长度143
即08 64 6f 77 6e 6c 6f 61 64 0d 77 69 6e 64 6f 77 73 75 70 64 61 74 65 03 63 6f 6d 01 61 06 62 64 79 64 6e 73 c0 20
即:download.windowsupdate.com.a.bdydns.
TYPE:0x0005->CNAME
CLASS:0x0001->In Internet类别
TimeToLive:0x0000001b ->27
DaTaLength:0x0017->长度23
DaTa:0c 6f 70 65 6e 63 64 6e 6d 73 64 6c 32 07 6a 6f 6d 6f 64 6e 73 c0 20
0c :6f 70 65 6e 63 64 6e 6d 73 64 6c 32->opendmd2
07 :6a 6f 6d 6f 64 6e 73->jomodns
c0 20->com
即opendmd2.jomodns.com
----Answer4----
NAME:0xc05d,c0代表偏移,偏移量是5d,即长度93
0c 6f 70 65 6e 63 64 6e 6d 73 64 6c 32 07 6a 6f 6d 6f 64 6e 73 c0 20
即opendmd2.jomodns.com
TYPE:0x0001->A 由域名获得IPv4地址
CLASS:0x0001->In Internet类别
TimeToLive:0x0000000e ->14
DaTaLength:0x0004->长度4
DaTa:0x2a 0xca 0x98 0x2b->42.202.152.43
----Answer5----
----Answer6----
----Answer7----
----Answer8----
----Answer9----
----Answer10----
----Answer11----
----Answer12----
----Answer13----
3、参考
报文示例
RFC文档
16位转字符
进制转换