跳到主要内容

3. DNS 头部和响应码 (DNS Header and Response Codes)

DNS 消息的头部是其前 12 个八位组. [RFC1035] 第 4.1.1 节到第 4.1.3 节头部图中的许多字段和标志, 都按图中的名称引用. 例如, 响应码称为 "RCODEs", 记录的数据称为 "RDATA", 权威回答位通常称为 "the AA flag" 或 "the AA bit".

[RFC1035] 中定义的一些响应码已有自己的简写名称. 常见的响应码名称有时不附带数值而直接出现, 例如 "FORMERR"、"SERVFAIL" 和 "NXDOMAIN" (后者也称为 "Name Error"). 所有 RCODE 都列在 http://www.iana.org/assignments/dns-parameters, 尽管该站点使用混合大小写, 而大多数文档使用全大写.

NODATA: "一个伪 RCODE, 表示该名称对给定类有效, 但没有给定类型的记录. NODATA 响应必须从应答中推断." (引自 [RFC2308] 第 1 节.) "NODATA 由 RCODE 设置为 NOERROR 且 Answer 节中没有相关应答的响应表示. Authority 节将包含一条 SOA 记录, 或者其中没有 NS 记录." (引自 [RFC2308] 第 2.2 节.) 注意, referral 与 NODATA 回复格式相似; [RFC2308] 解释了如何区分它们.

"NXRRSET" 有时被用作 NODATA 的同义词. 但这是错误的, 因为 NXRRSET 是 [RFC2136] 中定义的特定错误码.

Negative response: 表示特定 RRset 不存在的响应, 或其 RCODE 表示名称服务器无法回答的响应. [RFC2308] 第 2 节和第 7 节详细描述了 negative response 的类型.

Referrals: 非权威应答中 Authority 节的数据. [RFC1035] 第 2.1 节定义了 "authoritative" 数据. 但是, 区域切点 (zone cut, 定义见第 6 节) 处的 referral 不是权威数据. Referral 可以是区域切点 NS 资源记录及其 glue records. 位于区域切点父侧的 NS 记录是权威委派, 但通常不被视为权威数据. 一般来说, referral 是服务器发送应答的一种方式, 表示服务器不知道答案, 但知道应将查询导向哪里以获得答案. 历史上, 许多权威服务器在收到自己没有权威的名称查询时, 会以指向根区域的 referral 响应, 但这种实践已经减少.