DNS 域名解析的核心角色与完整流程
1. DNS 基础概念
1.1. DNS 是什么?
DNS(Domain Name System,域名系统)是互联网的一项基础服务,主要作用是将域名解析为 IP 地址,使用户能够通过域名访问网络资源。
例如:
www.example.com → 93.184.216.34
1.2. DNS 的主要作用
- 域名解析:将域名转换为 IP 地址。
- 反向解析:通过 IP 地址查询对应的域名。
- 邮件路由:通过 MX 记录指定邮件服务器。
- 域名管理:通过 DNS 记录管理域名与网络资源之间的关系。
2. DNS 服务器的核心角色
2.1. DNS 客户端
发起 DNS 查询请求的设备或程序,例如电脑、手机、浏览器等。
作用:向 DNS 服务器请求域名解析。
2.2. 本地 DNS 服务器
也称递归 DNS 服务器,负责接收客户端的 DNS 请求,并帮助客户端完成域名解析。
特点:
- 通常由运营商、企业或公共 DNS 服务商提供。
- 可以查询自己的 DNS 缓存。
- 缓存未命中时,向其他 DNS 服务器继续查询。
- 最终将解析结果返回给客户端。
常见地址:
- 114.114.114.114
- 8.8.8.8
- 223.5.5.5
记忆:帮客户端查找最终答案的服务器。
2.3. 根 DNS 服务器(Root DNS)
DNS 层级体系中最顶层的服务器,负责根区域(.)。
特点:
- 位于 DNS 域名体系最顶端。
- 知道各个顶级域 DNS 服务器的位置。
- 可以告诉递归解析器应该去哪里查询
.com、.cn、.org等顶级域。 - 不负责保存全球所有网站的 IP 地址。
记忆:告诉你应该去找哪个顶级域服务器。
2.4. 顶级域 DNS 服务器(TLD DNS)
负责某个顶级域的 DNS 服务器。
常见顶级域:
.com.cn.org.net
特点:
- 管理对应顶级域的委派信息。
- 知道某个二级域名由哪些权威 DNS 服务器负责。
- 不一定保存具体网站的 IP 地址。
记忆:告诉你应该去找哪个域名的权威 DNS 服务器。
2.5. 权威 DNS 服务器(Authoritative DNS)
负责管理特定 DNS 区域,并保存该区域 DNS 记录的服务器。
特点:
- 保存域名对应的 DNS 记录。
- 可以提供 A、AAAA、MX、CNAME 等记录。
- 对自己管理的 DNS 区域提供权威回答。
记忆:真正掌握域名解析记录、能够提供权威答案的服务器。
3. DNS 完整解析流程
假设用户在浏览器中输入:
www.example.com
3.1. 第一步:检查本地缓存
电脑首先检查:
- 浏览器 DNS 缓存。
- 操作系统 DNS 缓存。
- hosts 文件。
如果已经有有效解析结果,可以直接使用,不必继续查询。
如果没有,则向配置的本地 DNS 服务器发送请求。
3.2. 第二步:客户端向本地 DNS 发起递归查询
电脑向本地 DNS 服务器发送请求:
请帮我查询 www.example.com 的 IP 地址,
并返回最终结果。
这是递归查询(Recursive Query)。
本地 DNS 服务器负责完成后续解析工作。
3.3. 第三步:本地 DNS 查询自身缓存
本地 DNS 首先检查自身缓存。
- 如果存在有效记录,直接返回客户端。
- 如果不存在,则开始向其他 DNS 服务器查询。
3.4. 第四步:本地 DNS 向根 DNS 发起迭代查询
本地 DNS 向根 DNS 询问:
www.example.com 的 IP 地址是什么?
根 DNS 不知道具体 IP,但知道 .com 顶级域 DNS 的位置。
于是返回 .com 顶级域 DNS 的相关信息。
3.5. 第五步:本地 DNS 向顶级域 DNS 发起迭代查询
本地 DNS 根据根 DNS 提供的信息,向 .com 顶级域 DNS 查询。
顶级域 DNS 不知道具体 IP,但知道 example.com 对应的权威 DNS 服务器。
于是返回权威 DNS 服务器的相关信息。
3.6. 第六步:本地 DNS 向权威 DNS 发起迭代查询
本地 DNS 找到权威 DNS 后,向其查询:
www.example.com 的 A 记录是什么?
权威 DNS 查询自己管理的区域记录,返回最终解析结果。
例如:
www.example.com A 93.184.216.34
3.7. 第七步:返回解析结果
本地 DNS 收到结果后:
- 根据 TTL 缓存解析记录。
- 将最终 IP 地址返回给客户端。
电脑获得:
www.example.com = 93.184.216.34
至此,DNS 域名解析完成。
浏览器接下来使用该 IP 地址建立网络连接,访问目标服务器。
4. 递归查询与迭代查询
4.1. 递归查询(Recursive Query)
定义:请求方要求被请求方完成整个查询过程,并返回最终结果。
特点:
- 被请求方负责继续查询。
- 请求方通常只需要发起一次查询。
- 最终返回解析结果或错误信息。
典型场景:
DNS 客户端 → 本地 DNS
记忆:你帮我查到底,告诉我最终答案。
4.2. 迭代查询(Iterative Query)
定义:DNS 服务器收到请求后,如果不知道最终答案,则返回自己所知道的下一步 DNS 服务器信息,由请求方继续查询。
特点:
- 请求方负责继续查询。
- 被请求方返回最佳已知答案或下一步查询线索。
- 需要多次查询才能获得最终结果。
典型场景:
本地 DNS → 根 DNS
本地 DNS → 顶级域 DNS
本地 DNS → 权威 DNS
记忆:我不知道答案,但我告诉你下一步应该找谁。
4.3. 两者对比
| 对比项目 | 递归查询 | 迭代查询 |
|---|---|---|
| 谁负责继续查询 | 被请求方 | 请求方 |
| 返回内容 | 最终答案或错误 | 最佳已知答案或查询线索 |
| 典型场景 | 客户端与本地 DNS | 本地 DNS 与其他 DNS |
| 查询次数 | 客户端通常请求一次 | 请求方需要多次查询 |
核心记忆:客户端向本地 DNS 发起递归查询,本地 DNS 向根 DNS、顶级域 DNS、权威 DNS 发起迭代查询。
5. DNS 正向查询与反向查询
5.1. 正向查询
定义:通过域名查询 IP 地址。
例如:
www.example.com → 93.184.216.34
5.2. 反向查询
定义:通过 IP 地址查询对应的域名。
例如:
8.8.8.8 → dns.google
反向查询使用 PTR 记录实现。
IPv4 反向查询使用:
in-addr.arpa
IPv6 反向查询使用:
ip6.arpa
IPv4 示例:
8.8.8.8
↓
8.8.8.8.in-addr.arpa
↓
查询 PTR 记录
↓
dns.google
5.3. 正向与反向对比
| 类型 | 查询方向 | 主要记录 |
|---|---|---|
| 正向查询 | 域名 → IP | A、AAAA |
| 反向查询 | IP → 域名 | PTR |
记忆:正向查 IP,反向查域名。
6. 常见 DNS 资源记录
| 记录类型 | 名称 | 作用 |
|---|---|---|
| A | 地址记录 | 将域名解析为 IPv4 地址 |
| AAAA | IPv6 地址记录 | 将域名解析为 IPv6 地址 |
| CNAME | 别名记录 | 将一个域名指向另一个域名 |
| MX | 邮件交换记录 | 指定邮件服务器 |
| NS | 名称服务器记录 | 指定 DNS 区域的权威 DNS 服务器 |
| PTR | 指针记录 | 通过 IP 地址反向查询域名 |
| TXT | 文本记录 | 保存文本信息,常用于域名验证及邮件安全配置 |
| SOA | 起始授权记录 | 描述 DNS 区域的权威信息及区域管理参数 |
重点记忆:
- A:域名 → IPv4。
- AAAA:域名 → IPv6。
- CNAME:域名 → 另一个域名。
- MX:邮件服务器。
- NS:权威 DNS 服务器。
- PTR:IP → 域名。
7. DNS 其他重要概念
7.1. DNS 缓存
DNS 服务器将查询结果暂时保存,避免重复查询,提高解析效率。
7.2. TTL(Time To Live)
生存时间,表示 DNS 记录可以被缓存的时间。
例如:
www.example.com
A
93.184.216.34
TTL = 3600
表示该记录的缓存有效时间为 3600 秒。
7.3. hosts 文件
本地静态域名解析文件,可以手动指定域名与 IP 地址的对应关系。
Windows 文件位置:
C:\Windows\System32\drivers\etc\hosts
7.4. DNS 解析不等于访问网站
DNS 解析只负责获取 IP 地址。
获得 IP 后,浏览器还需要通过 TCP/TLS 或 QUIC 等协议建立连接,才能访问 Web 服务。
8. DNS 完整流程记忆图
用户在浏览器输入域名
│
▼
检查浏览器 DNS 缓存
│
▼
检查操作系统 DNS 缓存
│
▼
检查 hosts
│
▼
向本地 DNS 发送请求
【递归查询】
│
▼
本地 DNS 检查缓存
│
▼
查询根 DNS
【迭代查询】
│
▼
返回顶级域 DNS 地址
│
▼
查询顶级域 DNS
【迭代查询】
│
▼
返回权威 DNS 地址
│
▼
查询权威 DNS
【迭代查询】
│
▼
返回最终 IP
│
▼
本地 DNS 缓存结果
│
▼
返回 IP 给用户电脑
│
▼
浏览器建立网络连接
│
▼
访问目标网站
9. 关键重点总结
- DNS 的主要作用是将域名解析为 IP 地址。
- 本地 DNS 服务器负责接受客户端请求并进行递归解析。
- 根 DNS 服务器负责提供顶级域的委派信息。
- 顶级域 DNS 服务器负责提供下属域名的权威服务器委派信息。
- 权威 DNS 服务器负责保存并提供自己管理区域内的 DNS 记录。
- 客户端向本地 DNS 通常采用递归查询。
- 本地 DNS 向根 DNS、顶级域 DNS、权威 DNS 通常采用迭代查询。
- 正向查询是域名查询 IP。
- 反向查询是 IP 查询域名,使用 PTR 记录。
- TTL 表示 DNS 记录的缓存生存时间。
- A 记录对应 IPv4,AAAA 记录对应 IPv6。
- NS 记录指定 DNS 区域的权威 DNS 服务器。
9.1. 最重要的一句话
客户端向本地 DNS 发起递归查询,本地 DNS 通过迭代查询依次寻找根 DNS、顶级域 DNS 和权威 DNS,最终获得 IP 地址并返回给客户端。