Skip to main content

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)

类型名称用途
AAddressIPv4地址
AAAAIPv6 AddressIPv6地址
CNAMECanonical Name别名记录
MXMail Exchange邮件服务器
NSName Server名称服务器
PTRPointer反向DNS
SOAStart of Authority授权起始
TXTText文本记录
SRVService服务定位

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.TXTDNS
管理集中式分布式
扩展性差 (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),每个"根服务器"实际上是分布在全球的数百个物理服务器。



实用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实现和规范 了解详细的协议实现细节。