DNS 报文的四段
一条 DNS 报文分成四个区段:问题段说明问的是什么名字与类型,回答段放最终资源记录,权威段放权威服务器列表或 SOA,附加段放胶水地址与 EDNS 的 OPT 记录。头部里还有四个计数字段,分别对应问题数与三个区段的记录条数。dig 的默认输出正好按这个顺序排列,看懂四段的分工,抓包解析就不会乱。
基本信息
| 区段数量 | 四个:问题、回答、权威、附加 |
|---|---|
| 头部计数 | QDCOUNT、ANCOUNT、NSCOUNT、ARCOUNT |
| 问题段 | 通常恰好一条,记录查询名与类型 |
| 回答段 | 最终答案,CNAME 链也在这里逐跳列出 |
| 权威段 | 权威 NS 或 SOA,负缓存窗口写在这里 |
| 附加段 | 胶水地址与 EDNS 的 OPT 记录 |
逐段查看
逐段查看
dig example.com NS +noall +question +answer +authority +additional
dig example.com NS +noall +authority +additional # 委派信息在权威段
dig www.example.com +noall +answer # 只看最终答案
dig nx.example.com +noall +authority # NXDOMAIN 时看 SOA 的负缓存 TTL区段读法
| 区段 | 内容 | 读法 |
|---|---|---|
| 问题段 | 查询名、类型、类 | 一般恰好一条 |
| 回答段 | 最终资源记录 | CNAME 链逐跳列出,末尾才是目标类型 |
| 权威段 | 权威 NS 或 SOA | NXDOMAIN 时含 SOA,决定负缓存时长 |
| 附加段 | 胶水地址与 OPT 记录 | 解析器靠它跳过额外查询轮次 |
典型使用场景
- 排查解析绕路:从回答段的 CNAME 链看请求究竟经过了哪些名字
- 分析负缓存:NXDOMAIN 时读权威段 SOA 的最小 TTL,判断缓存多久
- 核对委派配置:权威段的 NS 列表与父区委派是否一致
- 抓包对照:以头部计数为准核对解析结果,识别畸形或被裁剪的报文
- 协议开发:按区段顺序与压缩指针规则解析报文
抓包解析时报文的区段条数应以头部的四个计数为准。计数与实际解析出的记录数不符,或者出现了不该有的段,通常是畸形包或人为构造的报文,在安全审计里值得单独标记。