跳到主要内容

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 所需的全部技术细节, 包括:

  • 📦 消息格式与编码
  • 📋 资源记录定义
  • 📁 区域文件格式
  • 🖥️ 名称服务器实现
  • 🔍 解析器实现

目录

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描述
A1主机地址
NS2权威名称服务器
CNAME5规范名称 (别名)
SOA6权威起始记录
PTR12域名指针
MX15邮件交换
TXT16文本字符串
AAAA28IPv6 地址 (RFC 3596)

响应码 (RCODE)

名称描述
0NOERROR无错误
1FORMERR格式错误
2SERVFAIL服务器故障
3NXDOMAIN名称不存在
4NOTIMP未实现
5REFUSED拒绝

大小限制

项目限制描述
标签63 字节单个标签的最大长度
域名255 字节完整域名的最大长度
UDP 消息512 字节默认 UDP 消息大小
TCP 消息65535 字节最大 TCP 消息大小
TTL2^31-1 秒最大生存时间

与 RFC 1034 的关系

RFC 1034RFC 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. 简介