📘 mDNS / DNS Flags 字段结构(16 bits)
diff
diff
复制编辑
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z|AD|CD| RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
解释每一部分:
Bit | 名称 | 含义 |
---|---|---|
0 | QR | 查询/响应标志,0=Query,1=Response |
1-4 | Opcode | 查询类型(通常是 0,表示标准查询) |
5 | AA | 授权回答(Authoritative Answer) |
6 | TC | 被截断(Truncated) |
7 | RD | 期望递归(Recursion Desired) |
8 | RA | 服务器支持递归(Recursion Available) |
9-11 | Z | 保留 |
12 | AD | 验证数据(Authenticated Data) |
13 | CD | 禁用验证(Checking Disabled) |
14-15 | RCODE | 响应码,0表示无错误 |
常见的 Flags 示例
✅ 查询报文(Query)
ini
makefile
复制编辑
Flags: 0x0000
QR=0(Query), Opcode=0, AA=0, TC=0, RD=0, RA=0, Z=0, RCODE=0
✅ 应答报文(Response)
ini
makefile
复制编辑
Flags: 0x8400
QR=1(Response), AA=1(授权回答)
⚠️ 示例:响应被截断
ini
makefile
复制编辑
Flags: 0x8200
QR=1, AA=0, TC=1(被截断)
❌ 错误响应
ini
makefile
复制编辑
Flags: 0x8183
QR=1, AA=1, RCODE=3(Name Error,域名不存在)
mDNS 特别注意事项:
-
QR 是最关键的:
0 = Query
1 = Response
-
mDNS 中通常不开启递归(RD) ,所以一般 RD=0,RA=0。
-
Flags: 0x8400 是最常见的响应头部,表示「这是一个响应(QR=1),而且是 authoritative answer(AA=1)」
总结表
Flags 值 | 含义 |
---|---|
0x0000 |
标准查询 |
0x8400 |
标准应答(mDNS 常见) |
0x8000 |
应答但非授权(AA=0) |
0x8183 |
应答,域名错误(RCODE=3) |
0x8200 |
应答,报文被截断 |
0x0100 |
标准查询 + 请求递归(一般非 mDNS) |