可以把 DNS 想象成互联网的“电话簿”或者“导航系统”。

- 你:想访问一个网站,
www.google.com。 - 电话簿/导航系统:你不能直接通过“www.google.com”这个名字找到网站,因为计算机只认识 IP 地址(
250.191.78),DNS 的作用就是帮你把“名字”翻译成“地址”。
DNS 的核心概念
在了解工作流程之前,先要认识几个关键角色:
-
域名:就是我们平时输入的网址,如
www.google.com,它是一个层次化的结构,从右到左越来越具体:.com:顶级域名google:二级域名www:子域名
-
IP 地址:计算机在网络中的唯一地址,就像每家每户的门牌号。
250.191.78。 -
域名服务器:这是整个系统的核心,是存储域名和对应 IP 地址记录的专用服务器,它们有不同的分工,就像一个分布式的、层级化的数据库。
(图片来源网络,侵删) -
解析器:通常在你本地的电脑或网络服务提供商那里,当你在浏览器输入网址时,是解析器负责向 DNS 服务器发起查询请求。
DNS 服务器层级结构
DNS 服务器不是集中在一台超级计算机上,而是分布在全球,形成一个层级结构,这保证了系统的效率和鲁棒性。
-
根域名服务器:
- 作用:最高级别的服务器,全球只有 13 组(实际有上千台镜像服务器),它们不存储具体的域名和 IP 映射关系,只存储顶级域(如
.com,.org,.cn)的 NS 记录。 - 比喻:就像电话簿的“总目录”,告诉你查“姓张”的去“张”姓那一页,但它不知道“张三”的具体电话号码。
- 作用:最高级别的服务器,全球只有 13 组(实际有上千台镜像服务器),它们不存储具体的域名和 IP 映射关系,只存储顶级域(如
-
顶级域服务器:
(图片来源网络,侵删)- 作用:负责管理特定顶级域的服务器。
.com的 TLD 服务器知道所有.com域名应该去哪个权威服务器查询。 - 比喻:电话簿的“张姓”那一页,它告诉你“张三”的详细信息在“北京市黄页”里。
- 作用:负责管理特定顶级域的服务器。
-
权威域名服务器:
- 作用:这是最终负责某个特定域名的服务器,它存储了该域名下的所有权威记录,包括
www.google.com的 IP 地址、邮件服务器地址等。 - 比喻:北京市黄页”本身,直接记录了“张三”的电话号码和住址。
- 作用:这是最终负责某个特定域名的服务器,它存储了该域名下的所有权威记录,包括
DNS 查询的完整流程(递归查询示例)
我们把所有概念串联起来,看看当你输入 www.google.com 并按下回车后,到底发生了什么,这个过程通常被称为递归查询。
假设你的电脑上没有缓存,且本地 DNS 服务器也不知道答案。
步骤分解:
-
用户输入与本地检查
- 你在浏览器输入
www.google.com。 - 你的电脑首先会检查本地缓存和 hosts 文件(一个可以手动配置域名和 IP 对应关系的文件),如果这里有记录,就直接访问,无需查询 DNS。
- 你在浏览器输入
-
联系本地 DNS 服务器
- 如果本地没有,你的计算机会向你的网络服务提供商(如电信、联通)分配的本地 DNS 服务器(也叫递归解析器)发送查询请求:“请问
www.google.com的 IP 地址是什么?”
- 如果本地没有,你的计算机会向你的网络服务提供商(如电信、联通)分配的本地 DNS 服务器(也叫递归解析器)发送查询请求:“请问
-
本地 DNS 服务器开始递归查询
-
本地 DNS 服务器接收到请求后,它会代替你的电脑,开始向全球的 DNS 体系发起查询。
-
查询 1:询问根服务器
- 本地 DNS 服务器向根域名服务器发送请求:“请告诉我
www.google.com的权威服务器是哪个?” - 根服务器看到
.com,会回答:“我不知道www.google.com的具体地址,但我知道负责.com的顶级域服务器的地址是xxx.com。” - 本地 DNS 服务器记下这个地址,然后向顶级域服务器发起下一个查询。
- 本地 DNS 服务器向根域名服务器发送请求:“请告诉我
-
查询 2:询问顶级域服务器
- 本地 DNS 服务器向
.com的顶级域服务器发送请求:“请告诉我www.google.com的权威服务器是哪个?” - TLD 服务器检查自己的记录,回答:“我不知道
www.google.com的具体 IP,但我知道google.com这个域名的权威服务器地址是xxx.google.com。” - 本地 DNS 服务器记下这个地址,然后向权威服务器发起最后一个查询。
- 本地 DNS 服务器向
-
查询 3:询问权威服务器
- 本地 DNS 服务器向
google.com的权威域名服务器发送请求:“请告诉我www.google.com的 IP 地址是什么?” - 权威服务器查看自己的记录,找到了
www这条记录,并给出精确的答案:“www.google.com的 IP 地址是250.191.78。”
- 本地 DNS 服务器向
-
-
返回结果并缓存
- 本地 DNS 服务器收到最终答案
250.191.78后,会将这个结果缓存起来(缓存时间由 TTL 值决定),然后将这个 IP 地址返回给你的电脑。
- 本地 DNS 服务器收到最终答案
-
建立连接
- 你的电脑收到 IP 地址
250.191.78后,浏览器就可以使用这个 IP 地址向 Google 的服务器发起 HTTP 请求,最终将网页内容显示给你。
- 你的电脑收到 IP 地址
DNS 记录类型
除了最常见的 A 记录(域名 -> IPv4 地址),DNS 还支持多种记录类型,以实现不同功能:
- A 记录:将域名指向一个 IPv4 地址。
- AAAA 记录:将域名指向一个 IPv6 地址。
- CNAME 记录:将一个域名指向另一个域名(别名),将
blog.google.com指向www.google.com。 - MX 记录:指定负责处理该域名下电子邮件的邮件服务器。
- NS 记录:指定该域名的权威域名服务器是哪些。
- TXT 记录:存储任意的文本信息,常用于验证域名所有权、SPF 邮件验证等。
DNS 是互联网不可或缺的基础设施,它的工作原理可以概括为:
- 分层查询:从根服务器开始,逐级向下查询,直到找到最终的权威服务器。
- 缓存机制:各级服务器(包括本地 DNS 服务器和浏览器)都会缓存查询结果,以减少后续查询次数,提高访问速度。
- 分布式设计:将数据和查询压力分散到全球成千上万台服务器上,确保了系统的稳定和高效。
没有 DNS,我们就必须记住成百上千个枯燥的数字 IP 地址来访问网站,互联网的易用性将大打折扣,它就像一个默默无闻的翻译官,将人类友好的“名字”翻译成机器能懂的“地址”,让我们能够轻松地畅游网络。
