RFC 1034 - 域名 - 概念与设施
- 状态: Internet Standard
- 发布日期: November 1987
- Stream: Legacy
- 废弃了: RFC882, RFC883, RFC973
- 勘误: 无勘误
本备忘录的状态
本RFC是域名系统 (Domain Name System, DNS) 的介绍, 省略了许多可以在配套RFC "域名 - 实现与规范" [RFC-1035] 中找到的细节. 该RFC假设读者熟悉本备忘录中讨论的概念.
DNS功能和数据类型的子集构成官方协议. 官方协议包括标准查询及其响应以及大多数互联网类数据格式 (例如主机地址).
但是, 域系统是有意可扩展的. 研究人员不断提出、实现和试验新的数据类型、查询类型、类、功能等. 因此, 虽然官方协议的组件预计基本保持不变并作为生产服务运行, 但在官方协议之外的扩展中应始终预期实验性行为.
摘要
域名系统 (Domain Name System, DNS) 是互联网基础设施的基本组成部分, 提供分布式、分层命名系统. 本RFC介绍域名、其在互联网邮件和主机地址支持中的使用, 以及用于实现域名设施的协议和服务器.
目录
1. 本备忘录的状态
2. 简介
- 2. 简介
- 2.1 域名的历史
- 2.2 DNS设计目标
- 2.3 关于使用的假设
- 2.4 DNS的元素
3. 域名空间和资源记录
- 3. 域名空间和资源记录
- 3.1 名称空间规范和术语
- 3.2 使用的管理指南
- 3.3 使用的技术指南
- 3.4 示例名称空间
- 3.5 首选名称语法
- 3.6 资源记录
- 3.6.1 RR的文本表达
- 3.6.2 别名和规范名称
- 3.7 查询
- 3.7.1 标准查询
- 3.7.2 反向查询 (可选)
- 3.8 状态查询 (实验性)
- 3.9 完成查询 (已废弃)
4. 名称服务器
- 4. 名称服务器
- 4.1 简介
- 4.2 数据库如何划分为区域
- 4.2.1 技术考虑
- 4.2.2 管理考虑
- 4.3 名称服务器内部
- 4.3.1 查询和响应
- 4.3.2 算法
- 4.3.3 通配符
- 4.3.4 否定响应缓存 (可选)
- 4.4 使用数据库
5. 解析器
- 5. 解析器
- 5.1 简介
- 5.2 客户端-解析器接口
- 5.3 解析器内部
附录
核心概念快速参考
DNS层次结构
. (根)
|
+----------+----------+
| | |
com org net ...
| | |
+----+----+ | +---+---+
| | | | |
google amazon ietf example ...
|
+---+---+
| |
www mail
域名结构
www.example.com.
│ │ │ └─ 根 (通常省略)
│ │ └───── 顶级域 (TLD)
│ └─────────── 二级域 (SLD)
└───────────── 主机名/子域
完全限定域名 (FQDN): www.example.com.
相对域名: www
DNS记录类型 (RR类型)
| 类型 | 名称 | 用途 |
|---|---|---|
| A | 地址 | IPv4地址 |
| AAAA | IPv6地址 | IPv6地址 |
| CNAME | 规范名称 | 别名记录 |
| MX | 邮件交换 | 邮件服务器 |
| NS | 名称服务器 | 名称服务器 |
| PTR | 指针 | 反向DNS |
| SOA | 授权起始 | 区域权威 |
| TXT | 文本 | 文本记录 |
| SRV | 服务 | 服务位置 |
DNS查询类型
递归查询:
客户端 → 本地DNS → [递归查询] → 最终答案
迭代查询:
客户端 → DNS1 → [引用] → DNS2 → [引用] → DNS3 → 答案
资源记录格式 (RR格式)
名称 TTL 类 类型 rdata
example.com. 3600 IN A 93.184.216.34
│ │ │ │ │
│ │ │ │ └─ 记录数据
│ │ │ └────── 记录类型
│ │ └──────────── 类 (IN=互联网)
│ └────────────────── 生存时间 (秒)
└──────────────────────────────── 域名
DNS解析过程
1. 用户查询 www.example.com
↓
2. 检查本地缓存
↓
3. 查询本地DNS服务器
↓
4. 查询根服务器 → 返回 .com 服务器
↓
5. 查询 .com 服务器 → 返回 example.com 服务器
↓
6. 查询 example.com 服务器 → 返回IP地址
↓
7. 返回结果并缓存
区域与域
| 概念 | 定义 | 示例 |
|---|---|---|
| 域 | 名称树中的节点及其所有子节点 | example.com及其所有子域 |
| 区域 | 由单一权威管理的域的一部分 | example.com区域文件 |
关键区别: 一个域可以被划分为多个区域以便管理.
名称服务器类型
| 类型 | 描述 |
|---|---|
| 权威 | 区域数据的官方来源 |
| 递归 | 代表客户端执行完整解析 |
| 缓存 | 仅缓存查询结果 |
| 转发 | 将查询转发到其他服务器 |
区域文件示例
$ORIGIN example.com.
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; 序列号
3600 ; 刷新
1800 ; 重试
604800 ; 过期
86400 ) ; 最小TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
IN MX 10 mail.example.com.
www IN A 93.184.216.34
mail IN A 93.184.216.35
ftp IN CNAME www.example.com.
DNS关键特性
1. 分层命名空间
- 树形结构, 根在顶部
- 使用点 (.) 分隔层级
- 从右到左读取 (根 → TLD → SLD → 主机)
2. 分布式数据库
- 没有单点故障
- 数据分布在全球数千台服务器上
- 每个区域由权威服务器管理
3. 缓存机制
- 减少查询延迟
- 降低根服务器负载
- TTL控制缓存有效期
4. 冗余
- 13个根服务器集群 (A-M)
- 每个区域通常有多个NS记录
- 主/辅服务器架构
5. 可扩展性
- 支持新的RR类型
- 支持新的查询类型
- EDNS0扩展机制
DNS与早期系统 (HOSTS.TXT) 对比
| 特性 | HOSTS.TXT | DNS |
|---|---|---|
| 管理 | 集中式 | 分布式 |
| 可扩展性 | 差 (O(n²)带宽) | 好 (分层) |
| 更新 | 手动FTP | 自动同步 |
| 查询 | 本地文件查找 | 网络查询 |
| 结构 | 平面列表 | 分层树 |
| 性能 | 受文件大小限制 | 通过缓存优化 |
DNS数据流
+----------+
| 客户端 |
| 应用 |
+----------+
↓ ↑
查询 | 响应
↓ ↑
+----------+
| 解析器 | ← 配置: /etc/resolv.conf
+----------+
↓ ↑
DNS协议
↓ ↑
+----------+
| 名称 | ← 区域文件
| 服务器 |
+----------+
根服务器系统
全球13个根服务器标识符 (A-M):
A.ROOT-SERVERS.NET - VeriSign
B.ROOT-SERVERS.NET - ISI
C.ROOT-SERVERS.NET - Cogent
D.ROOT-SERVERS.NET - UMD
E.ROOT-SERVERS.NET - NASA
F.ROOT-SERVERS.NET - ISC
G.ROOT-SERVERS.NET - DISA
H.ROOT-SERVERS.NET - ARL
I.ROOT-SERVERS.NET - Netnod
J.ROOT-SERVERS.NET - VeriSign
K.ROOT-SERVERS.NET - RIPE NCC
L.ROOT-SERVERS.NET - ICANN
M.ROOT-SERVERS.NET - WIDE
注意: 通过任播, 每个"根服务器"实际上是分布在全球的数百台物理服务器.
相关资源
- 官方RFC: RFC 1034 (TXT)
- 官方页面: RFC 1034 DataTracker
- 配套RFC: RFC 1035 - DNS实现与规范
- 标准: STD 13
- 更新:
- RFC 1101 - 网络名称的DNS编码
- RFC 1183 - 新DNS RR定义
- RFC 2181 - DNS规范的澄清
- RFC 2308 - DNS的否定缓存
- RFC 4033-4035 - DNSSEC
- RFC 6891 - EDNS0扩展
- RFC 8499 - DNS术语
有用的DNS命令
Unix/Linux/macOS
# 查询A记录
dig example.com A
# 查询所有记录
dig example.com ANY
# 跟踪解析路径
dig +trace example.com
# 反向DNS查询
dig -x 8.8.8.8
# 查询特定DNS服务器
dig @8.8.8.8 example.com
# nslookup命令
nslookup example.com
# host命令
host example.com
Windows
# 查询域名
nslookup example.com
# 查询特定类型
nslookup -type=MX example.com
# 清除DNS缓存
ipconfig /flushdns
# 显示DNS缓存
ipconfig /displaydns
重要说明: DNS是几乎所有互联网应用都依赖的关键互联网基础设施. 理解DNS概念及其工作原理对于网络管理、安全和故障排除至关重要.
下一步: 阅读 RFC 1035 - DNS实现与规范 以获取详细的协议实现细节.