RFC 1035 - 域名系统 - 实现和规范
状态: 互联网标准 (STD 13)
废弃: RFC 882, 883, 973
作者: Paul Mockapetris (ISI)
发布日期: 1987年11月
摘要
本RFC描述了域名系统和协议的详细信息,假设读者熟悉配套RFC "Domain Names - Concepts and Facilities" [RFC-1034] 中讨论的概念。
域名系统是功能和数据类型的混合体,其中一些是官方协议,一些仍处于实验阶段。由于域名系统有意设计为可扩展的,因此在官方协议之外的系统部分应始终期待新的数据类型和实验性行为。官方协议部分包括标准查询、响应和Internet类RR数据格式 (例如,主机地址)。
重要性
RFC 1035与RFC 1034共同构成了DNS的核心规范:
- RFC 1034: 概念和设施 (理论和架构)
- RFC 1035: 实现和规范 (协议和格式)
本RFC提供了实现DNS所需的所有技术细节,包括:
- 📦 消息格式和编码
- 📋 资源记录定义
- 📁 区域文件格式
- 🖥️ 名称服务器实现
- 🔍 解析器实现
目录
2. Introduction (简介)
- 2.1 概述
- 2.2 常见配置
- 2.3 约定
- 2.3.1 首选名称语法
- 2.3.2 数据传输顺序
- 2.3.3 字符大小写
- 2.3.4 大小限制
3. Domain Name Space and RR Definitions (域名空间和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 Internet特定RR
- 3.4.1 A RDATA格式
- 3.4.2 WKS RDATA格式
- 3.5 IN-ADDR.ARPA域
- 3.6 定义新类型、类和特殊名称空间
4. Messages (消息)
- 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. Master Files (主文件)
- 5.1 格式
- 5.2 使用主文件定义区域
- 5.3 主文件示例
6. Name Server Implementation (名称服务器实现)
- 6.1 架构
- 6.1.1 控制
- 6.1.2 数据库
- 6.1.3 时间
- 6.2 标准查询处理
- 6.3 区域刷新和重新加载处理
- 6.4 反向查询 (可选)
- 6.5 完成查询和响应
7. Resolver Implementation (解析器实现)
- 7.1 转换为搜索规范
- 7.2 使用缓存
- 7.3 使用多个名称服务器
- 7.4 使用本地配置信息
Glossary (术语表)
References (参考文献)
快速参考
DNS消息格式
+---------------------+
| Header | 12 bytes
+---------------------+
| 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 |
|---|---|
| 概念和理论 | 实现和协议 |
| 域名空间结构 | 消息格式 |
| 名称服务器功能 | 名称服务器实现 |
| 解析器概念 | 解析器实现 |
| 区域管理 | 区域文件格式 |
实现要点
必须实现 (MUST)
- ✅ 标准查询和响应
- ✅ A, NS, CNAME, SOA, PTR, MX记录
- ✅ UDP传输 (512字节)
- ✅ 消息压缩
- ✅ 大小写不敏感比较
应该实现 (SHOULD)
- ✅ TCP传输 (用于大响应)
- ✅ 区域传输 (AXFR)
- ✅ 缓存和TTL处理
- ✅ 递归查询支持
可选实现 (MAY)
- 反向查询
- 实验性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. Introduction (简介)