这个DNS系列现在有以下几篇文章
DNS EDNS DNSSEC DNS over HTTPS 完整代码请看DNS
DNS Header
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
header在dns请求和应答中相同的,查询中有Query Section,应答中有answer section.
- ID: 2字节,应答中也有ID,可以用来判断是否为我们请求的应答
- QR:1bit,请求时为0,应答时为1
- Opcode:4bit 通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求),[3,15]保留值
- AA:1bit authoritative answer,在应答中才有效
- TC:1bit 表示可截断
- RD:1bit 期望使用递归查询
- RA:1bit 在应答中返回,返回服务器是否支持递归查询
- Z: Reserved for future use.
- RCODE:4bit,应答码,代表返回的状态
- 0 No Error
- 1 Format error 格式错误
- 2 Server failure 服务器失败
- 3 Name Error 查询域名错误
- 4 Not Implemented 未实现的查询方式
- 5 Refused 拒绝
- 6-15 Reserved for future use.