一、 DNS 是什么?为什么需要它?
DNS 是互联网的 "电话簿" 或 "导航系统" 。它的核心作用是 将人类易于记忆的域名(如 www.baidu.com)转换为机器用于网络通信的 IP 地址(如 14.119.104.254)。
-
对人类友好:我们很难记住一串数字组成的 IP 地址,但可以轻松记住有意义的域名。
-
对机器友好:网络设备(路由器、服务器等)依靠 IP 地址来定位和路由数据包。
没有 DNS,我们就只能通过直接输入 IP 地址来访问网站,这几乎是不可能的。
二、 域名结构:一个全球分布的倒置树
要理解 DNS 如何工作,首先要了解域名的层次结构。它像一个从根开始的、全球分布的倒置树状目录。
-
根域 :用点
.表示,是这棵树的根,全球有13组(注意是组,而非台)根服务器。 -
顶级域:紧接在根域下一层,分为两类:
-
通用顶级域 :如
.com,.org,.net等。 -
国家/地区顶级域 :如
.cn(中国),.us(美国)等。
-
-
二级域 :这是用户注册的独特部分,例如
baidu。baidu.com就是一个完整的域名。 -
子域/主机名 :由域名所有者自行创建,用于服务划分,例如
www,mail,blog等。
所以,解析 www.baidu.com. 的完整路径是从右向左的:根 (.) -> .com -> baidu -> www。
三、 DNS 系统的关键角色
在整个解析过程中,涉及四类重要的服务器:
-
DNS 解析器 :也叫本地 DNS 服务器 ,通常由 ISP(如电信、移动)提供,或使用公共 DNS(如
114.114.114.114,8.8.8.8)。它是直接接收用户查询请求的"前台接待员"。 -
根域名服务器 :全球共13个逻辑根服务器集群。它不存储具体域名的IP,但知道每个顶级域(如
.com)由谁管理,是查询的"第一站向导"。 -
顶级域名服务器 :负责管理特定顶级域下的所有二级域名。例如,
.comTLD 服务器知道baidu.com的权威服务器是谁,是查询的"第二站向导"。 -
权威域名服务器 :域名解析的"终极答案来源"。它是域名所有者设置的服务器,存储着该域名下所有主机记录(如
www、mail对应的 IP 地址)。
四、 DNS 解析的工作流程(核心)
整个 DNS 解析过程是一个典型的 递归查询 配合 迭代查询 的协作流程。下图清晰地展示了这一完整过程:

这个过程完美对应了图中的步骤,让我们来详细解读:
-
本地缓存查询:
-
浏览器首先检查自己的缓存。
-
操作系统检查 Hosts 文件 和本地的 DNS 缓存(如 Windows 的 DNS Client 服务)。
-
如果任何一步有缓存且未过期,则直接使用该 IP,流程结束。
-
-
请求 DNS 解析器(递归查询开始):
- 如果本地没有缓存,操作系统会将这个查询请求发送到配置好的 本地 DNS 服务器(DNS 解析器) 。这个请求相当于说:"帮我找到
www.example.com的 IP,无论你问谁,找到后直接告诉我结果。"
- 如果本地没有缓存,操作系统会将这个查询请求发送到配置好的 本地 DNS 服务器(DNS 解析器) 。这个请求相当于说:"帮我找到
-
DNS 解析器的迭代查询:
-
解析器检查自身缓存 :DNS 解析器也有自己的缓存。如果有记录且未过期,它就直接返回结果,流程结束。如果没有,它便开始代表用户进行 迭代查询。
-
询问根域名服务器 :解析器向13个根服务器之一发起查询。根服务器不直接给出答案,而是回复一个负责
.com域的 顶级域名服务器地址列表。 -
询问顶级域名服务器 :解析器从中选一个
.com TLD 服务器进行查询。TLD 服务器查看请求的二级域名(example),然后回复管理example.com的 权威域名服务器地址列表。 -
询问权威域名服务器 :解析器向其中一个
example.com的权威服务器发起查询。这次,权威服务器在自己的区域数据文件中查找www这个主机名,并返回其对应的 最终 IP 地址。
-
-
返回结果与缓存:
-
DNS 解析器终于拿到了 IP 地址。它首先 将这个记录保存在自己的缓存中 ,保存时间由记录中的 TTL 值决定。
-
然后,解析器将 IP 地址返回给用户的操作系统,操作系统也可能缓存它。
-
最后,IP 地址被送达浏览器。
-
-
建立连接:
- 浏览器拿到 IP 地址后,就可以通过 HTTP/HTTPS 协议与目标服务器建立 TCP 连接,开始请求和加载网页内容。
五、 关键概念
-
资源记录:DNS 数据库中存储的基本信息单元。常见类型有:
-
A 记录:将主机名指向一个 IPv4 地址。
-
AAAA 记录:将主机名指向一个 IPv6 地址。
-
CNAME 记录:域名别名,将一个域名指向另一个域名。
-
MX 记录:邮件交换记录,指定接收邮件的服务器。
-
NS 记录:指定该域名由哪台权威服务器来解析。
-
-
TTL:一条 DNS 记录在缓存中存活的时间(秒)。较短的 TTL 便于快速更改记录,较长的 TTL 能减少查询次数,提升速度。