Appearance
DNS 域名系统
考情分析
DNS 在 408 中是应用层的重要考点。选择题常考递归查询与迭代查询的区别、域名层次结构、各级 DNS 服务器的作用。偶尔在大题中结合网络层一起考查。
考频:★★★★
DNS 的功能
DNS(Domain Name System,域名系统)的核心功能是域名到 IP 地址的映射。人类习惯用域名(如 www.example.com)来访问网站,但网络通信需要 IP 地址。DNS 就是这个翻译系统。
DNS 是一个分布式数据库,没有一台服务器存储了所有的域名映射。整个域名空间被划分成若干区域,由不同的 DNS 服务器负责管理。
DNS 使用 UDP 端口 53(查询),也使用 TCP 端口 53(区域传送和大响应)。
域名的层次结构
域名采用层次树状结构,从右往左级别递减。
. (根)
├── com (顶级域)
│ ├── example (二级域)
│ │ └── www (主机名)
│ └── google
│ └── mail
├── cn (国家顶级域)
│ ├── edu
│ │ └── pku
│ └── com
├── org
└── net完整的域名格式:主机名.二级域名.顶级域名.根域名
例如 www.pku.edu.cn.(最后的点表示根域名,通常省略)。
顶级域名(TLD)分类
| 类型 | 示例 | 说明 |
|---|---|---|
| 通用顶级域名 | .com, .org, .net, .edu | 按用途分类 |
| 国家/地区顶级域名 | .cn, .us, .jp, .uk | 按国家/地区分类 |
| 基础设施域名 | .arpa | 反向域名解析 |
DNS 服务器层次
DNS 服务器分为四个层次:
根域名服务器
全球共 13 组根域名服务器(A~M),它们知道所有顶级域名服务器的地址。任何本地 DNS 服务器只要找不到映射,最终都可以向根域名服务器求助。
顶级域名服务器(TLD 服务器)
负责管理在该顶级域名下注册的所有二级域名。比如 .com 的 TLD 服务器知道所有 xxx.com 域名对应的权威 DNS 服务器地址。
权威域名服务器
负责管理某个具体区域的域名映射。比如 example.com 的权威 DNS 服务器知道 www.example.com、mail.example.com 等的 IP 地址。
本地域名服务器
不在上述层次之中,但非常重要。当主机发起 DNS 查询时,首先发给本地 DNS 服务器(通常由 ISP 提供或手动配置)。本地 DNS 服务器相当于一个代理,帮主机去查询。
域名解析过程
域名解析有两种查询方式:递归查询和迭代查询。实际中通常是混合使用——主机到本地 DNS 服务器之间用递归查询,本地 DNS 服务器到其他 DNS 服务器之间用迭代查询。
递归查询
查询方向:主机 → 本地 DNS 服务器
主机向本地 DNS 服务器发出查询,如果本地 DNS 服务器没有缓存,它会替主机去查,最终把结果返回给主机。主机只需要发一个请求,等一个结果。
迭代查询
查询方向:本地 DNS 服务器 → 根/TLD/权威 DNS 服务器
本地 DNS 服务器向根 DNS 服务器查询,根 DNS 服务器不会替它去查,而是告诉它应该去问谁(返回下一级 DNS 服务器的地址)。本地 DNS 服务器再去问下一级,如此反复。
完整的解析流程
以查询 www.example.com 为例:
整个过程中,主机只和本地 DNS 服务器通信一次(递归),本地 DNS 服务器和其他服务器之间通信多次(迭代)。
递归查询 vs 迭代查询对比
| 对比项 | 递归查询 | 迭代查询 |
|---|---|---|
| 谁负责继续查 | 被查的服务器(帮你查到底) | 查询方自己(你自己去问下一个) |
| 负担 | 被查服务器负担重 | 查询方负担重 |
| 使用场景 | 主机 → 本地 DNS | 本地 DNS → 其他 DNS |
DNS 缓存
为了减少查询次数和提高速度,DNS 服务器和主机都会缓存查询结果。
- 本地 DNS 服务器收到响应后,会缓存该映射
- 下次再有相同查询时,直接从缓存中返回
- 缓存有生存时间(TTL),过期后自动删除
DNS 缓存显著减少了对根和 TLD 服务器的查询压力。实际中,大部分查询都能在本地 DNS 服务器的缓存中命中。
资源记录类型
DNS 中的每条记录称为资源记录(Resource Record, RR),格式为:(域名, TTL, 类别, 类型, 值)。
常见的记录类型:
| 类型 | 含义 | 示例 |
|---|---|---|
| A | 域名 → IPv4 地址 | www.example.com → 93.184.216.34 |
| AAAA | 域名 → IPv6 地址 | www.example.com → 2606:2800:... |
| CNAME | 域名的别名 | blog.example.com → www.example.com |
| MX | 邮件交换记录 | example.com → mail.example.com (优先级 10) |
| NS | 域的权威 DNS 服务器 | example.com → ns1.example.com |
| PTR | IP 地址 → 域名(反向解析) | 93.184.216.34 → www.example.com |
A 记录是最常见的,408 选择题中"域名解析"默认就是在查 A 记录。
交互可视化
易错点
1. 递归和迭代不要搞反
递归 = 被查方帮你查到底,迭代 = 被查方告诉你去问谁。主机到本地 DNS 是递归,本地 DNS 到其他 DNS 是迭代。
2. DNS 不只用 UDP
DNS 查询默认用 UDP,但区域传送(主辅 DNS 服务器之间同步数据)和响应超过 512 字节时用 TCP。
3. 本地 DNS 服务器不在 DNS 层次结构中
根、TLD、权威 DNS 构成层次结构,本地 DNS 服务器是独立于这个层次之外的。
4. CNAME 记录不是直接给 IP
CNAME 是别名记录,它将一个域名映射到另一个域名,还需要再查那个域名的 A 记录才能得到 IP。
疑难点
从输入 URL 到页面显示的完整过程
这是综合题常考点,贯穿多层协议。以访问 www.example.com 为例:浏览器先解析 URL 提取域名 → DNS 解析获取 IP 地址(浏览器缓存→本地 DNS 缓存→本地 DNS 服务器→迭代/递归查询)→ TCP 三次握手建立连接 → 发送 HTTP 请求 → 服务器返回 HTTP 响应 → 浏览器渲染页面 → TCP 四次挥手释放连接。底层还涉及 ARP 获取网关 MAC 地址、IP 分组经路由器逐跳转发等过程。考研重点考查 DNS→TCP→HTTP→渲染这条主线。
为什么 DNS 用 UDP 而 HTTP 用 TCP?
DNS 查询报文短小(通常不超过 512 字节),一问一答,对实时性要求高,用 UDP 只需一个请求包+一个响应包,避免了 TCP 三次握手的额外开销。丢包了直接超时重发代价很低。HTTP 传输的网页内容通常较大且要求完整送达,TCP 提供的可靠传输、按序交付正好满足需求。注意 DNS 并非"只用 UDP"——当响应超过 512 字节(如区域传送)时会切换到 TCP。
高频考点清单
- DNS 的功能(域名到 IP 的映射)
- 域名的层次结构(根 → 顶级 → 二级 → 主机名)
- 四种 DNS 服务器的作用(根、TLD、权威、本地)
- 递归查询 vs 迭代查询的区别和使用场景
- DNS 缓存的作用
- 常见资源记录类型(A、AAAA、CNAME、MX、NS)
- DNS 使用 UDP 端口 53