折页
← 返回笔记目录
Network / 02

一次域名解析,
经过了哪些地方?

地址栏里的一行名字,背后是一套分工明确的查询系统。

1. DNS 负责找到记录

DNS 让客户端按域名查询对应的记录。找到 IP 后,建立连接、完成 TLS 握手和取得网页是后续步骤。因此,“解析成功”和“网站可用”需要分别确认。

2. 缓存决定查询走多远

应用、本机和递归解析器都可能缓存结果。缓存没有答案时,递归解析器可以从根服务器开始,沿着域名层级找到负责该区域的权威服务器。它取得记录后,再把结果返回客户端。

可以把两个角色这样区分:递归解析器帮客户端查找;权威服务器提供其负责区域的记录。一次请求不一定经过所有层级,已有缓存时通常可以更快得到结果。

3. 先确认查的是哪一种记录

类型用途
AIPv4 地址
AAAAIPv6 地址
CNAME指向另一个域名的别名
TXT文本信息,常用于域名验证等场景

检查时应写清域名、记录类型、所用解析器和查询时间。两个结果不同,不一定是谁配置错了,也可能查询了不同的类型,或使用了不同的缓存。

4. 修改记录,不会瞬间更新所有缓存

TTL 指定记录可缓存的时间。已有缓存可能继续返回旧值,直到需要重新查询。排查时,先确认权威侧已经更新,再检查客户端取得了什么结果;只刷新浏览器页面,未必会触发新的 DNS 查询。

记录正确以后,还应单独确认网络连接与 HTTPS。把不同层次的问题分开,可以避免反复修改同一条 DNS 记录。

继续阅读

RFC 1034:DNS 的概念与结构 ↗ · RFC 1035:记录与实现细节 ↗

← 上一篇:Linux 服务下一篇:HTTPS 证书续期 ↗