Larofly

DNS服务器工作原理:一次域名解析的完整过程

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

DNS解析过程:从浏览器到网站IP地址
DNS解析过程:从浏览器到网站IP地址

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地址。一个域名下有多种类型的记录,从中可以看出这个服务是怎么搭建的。

DNS记录的类型
DNS记录的类型

最常见的记录有:A和AAAA(网站的IPv4和IPv6地址)、CNAME(别名)、MX(邮件服务器)、TXT(各种说明性标记,比如域名所有权验证)。所以MX记录配错时,网站能正常打开,但域名邮箱收不到邮件——它们是同一个域名下互不相干的记录。

为什么第二次访问比第一次快?缓存与TTL

每条记录都有TTL(生存时间,单位是秒)。在TTL到期前,解析器直接从内存里回答,不再走完整的查询链。常见的TTL从5分钟到一天不等。

DNS缓存与TTL
DNS缓存与TTL

这也有副作用。网站搬到新的主机、换了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 就能查。

各设备上加密连接的订阅方案和周期,可以在价格页面查看。

免费试用 7 天,无需银行卡。两分钟完成设置。

在 Telegram 开始