2. DNS 基础回顾:协议栈、递归与迭代查询、常见记录类型

在深入租户拓扑与 DNS 延迟的关联之前,必须重新夯实 DNS 的核心机制。DNS 不仅是“域名转 IP”的简单映射,它涉及一套完整的分布式协议栈、两种查询模式以及多种资源记录。本节将逐一拆解这些基础,为后续延迟分析提供精确的术语和模型支撑。

2.1 DNS 协议栈与报文结构

DNS 运行在应用层,默认使用 UDP 端口 53;当响应超过 512 字节(或启用 EDNS0 后超过 1500 字节)时,自动切换至 TCP 端口 53。其报文格式固定,分为 Header、Question、Answer、Authority、Additional 五个部分。

字段 长度(位) 说明
Transaction ID 16 请求与响应匹配标识
Flags 16 QR/Opcode/AA/TC/RD/RA 等标志位
Questions 16 问题区记录数
Answer RRs 16 应答区资源记录数
Authority RRs 16 权威区资源记录数
Additional RRs 16 附加区资源记录数
延迟关键点: Transaction ID 与 Flags 中的 RD(递归期望)位直接决定了查询路径。如果 RD=1,客户端期望递归解析;如果 RD=0,则只期望迭代指引。错误的 RD 设置会导致额外的往返,增加租户 DNS 延迟。
DNS 报文结构 DNS 报文结构(UDP/TCP 载荷) Header(12 字节) Transaction ID Flags Questions Answer RRs Authority Additional Question(查询名 + QType + QClass) Answer(资源记录列表) Authority(权威 NS 记录) Additional(A/AAAA 胶水记录)

2.2 递归查询与迭代查询

这两种查询模式决定了 DNS 解析路径的长度,直接影响租户感知到的延迟。递归查询将全部解析工作交给上游,迭代查询则逐级返回指引,由客户端自行完成后续查询。

特性 递归查询 迭代查询
发起方 客户端 → 递归解析器 递归解析器 → 权威服务器
工作模式 解析器负责完成全部查询,返回最终结果 服务器返回下一级 NS 指引,不返回最终结果
延迟特征 客户端仅一次 RTT,但解析器可能多次迭代 每次迭代增加一次 RTT
缓存效果 解析器可缓存中间结果,加速后续查询 客户端通常不缓存 NS 指引
典型场景 终端用户 DNS 请求 递归解析器与根/顶级域/权威服务器之间
延迟陷阱: 在租户拓扑中,如果递归解析器部署位置不当(例如跨地域),即使客户端到解析器只有 1ms,解析器到权威服务器可能高达 100ms。此时应优先优化递归解析器的位置,而非客户端配置。
递归与迭代查询流程 递归查询 vs 迭代查询 递归查询 客户端 请求 example.com 递归解析器 迭代至权威 权威服务器 返回 A 记录 返回最终结果 迭代查询 递归解析器 1. 查询 .com NS 根服务器 返回 .com NS 2. 查询 example.com NS 顶级域服务器 返回 example.com NS 3. 查询 A 记录 权威服务器 返回 A 记录 递归查询:客户端 1 次 RTT;迭代查询:递归解析器最多 3 次 RTT(根→TLD→权威)

2.3 常见 DNS 记录类型

资源记录(Resource Record, RR)是 DNS 应答的核心载体。在租户拓扑延迟诊断中,最常涉及的记录类型包括 A、AAAA、CNAME、NS,以及辅助诊断的 SOA 和 PTR。

记录类型 用途 典型 TTL 延迟影响
A 域名 → IPv4 地址 60–3600s TTL 过短增加查询频率,过长导致故障切换慢
AAAA 域名 → IPv6 地址 60–3600s 双栈场景下 AAAA 查询超时可能增加延迟
CNAME 域名别名 → 规范名 60–86400s 增加一次额外查询,链路过长时延迟叠加
NS 域名 → 权威名称服务器 3600–86400s NS 记录缓存过期导致重新迭代,增加解析路径
SOA 区域权威信息与序列号 3600–86400s 用于区域传输与缓存刷新判断
PTR IP 地址 → 域名(反向解析) 3600–86400s 日志分析中用于确认 IP 归属,延迟敏感度低
实战要点: 在租户拓扑中,CNAME 链是隐藏的延迟放大器。例如 www.example.com CNAME 到 cdn.example.net,再 CNAME 到 lb.example.org,每次 CNAME 都触发一次新的 A/AAAA 查询。建议使用 dig +trace 或 drill 工具展开完整 CNAME 链,评估总查询次数。

2.4 记录类型与查询路径的关联

不同类型的记录在查询路径中出现的阶段不同。NS 记录出现在迭代指引阶段,A/AAAA 记录出现在最终应答阶段,CNAME 记录则可能出现在任意阶段并重定向查询。理解这种关联有助于快速定位延迟瓶颈。

  • NS 记录:决定下一级权威服务器地址,NS 响应延迟直接影响迭代速度。
  • A/AAAA 记录:最终目标,TTL 控制缓存命中率,低 TTL 导致频繁回源。
  • CNAME 记录:引入额外查询,且 CNAME 的 TTL 通常独立于目标记录,容易造成缓存不一致。
  • SOA 记录:区域传输的基础,SOA 中的 Refresh/Retry/Expire 参数影响从服务器同步延迟。
诊断命令示例:
# 查看完整 CNAME 链与 A 记录
dig +short www.example.com

# 查看 NS 记录与迭代路径
dig +trace example.com

# 查看 SOA 参数
dig example.com SOA

# 查看 PTR 反向解析
dig -x 192.0.2.1