DNS服务器工作原理:一次域名解析的完整过程
输入网址后,DNS服务器是怎么一步步把域名解析成IP地址的?本文用通俗的话讲清楚解析流程、缓存和TTL,以及你自己怎么查看解析结果。

DNS服务器就像一个查号台:你报上网站的域名,它告诉你这个网站所在服务器的数字地址(IP地址)。如果它手头没有答案,就会自己去问一连串其他服务器,把结果记下来,再交给你。关于DNS的整体概念,可以先看DNS是什么:通俗易懂的入门文章,本文只讲一次解析请求内部到底发生了什么。
一次DNS解析会涉及哪些角色?
一次普通的解析里有四种角色。它们不一定部署在不同的机器上,但分工是分开的。
| 角色 | 作用 | 通俗比喻 |
|---|---|---|
| 递归解析器(本地DNS) | 接收你的请求,并负责一路查到结果 | 自己挨个打电话问的秘书 |
| 根服务器 | 告诉你 .com、.org 等顶级域由谁负责 | 大厅里的指示牌:“请上三楼” |
| 顶级域(TLD)服务器 | 知道某个域名的记录存放在哪里 | 楼层前台 |
| 权威服务器 | 保存真正的记录,给出最终的IP | 手里握着那份文件的人 |
递归解析器通常是宽带运营商提供的DNS,也可以换成公共DNS,怎么选我们会另文介绍。
DNS解析的过程是怎样的?
假设你今天第一次打开 example.com。
- 浏览器先查自己的缓存。 如果最近访问过,地址已经在手,根本不用联网查询。
- 操作系统检查自己的缓存和 hosts 文件。 这是第二道关口,此时还没轮到外部服务器。
- 请求发给递归解析器。 它也会先看自己的缓存:热门网站几乎总能直接命中,因为之前已经有成千上万的人查过。
- 解析器去问根服务器。 根服务器不知道网站的IP,但会告诉它
.com由哪些服务器负责。 - 解析器再问顶级域服务器。 对方告诉它,
example.com的记录存放在哪些服务器上。 - 解析器去问该域名的权威服务器。 只有它能给出最终的IP地址。
- 结果返回给你,并在解析器、系统和浏览器中缓存下来。
根服务器在名义上只有13组地址(A到M),但每一组背后都有分布在全球各地的大量实体服务器,由离你最近的节点应答,所以根层不会成为瓶颈。
DNS服务器里还存着网站的哪些信息?
DNS返回的不只是IP地址。一个域名下有多种类型的记录,从中可以看出这个服务是怎么搭建的。

最常见的记录有:A和AAAA(网站的IPv4和IPv6地址)、CNAME(别名)、MX(邮件服务器)、TXT(各种说明性标记,比如域名所有权验证)。所以MX记录配错时,网站能正常打开,但域名邮箱收不到邮件——它们是同一个域名下互不相干的记录。
为什么第二次访问比第一次快?缓存与TTL
每条记录都有TTL(生存时间,单位是秒)。在TTL到期前,解析器直接从内存里回答,不再走完整的查询链。常见的TTL从5分钟到一天不等。

这也有副作用。网站搬到新的主机、换了IP之后,一部分用户在一段时间内仍会访问旧地址,因为他们的解析器会保留旧记录直到TTL结束。所以运维人员在迁移前通常会先调低TTL。
怎么亲眼看到DNS的解析结果?
不需要安装任何软件,Windows、macOS 和 Linux 都自带 nslookup:
```
nslookup example.com
```
返回结果分两部分。上半部分显示是哪台服务器回答了你,也就是你正在使用的DNS;下半部分是查到的IP地址。再运行一次,会发现响应明显更快,并且带有“非权威应答”的提示,说明这次结果来自缓存,而不是域名自己的服务器。
在 macOS 和 Linux 上还可以用 dig example.com,它会额外显示剩余的TTL和查询耗时(毫秒)。
DNS服务器会知道我访问了哪些网站吗?
会。解析器能看到你查询了哪些域名,而传统DNS默认是明文传输、不加密的。它看不到网页的具体内容,但你访问过的网站列表是看得到的。要保护这部分信息,可以使用 DNS-over-HTTPS(DoH)和 DNS-over-TLS(DoT),它们会加密查询本身,在公共Wi-Fi这类不可信的网络里,查询更难被窥探或篡改。
还有一种情况:你已经开启了加密连接,但DNS查询仍然发给了运营商的服务器。怎么检测,可以看这篇讲IP和DNS泄漏的文章。
小结
- DNS服务器根据域名返回IP地址,并把结果缓存起来。
- “根 → 顶级域 → 域名权威服务器”这条查询链,只在缓存里没有答案时才会走。
- 缓存让重复访问更快,TTL决定一条记录多久之内算“新鲜”。
- 传统DNS不加密,DoH和DoT可以补上这个缺口。
- 想知道到底是谁在回答你的DNS查询,用
nslookup就能查。
各设备上加密连接的订阅方案和周期,可以在价格页面查看。