跳到主要内容

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地址
AAAAIPv6地址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.TXTDNS
管理集中式分布式
可扩展性差 (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实现与规范 以获取详细的协议实现细节.