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. 第一步:检查本地缓存

电脑首先检查:

  1. 浏览器 DNS 缓存。
  2. 操作系统 DNS 缓存。
  3. 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 收到结果后:

  1. 根据 TTL 缓存解析记录。
  2. 将最终 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. 正向与反向对比

类型查询方向主要记录
正向查询域名 → IPA、AAAA
反向查询IP → 域名PTR

记忆:正向查 IP,反向查域名。


6. 常见 DNS 资源记录

记录类型名称作用
A地址记录将域名解析为 IPv4 地址
AAAAIPv6 地址记录将域名解析为 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. 关键重点总结

  1. DNS 的主要作用是将域名解析为 IP 地址。
  2. 本地 DNS 服务器负责接受客户端请求并进行递归解析。
  3. 根 DNS 服务器负责提供顶级域的委派信息。
  4. 顶级域 DNS 服务器负责提供下属域名的权威服务器委派信息。
  5. 权威 DNS 服务器负责保存并提供自己管理区域内的 DNS 记录。
  6. 客户端向本地 DNS 通常采用递归查询。
  7. 本地 DNS 向根 DNS、顶级域 DNS、权威 DNS 通常采用迭代查询。
  8. 正向查询是域名查询 IP。
  9. 反向查询是 IP 查询域名,使用 PTR 记录。
  10. TTL 表示 DNS 记录的缓存生存时间。
  11. A 记录对应 IPv4,AAAA 记录对应 IPv6。
  12. NS 记录指定 DNS 区域的权威 DNS 服务器。

9.1. 最重要的一句话

客户端向本地 DNS 发起递归查询,本地 DNS 通过迭代查询依次寻找根 DNS、顶级域 DNS 和权威 DNS,最终获得 IP 地址并返回给客户端。