RFC 1035 - 域名 - 实现与规范
- 状态: Internet Standard
- 发布日期: November 1987
- Stream: Legacy
- 废弃了: RFC882, RFC883, RFC973
- 勘误: 无勘误
摘要
本 RFC 描述了域名系统 (Domain Name System, DNS) 的详细协议与实现, 假定读者已熟悉配套文档 "域名 - 概念与设施" [RFC-1034] 中讨论的概念.
域名系统混合了官方协议的功能与数据类型, 以及仍处于实验阶段的功能与数据类型. 由于域名系统被设计为可扩展的, 在官方协议之外的系统部分中应始终预期出现新的数据类型和实验性行为. 官方协议部分包括标准查询, 响应以及互联网类 RR 数据格式 (例如主机地址).
重要性
RFC 1035 与 RFC 1034 共同构成 DNS 的核心规范:
- RFC 1034: 概念与设施 (理论与架构)
- RFC 1035: 实现与规范 (协议与格式)
本 RFC 提供了实现 DNS 所需的全部技术细节, 包括:
- 📦 消息格式与编码
- 📋 资源记录定义
- 📁 区域文件格式
- 🖥️ 名称服务器实现
- 🔍 解析器实现
目录
1. 状态
2. 简介
- 2.1 概述
- 2.2 常见配置
- 2.3 约定
- 2.3.1 首选名称语法
- 2.3.2 数据传输顺序
- 2.3.3 字符大小写
- 2.3.4 大小限制
3. 域名空间与 RR 定义
- 3.1 名称空间定义
- 3.2 RR 定义
- 3.2.1 格式
- 3.2.2 TYPE 值
- 3.2.3 QTYPE 值
- 3.2.4 CLASS 值
- 3.2.5 QCLASS 值
- 3.3 标准 RR
- 3.3.1 CNAME RDATA 格式
- 3.3.2 HINFO RDATA 格式
- 3.3.3 MB RDATA 格式 (实验性)
- 3.3.4 MD RDATA 格式 (已废弃)
- 3.3.5 MF RDATA 格式 (已废弃)
- 3.3.6 MG RDATA 格式 (实验性)
- 3.3.7 MINFO RDATA 格式 (实验性)
- 3.3.8 MR RDATA 格式 (实验性)
- 3.3.9 MX RDATA 格式
- 3.3.10 NULL RDATA 格式 (实验性)
- 3.3.11 NS RDATA 格式
- 3.3.12 PTR RDATA 格式
- 3.3.13 SOA RDATA 格式
- 3.3.14 TXT RDATA 格式
- 3.4 互联网专用 RR
- 3.4.1 A RDATA 格式
- 3.4.2 WKS RDATA 格式
- 3.5 IN-ADDR.ARPA 域
- 3.6 定义新类型, 类和特殊命名空间
4. 消息
- 4.1 格式
- 4.1.1 首部节格式
- 4.1.2 问题节格式
- 4.1.3 资源记录格式
- 4.1.4 消息压缩
- 4.2 传输
- 4.2.1 UDP 用法
- 4.2.2 TCP 用法
5. 主文件
- 5.1 格式
- 5.2 使用主文件定义区域
- 5.3 主文件示例
6. 名称服务器实现
- 6.1 架构
- 6.1.1 控制
- 6.1.2 数据库
- 6.1.3 时间
- 6.2 标准查询处理
- 6.3 区域刷新与重载处理
- 6.4 反向查询 (可选)
- 6.5 完成查询与响应
7. 解析器实现
- 7.1 将用户请求转换为查询
- 7.2 发送查询
- 7.3 处理响应
- 7.4 使用缓存
术语表
参考文献
技术指南
快速参考
DNS 消息格式
+---------------------+
| Header | 12 字节
+---------------------+
| Question | 可变长度
+---------------------+
| Answer | 可变长度
+---------------------+
| Authority | 可变长度
+---------------------+
| Additional | 可变长度
+---------------------+
DNS 首部格式 (12 字节)
1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| QDCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ANCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| NSCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ARCOUNT |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
常见 RR 类型
| TYPE | 值 | 描述 |
|---|---|---|
| A | 1 | 主机地址 |
| NS | 2 | 权威名称服务器 |
| CNAME | 5 | 规范名称 (别名) |
| SOA | 6 | 权威起始记录 |
| PTR | 12 | 域名指针 |
| MX | 15 | 邮件交换 |
| TXT | 16 | 文本字符串 |
| AAAA | 28 | IPv6 地址 (RFC 3596) |
响应码 (RCODE)
| 值 | 名称 | 描述 |
|---|---|---|
| 0 | NOERROR | 无错误 |
| 1 | FORMERR | 格式错误 |
| 2 | SERVFAIL | 服务器故障 |
| 3 | NXDOMAIN | 名称不存在 |
| 4 | NOTIMP | 未实现 |
| 5 | REFUSED | 拒绝 |
大小限制
| 项目 | 限制 | 描述 |
|---|---|---|
| 标签 | 63 字节 | 单个标签的最大长度 |
| 域名 | 255 字节 | 完整域名的最大长度 |
| UDP 消息 | 512 字节 | 默认 UDP 消息大小 |
| TCP 消息 | 65535 字节 | 最大 TCP 消息大小 |
| TTL | 2^31-1 秒 | 最大生存时间 |
与 RFC 1034 的关系
| RFC 1034 | RFC 1035 |
|---|---|
| 概念与理论 | 实现与协议 |
| 域名空间结构 | 消息格式 |
| 名称服务器功能 | 名称服务器实现 |
| 解析器概念 | 解析器实现 |
| 区域管理 | 区域文件格式 |
实现要求
必须实现
- ✅ 标准查询与响应
- ✅ A, NS, CNAME, SOA, PTR, MX 记录
- ✅ UDP 传输 (512 字节)
- ✅ 消息压缩
- ✅ 大小写不敏感比较
应当实现
- ✅ TCP 传输 (用于大响应)
- ✅ 区域传输 (AXFR)
- ✅ 缓存与 TTL 处理
- ✅ 递归查询支持
可以实现
- 反向查询
- 实验性 RR 类型
- 动态更新
相关 RFC
- RFC 1034: DNS 概念与设施 (配套文档)
- RFC 2181: DNS 规范说明
- RFC 2308: DNS 查询的否定缓存
- RFC 3596: IPv6 的 DNS 扩展
- RFC 4033-4035: DNSSEC
- RFC 6891: EDNS(0)
- RFC 8499: DNS 术语
在线资源
配套文档: RFC 1034 - DNS 概念与设施
下一章: 2. 简介
参考文献
原始备忘录中所列参考文献与书目的完整清单。
[Dyer 87] S. Dyer, F. Hsu, "Hesiod", Project Athena Technical Plan - Name Service, April 1987, version 1.9.
Hesiod 网络名称服务的基础。
[IEN-116] J. Postel, "Internet Name Server", IEN-116, USC/Information Sciences Institute, August 1979.
一个已被域名系统取代、但仍在使用中的名称服务。
[Quarterman 86] J. Quarterman, and J. Hoskins, "Notable Computer Networks", Communications of the ACM, October 1986, volume 29, number 10.
[RFC-742] K. Harrenstien, "NAME/FINGER", RFC-742, Network Information Center, SRI International, December 1977.
[RFC-768] J. Postel, "User Datagram Protocol", RFC-768, USC/Information Sciences Institute, August 1980.
[RFC-793] J. Postel, "Transmission Control Protocol", RFC-793, USC/Information Sciences Institute, September 1981.
[RFC-799] D. Mills, "Internet Name Domains", RFC-799, COMSAT, September 1981.
建议用层次结构取代互联网的扁平名称空间。
[RFC-805] J. Postel, "Computer Mail Meeting Notes", RFC-805, USC/Information Sciences Institute, February 1982.
[RFC-810] E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD Internet Host Table Specification", RFC-810, Network Information Center, SRI International, March 1982.
已废弃。参见 RFC-952。
[RFC-811] K. Harrenstien, V. White, and E. Feinler, "Hostnames Server", RFC-811, Network Information Center, SRI International, March 1982.
已废弃。参见 RFC-953。
[RFC-812] K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812, Network Information Center, SRI International, March 1982.
[RFC-819] Z. Su, and J. Postel, "The Domain Naming Convention for Internet User Applications", RFC-819, Network Information Center, SRI International, August 1982.
关于域名系统设计早期的思考。当前的实现完全不同。
[RFC-821] J. Postel, "Simple Mail Transfer Protocol", RFC-821, USC/Information Sciences Institute, August 1980.
[RFC-830] Z. Su, "A Distributed System for Internet Name Service", RFC-830, Network Information Center, SRI International, October 1982.
关于域名系统设计早期的思考。当前的实现完全不同。
[RFC-882] P. Mockapetris, "Domain names - Concepts and Facilities," RFC-882, USC/Information Sciences Institute, November 1983.
已被本备忘录取代。
[RFC-883] P. Mockapetris, "Domain names - Implementation and Specification," RFC-883, USC/Information Sciences Institute, November 1983.
已被本备忘录取代。
[RFC-920] J. Postel and J. Reynolds, "Domain Requirements", RFC-920, USC/Information Sciences Institute, October 1984.
解释顶级域的命名方案。
[RFC-952] K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host Table Specification", RFC-952, SRI, October 1985.
规定 HOSTS.TXT 的格式,即被 DNS 取代的主机/地址表。
[RFC-953] K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server", RFC-953, SRI, October 1985.
本 RFC 包含主机名服务器协议的官方规范,该协议已被 DNS
废弃。这个基于 TCP 的协议访问以 RFC-952 格式存储的信息,
用于获取主机表的副本。
[RFC-973] P. Mockapetris, "Domain System Changes and Observations", RFC-973, USC/Information Sciences Institute, January 1986.
描述对 RFC-882 和 RFC-883 的更改及其原因。
[RFC-974] C. Partridge, "Mail routing and the domain system", RFC-974, CSNET CIC BBN Labs, January 1986.
描述从基于 HOSTS.TXT 的邮件寻址到域名系统所采用的
更强大的 MX 系统的过渡。
[RFC-1001] NetBIOS Working Group, "Protocol standard for a NetBIOS service on a TCP/UDP transport: Concepts and Methods", RFC-1001, March 1987.
本 RFC 与 RFC-1002 是 TCP/IP 上 NETBIOS 的初步设计,
提议将 NetBIOS 名称服务建立在 DNS 之上。
[RFC-1002] NetBIOS Working Group, "Protocol standard for a NetBIOS service on a TCP/UDP transport: Detailed Specifications", RFC-1002, March 1987.
[RFC-1010] J. Reynolds, and J. Postel, "Assigned Numbers", RFC-1010, USC/Information Sciences Institute, May 1987.
包含主机名、操作系统等的套接字编号和助记符。
[RFC-1031] W. Lazear, "MILNET Name Domain Transition", RFC-1031, November 1987.
描述将 MILNET 转换到 DNS 的计划。
[RFC-1032] M. Stahl, "Establishing a Domain - Guidelines for Administrators", RFC-1032, November 1987.
描述 NIC 用于管理顶级域并委派子区域所采用的注册策略。
[RFC-1033] M. Lottor, "Domain Administrators Operations Guide", RFC-1033, November 1987.
域名管理员的操作手册。
[Solomon 82] M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET Name Server", Computer Networks, vol 6, nr 3, July 1982.
描述一个独立于 DNS 的 CSNET 名称服务,以及 CSNET 中
对 DNS 的使用。
[RFC-974]. 参见关于 MX 与邮件路由的章节。
[RFC-1034]. 伴随文档:DNS——概念与设施,见第 2 节。
[RFC-1034]. 见第 4 节——实现细节。