跳到主要内容

11. 名称语法

偶尔有人假定, 域名系统只用于把互联网主机名映射到数据, 以及把互联网地址映射到主机名. 这是不正确的, DNS 是一个通用的 (尽管有所限制的) 层次化数据库, 几乎可以为任何目的存储几乎任何类型的数据.

DNS 本身对于可用于标识资源记录的特定标签只施加了一项限制. 这一项限制与标签和完整名称的长度有关. 任何一个标签的长度限于 1 到 63 个八位字节之间. 一个完整域名限于 255 个八位字节 (包括分隔符). 零长度的完整名称被定义为表示 DNS 树的根, 通常写作并显示为 ".". 除这些限制外, 任何二进制字符串都可以用作任何资源记录的标签. 类似地, 任何二进制字符串都可以充当任何以域名作为其部分或全部值的记录的值 (SOA, NS, MX, PTR, CNAME, 以及可能添加的任何其他记录). DNS 协议的实现不得对可以使用的标签施加任何限制. 特别是, DNS 服务器不得因为某个区域包含某些 DNS 客户端程序可能无法接受的标签而拒绝为该区域提供服务. DNS 服务器可以被配置为在加载包含可能被认为有问题的标签的主区域时发出警告, 甚至拒绝加载, 但默认情况下不应如此.

然而请注意, 各种利用 DNS 数据的应用可以就其环境中可接受的具体取值施加限制. 例如, 任何二进制标签都可以拥有一条 MX 记录, 这并不意味着任何二进制名称都可以用作电子邮件地址的主机部分. DNS 的客户端可以对其用作 DNS 查找请求键的取值, 以及对 DNS 返回的取值, 施加适合其自身情况的任何限制. 如果客户端有这样的限制, 那么在用 DNS 数据做任何用途之前, 验证来自 DNS 的数据以确保其符合要求, 完全是客户端自己的责任.

另见 [RFC1123] 第 6.1.3.5 节.