DNS 解析是把域名翻译成 IP 地址的过程,典型查询顺序是多级缓存 + 递归/迭代查询

  1. 浏览器缓存:先看浏览器自身的 DNS 缓存。
  2. 系统缓存:查操作系统缓存(如 hosts 文件、系统 DNS 缓存)。
  3. 本地域名服务器(LDNS):一般指向运营商或公共 DNS(如 8.8.8.8),它代替客户端做递归查询——要么给出最终答案,要么返回错误。
  4. LDNS 没有缓存时,自己进行迭代查询:先问根服务器(返回 .com 等顶级域服务器地址)→ 问顶级域(TLD)服务器(返回该域名的权威服务器地址)→ 问权威服务器(拿到最终的 A/AAAA 记录)。
  5. 结果按 TTL 逐级缓存,返回给客户端。

易错点:递归与迭代的主体不同——客户端到 LDNS 是递归,LDNS 到根/TLD/权威是迭代;一次"DNS 查询慢"大多发生在首次无缓存时,有缓存后接近零成本。

追问方向:DNS 用 UDP 还是 TCP(常规查询 UDP 53,响应过大或区域传送用 TCP)、DNS 劫持与污染、CDN 如何利用 DNS 做智能调度、HTTPDNS 的动机。