跳到主要内容

4. 资源记录 (Resource Records)

RR: 资源记录 (resource record) 的缩写. ([RFC1034] 第 3.6 节.)

RRset: 标签, 类和类型相同但数据不同的一组资源记录. (定义来自 [RFC2181].) 在一些文档中也写作 RRSet. 为澄清起见, 此定义中的 "same label" 是指 "same owner name". 此外, [RFC2181] 规定 "RRSet 中所有 RR 的 TTL 必须相同". (这个定义绝不等同于 "对 QTYPE=ANY 查询得到的响应", 后者是一种令人遗憾的误解.)

EDNS: DNS 的扩展机制, 定义在 [RFC6891] 中. 有时称为 "EDNS0" 或 "EDNS(0)" 以指明版本号. EDNS 允许 DNS 客户端和服务器指定大于原始 512 八位组限制的消息大小, 扩展响应码空间, 并可能携带影响 DNS 查询处理的附加选项.

OPT: 一种伪 RR (有时称为 "meta-RR"), 仅用于包含与特定事务的问答序列相关的控制信息. (定义来自 [RFC6891] 第 6.1.1 节.) 它由 EDNS 使用.

Owner: RR 所在的域名 ([RFC1034] 第 3.6 节). 常出现在术语 "owner name" 中.

SOA field names: DNS 文档, 包括这里的定义, 经常按字段名引用 SOA 资源记录 RDATA 中的字段. 这些字段定义在 [RFC1035] 第 3.3.13 节. 这些名称 (按其在 SOA RDATA 中出现的顺序) 是 MNAME, RNAME, SERIAL, REFRESH, RETRY, EXPIRE 和 MINIMUM. 注意, MINIMUM 字段的含义在 [RFC2308] 第 4 节中被更新; 新定义是 MINIMUM 字段只是 "用于 negative responses 的 TTL". 本文档倾向于使用字段名, 而不是描述这些字段的术语.

TTL: 资源记录的最大 "time to live". "TTL 值是无符号数, 最小值为 0, 最大值为 2147483647. 也就是最大为 2^31 - 1. 传输时, TTL 编码在 32 位 TTL 字段的低 31 位中, 最高位或符号位设置为零." (引自 [RFC2181] 第 8 节.) (注意, [RFC1035] 错误地说明这是有符号整数; [RFC2181] 修正了这一点.)

TTL "指定资源记录可以被缓存多长时间, 之后应再次咨询信息来源". (引自 [RFC1035] 第 3.2.1 节.) 也可表述为: "资源记录在应被丢弃前可以被缓存的时间间隔 (以秒为单位)". (引自 [RFC1035] 第 4.1.3 节.) 尽管 TTL 是针对资源记录定义的, 但 RRset 中每个资源记录的 TTL 都要求相同 ([RFC2181] 第 5.2 节).

TTL 是最大生存时间, 是因为缓存运营者可能出于运维目的决定缩短生存时间, 例如存在禁止 TTL 值超过某个数值的策略. 此外, 如果某个值在仍为正数时从缓存中清除, 该值实际上就变为零. 已知有些服务器会忽略某些 RRset 上的 TTL (例如权威数据的 TTL 很短时), 尽管这违背 RFC 1035 中的建议.

区域还有 "default TTL" 的概念, 它可以是服务器软件中的配置参数. 这通常表现为整个服务器的默认值, 以及区域文件中使用 $TTL 指令为区域设置的默认值. $TTL 指令由 [RFC2308] 加入 master file 格式.

Class independent: 对每个 DNS class 语法和语义都相同的资源记录类型. 不是 class independent 的资源记录类型会根据记录的 DNS class 具有不同含义, 或者对 IN (class 1, Internet) 以外的 class 未定义含义.