RFC 1034 - DOMAIN NAMES - CONCEPTS AND FACILITIES
域名系统 - 概念和设施
发布日期: 1987年11月
状态: 互联网标准 (STD 13)
作者: Paul Mockapetris (ISI)
废弃: RFC 882, 883, 973
Status of this Memo (本备忘录状态)
本RFC介绍了域名系统 (Domain Name System, DNS),并省略了许多可以在配套RFC "Domain Names - Implementation and Specification" [RFC-1035] 中找到的详细信息。该RFC假设读者熟悉本备忘录中讨论的概念。
DNS功能和数据类型的一个子集构成了官方协议。官方协议包括标准查询及其响应和大多数互联网类数据格式 (例如,主机地址)。
然而,域名系统是有意可扩展的。研究人员不断提出、实现和试验新的数据类型、查询类型、类、功能等。因此,虽然官方协议的组成部分预期保持基本不变并作为生产服务运行,但在官方协议之外的扩展中应该始终期待实验性行为。
Abstract (摘要)
DNS (Domain Name System, 域名系统) 是互联网的核心基础设施之一,提供了一个分布式、分层的命名系统。本RFC介绍了域名、它们在互联网邮件和主机地址支持中的使用,以及用于实现域名设施的协议和服务器。
目录 (Table of Contents)
1. Status of this Memo (本备忘录状态)
2. Introduction (简介)
- 2. Introduction (简介)
- 2.1 The history of domain names (域名的历史)
- 2.2 DNS design goals (DNS设计目标)
- 2.3 Assumptions about usage (使用假设)
- 2.4 Elements of the DNS (DNS的元素)
3. Domain Name Space and Resource Records (域名空间和资源记录)
- 3. Domain Name Space and Resource Records
- 3.1 Name space specifications and terminology (名称空间规范和术语)
- 3.2 Administrative guidelines on use (使用的管理指南)
- 3.3 Technical guidelines on use (使用的技术指南)
- 3.4 Example name space (示例名称空间)
- 3.5 Preferred name syntax (首选名称语法)
- 3.6 Resource Records (资源记录)
- 3.6.1 Textual expression of RRs (RR的文本表达)
- 3.6.2 Aliases and canonical names (别名和规范名称)
- 3.7 Queries (查询)
- 3.7.1 Standard queries (标准查询)
- 3.7.2 Inverse queries (Optional) (反向查询,可选)
- 3.8 Status queries (Experimental) (状态查询,实验性)
- 3.9 Completion queries (Obsolete) (完成查询,已废弃)
4. Name Servers (名称服务器)
- 4. Name Servers (名称服务器)
- 4.1 Introduction (简介)
- 4.2 How the database is divided into zones (数据库如何划分为区域)
- 4.2.1 Technical considerations (技术考虑)
- 4.2.2 Administrative considerations (管理考虑)
- 4.3 Name server internals (名称服务器内部)
- 4.3.1 Queries and responses (查询和响应)
- 4.3.2 Algorithm (算法)
- 4.3.3 Wildcards (通配符)
- 4.3.4 Negative response caching (Optional) (负响应缓存,可选)
- 4.4 Using the database (使用数据库)
5. Resolvers (解析器)
- 5. Resolvers (解析器)
- 5.1 Introduction (简介)
- 5.2 Client-resolver interface (客户端-解析器接口)
- 5.3 Resolver internals (解析器内部)
Appendices (附录)
核心概念快速参考
DNS层次结构
. (根)
|
+----------+----------+
| | |
com org net ...
| | |
+----+----+ | +---+---+
| | | | |
google amazon ietf example ...
|
+---+---+
| |
www mail
域名结构
www.example.com.
│ │ │ └─ 根 (通常省略)
│ │ └───── 顶级域 (TLD)
│ └─────────── 二级域 (SLD)
└───────────── 主机名/子域
完全限定域名 (FQDN): www.example.com.
相对域名: www
DNS记录类型 (RR Types)
| 类型 | 名称 | 用途 |
|---|---|---|
| A | Address | IPv4地址 |
| AAAA | IPv6 Address | IPv6地址 |
| CNAME | Canonical Name | 别名记录 |
| MX | Mail Exchange | 邮件服务器 |
| NS | Name Server | 名称服务器 |
| PTR | Pointer | 反向DNS |
| SOA | Start of Authority | 授权起始 |
| TXT | Text | 文本记录 |
| SRV | Service | 服务定位 |
DNS查询类型
递归查询 (Recursive Query):
客户端 → 本地DNS → [递归查询] → 最终答案
迭代查询 (Iterative Query):
客户端 → DNS1 → [引用] → DNS2 → [引用] → DNS3 → 答案
资源记录格式 (RR Format)
name TTL class type rdata
example.com. 3600 IN A 93.184.216.34
│ │ │ │ │
│ │ │ │ └─ 记录数据
│ │ │ └────── 记录类型
│ │ └──────────── 类 (IN=Internet)
│ └────────────────── 生存时间 (秒)
└──────────────────────────────── 域名
DNS解析过程
1. 用户查询 www.example.com
↓
2. 检查本地缓存
↓
3. 查询本地DNS服务器
↓
4. 查询根服务器 → 返回.com服务器
↓
5. 查询.com服务器 → 返回example.com服务器
↓
6. 查询example.com服务器 → 返回IP地址
↓
7. 返回结果并缓存
区域 (Zone) vs 域 (Domain)
| 概念 | 定义 | 示例 |
|---|---|---|
| 域 (Domain) | 名称树中的一个节点及其所有子节点 | example.com及其所有子域 |
| 区域 (Zone) | 域的一部分,由单一权威机构管理 | example.com的主文件 |
关键区别: 一个域可以被划分为多个区域以便于管理。
名称服务器类型
| 类型 | 英文 | 说明 |
|---|---|---|
| 权威服务器 | Authoritative | 拥有区域数据的官方来源 |
| 递归服务器 | Recursive | 代表客户端执行完整解析 |
| 缓存服务器 | Caching | 仅缓存查询结果 |
| 转发器 | Forwarder | 将查询转发到其他服务器 |
区域文件示例
$ORIGIN example.com.
$TTL 3600
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum 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. 分层命名空间 (Hierarchical Namespace)
- 树形结构,根在顶部
- 使用点 (.) 分隔层次
- 从右到左读取 (根 → TLD → SLD → 主机)
2. 分布式数据库 (Distributed Database)
- 没有单一故障点
- 数据分散在全球数千个服务器
- 每个区域由权威服务器管理
3. 缓存机制 (Caching)
- 减少查询延迟
- 降低根服务器负载
- TTL控制缓存有效期
4. 冗余性 (Redundancy)
- 13个根服务器集群 (A-M)
- 每个区域通常有多个NS记录
- 主/从服务器架构
5. 可扩展性 (Extensibility)
- 支持新的RR类型
- 支持新的查询类型
- EDNS0扩展机制
DNS vs 早期系统 (HOSTS.TXT)
| 特性 | HOSTS.TXT | DNS |
|---|---|---|
| 管理 | 集中式 | 分布式 |
| 扩展性 | 差 (O(n²)带宽) | 好 (分层) |
| 更新 | 手动FTP | 自动同步 |
| 查询 | 本地文件查找 | 网络查询 |
| 结构 | 平面列表 | 层次树 |
| 性能 | 文件大小限制 | 缓存优化 |
DNS数据流
+----------+
| 客户端 |
| 应用程序 |
+----------+
↓ ↑
查询 | 响应
↓ ↑
+----------+
| 解析器 | ← 配置: /etc/resolv.conf
| (Resolver)|
+----------+
↓ ↑
DNS协议
↓ ↑
+----------+
|名称服务器 | ← 区域文件: zone files
|(Name |
| Server) |
+----------+
根服务器系统
全球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
注意: 通过任播 (Anycast),每个"根服务器"实际上是分布在全球的数百个物理服务器。
相关资源 (Related Resources)
- 官方原文: 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实现和规范 了解详细的协议实现细节。