DNS 与域名系统

人记域名(www.example.com),机器记 IP 地址,DNS(域名系统)就是两者之间的"电话簿",负责把域名解析成 IP。它是每次网络访问的第一步,也是面试题"输入网址后发生什么"的第一环,同时支撑负载均衡与 CDN 调度。

DNS 解决什么问题

  • 免记数字 IP:把 www.example.com 解析为 93.184.216.34 这样的地址。
  • 负载均衡:一个域名配置多个 IP,服务器轮流返回,实现流量分发。
  • 灵活迁移:更换机房或服务器只需改 DNS 记录,用户无感知。

域名的层次结构

域名用点分隔,从右往左层级逐级细化,形成一棵倒置的树:

        .            ← 根域
       com           ← 顶级域(TLD)
     example         ← 二级域(注册者持有)
        └── www      ← 主机/子域
完整域名: www.example.com.

顶级域分两类:通用顶级域(com、org、net)与国家/地区顶级域(cn、jp 等)。

DNS 服务器体系

服务器职责
根域名服务器只记录各顶级域服务器的地址,全球分布多组镜像
顶级域服务器管理 com、cn 等顶级域下各权威服务器的地址
权威 DNS 服务器真正保存某域名记录,返回最终解析结果
本地 DNS用户侧递归入口,如运营商或公共 DNS(8.8.8.8)

解析过程:递归与迭代

用户发起查询后,本地 DNS 负责递归查询,而各级服务器之间是迭代查询

客户端 ──递归──> 本地DNS
  本地DNS ──查询──> 根服务器 ──答: 去查 com 顶级域──> 本地DNS
  本地DNS ──查询──> com顶级域 ──答: 去查 example 的权威──> 本地DNS
  本地DNS ──查询──> 权威DNS ──答: www.example.com = 93.184.216.34
  本地DNS ──递归──> 客户端: 返回 IP, 并缓存结果

一次完整解析通常有多次往返,命中缓存则可大大缩短时间。

常用记录类型

记录类型作用
A域名 → IPv4 地址
AAAA域名 → IPv6 地址
CNAME域名 → 另一个域名(别名),常指向 CDN 域名
MX指定邮件服务器,附优先级
NS指定该域名由哪个权威服务器解析
TXT任意文本,常用于域名归属验证与 SPF 反垃圾邮件

配置 CDN 的常见做法:把业务域名 CNAME 到 CDN 厂商提供的域名,由厂商按地域智能调度到就近节点。

缓存与 TTL

解析结果会被本地 DNS、浏览器、操作系统逐级缓存,每条记录带 TTL(生存时间):

  • TTL 短:修改后生效快,但权威服务器查询压力大;
  • TTL 长:解析快、压力小,但域名迁移后旧 IP 会在缓存中滞留。

排查经验:改了 DNS 不生效,先看是否命中本地或运营商缓存(可用 ipconfig /flushdnsnslookup 指定公共 DNS 验证)。

小结:DNS 是一棵分布式域名树加一套缓存体系。掌握"域名层级、递归与迭代查询、A/CNAME/MX 等记录、TTL 缓存"四个要点,再动手敲几次 nslookup/dig,域名解析问题就不再神秘。

笔记加载中…