DNS 工作原理深入浅出:域名到 IP 的奇幻旅程

17次阅读
没有评论
DNS 工作原理深入浅出:域名到 IP 的奇幻旅程
DNS — 互联网的分布式电话簿系统

你每天可能要进行数百次 DNS 查询却浑然不知——每次打开网站、每个 API 请求、每条消息推送,背后都有 DNS 在默默工作。本文带你深入了解这个互联网最重要的基础设施之一。

一、为什么需要 DNS?

计算机之间通信用的是 IP 地址 (如 142.250.190.46),但人类记不住这些数字。于是 DNS(Domain Name System)应运而生——它是一个 分布式的域名到 IP 地址的映射系统,相当于互联网的电话簿。

没有 DNS 的话,你得记住所有网站的 IP 地址才能上网。想象一下如果打电话前要先背对方的手机号有多痛苦 😅

二、域名层级结构

DNS 采用 树状的层级结构,以 www.example.com 为例:

.          ← 根域(Root)└── com     ← 顶级域(TLD)└── example   ← 二级域(由注册商管理)└── www    ← 子域(主机名 / 三级域)

每一级由不同的组织管理,这种分散式设计保证了系统的 可靠性 扩展性

💡

常见顶级域(TLD)分类:
• 通用顶级域:.com .org .net .dev .app
• 国家 / 地区代码顶级域:.cn(中国) .jp(日本) .uk(英国)
• 新通用顶级域:.xyz .top .shop 等 2000+ 种

三、完整的 DNS 解析过程

当你在浏览器输入 www.example.com 并回车:

Step 1:浏览器缓存检查

浏览器先查自己的 DNS 缓存。最近访问过的域名会在这里找到记录,命中则立即返回(耗时 < 1ms)。Chrome 可以在 chrome://net-internals/#dns 查看 DNS 缓存。

Step 2:操作系统缓存

浏览器没找到就问操作系统。Windows 的 DNS Client Service、Linux 的 nscd / systemd-resolved 都维护着 DNS 缓存。

Step 3:本地 DNS 服务器(递归解析器)

前面都没命中,请求就发到了你配置的本地 DNS 服务器(通常是运营商提供的,如 114.114.114.114 或公共 DNS 如 8.8.8.8)。

这个服务器会进行 递归查询——它会代替你去一层一层地问,直到拿到结果再返回给你。

Step 4-7:逐级权威查询

  1. 问根域名服务器:「com 域谁来管?」→ 返回 .com 名字服务器地址
  2. 问 TLD 服务器:「example.com 谁来管?」→ 返回 example.com 的 NS 记录
  3. 问权威名称服务器:「www.example.com 的 IP 是多少?」→ 返回 A 记录(IP 地址)
  4. 本地 DNS 缓存结果并返回 给你的浏览器
步骤 查询对象 返回信息 典型耗时
1 浏览器缓存 A 记录或 miss < 1ms
2 OS 缓存 A 记录或 miss < 1ms
3 本地 DNS(递归器) 开始递归查询 1~5ms
4 根域名服务器 TLD NS 地址 10~50ms
5 TLD 名称服务器 域 NS 地址 10~50ms
6 权威名称服务器 最终 A 记录 10~100ms
7 返回给浏览器 IP 地址 1~5ms

整个过程理想情况下在 50-200ms 内完成。

四、常见的 DNS 记录类型

DNS 不只是把域名映射到 IP,它支持多种记录类型:

记录类型 全称 作用 示例
A Address 域名 → IPv4 地址 example.com → 93.184.216.34
AAAA Address v6 域名 → IPv6 地址 example.com → 2606:2800:220:1:…
CNAME Canonical Name 域名别名 www.example.com → example.com
MX Mail Exchange 邮件服务器 example.com → mail.example.com
NS Name Server 指定 DNS 服务器 example.com → ns1.example.com
TXT Text 文本信息(SPF/DKIM/ 验证) v=spf1 include:_spf.google.com ~all
SOA Start of Authority 区域起始授权信息 包含序列号、刷新间隔等
⚠️

CNAME 的坑:CNAME 不能与其他记录共存(除了 DNSSEC 和 RRSIG)。所以一般建议只在子域名(如 www)上用 CNAME,根域名用 A 记录。

五、DNS 安全威胁

DNS 作为基础设施,也是攻击者的重点目标:

  • DNS 劫持(Spoofing):攻击者伪造 DNS 响应,把用户引导到恶意网站
  • DNS 缓存投毒:污染本地 DNS 服务器的缓存,让后续所有查询都返回错误结果
  • DNS 隧道:利用 DNS 查询通道外传敏感数据(常用于绕过防火墙)
  • DDoS 放大攻击:利用 DNS 的放大效应发起大规模 DDoS 攻击

防御方案包括:DNSSEC(签名验证)、DoH(DNS over HTTPS)和 DoT(DNS over TLS)加密 DNS 查询。

「DNS 的设计哲学是:没有中心化的控制点,任何地方出了问题都不会导致全网瘫痪。」— Paul Mockapetris,DNS 之父


写在最后

DNS 是互联网最成功的基础设施设计之一——分布式、容错、高效、可扩展。理解 DNS 的工作原理,不仅能帮你更快地定位网络问题,还能让你在设计高可用架构时有更全面的考量。

每一次域名解析都是一场精密协作

正文完
 0
评论(没有评论)