首页/网络/抓包与流量分析速查/TTL 与缓存行为判读
应用层报文判读71 条

TTL 与缓存行为判读

响应中的 TTL 逐秒递减反映缓存时长:同一域名短时间多次查询都回源,说明缓存未生效(TTL 过短或解析器不缓存)。

TTL 能读出什么

响应中的每条记录都带一个存活时间,表示这条答复还能被缓存多久。解析器在有效期内直接用本地结果回答,取不到才回源。因此抓包时对比同一解析器对同一域名的两次返回,就能读出两种情况:第二次数值比第一次小说明命中了缓存;两次数值相同且间隔很近,则说明缓存没有生效,可能是存活时间设置过短,也可能是这条查询绕过了缓存路径。

基本信息

适用平台Wireshark / tshark,任何 DNS 流量
相关字段dns.resp.ttl、dns.cache_flush
观察方式同一解析器上同一域名的多次响应数值对比
取值含义数值为 0 表示不缓存,每次查询都必须回源

典型使用场景

  • 评估缓存是否生效,判断查询量是否可以下降
  • 排查切换记录后生效缓慢,确认旧值仍在缓存期内
  • 核算解析器负载,估算缓存命中能省下多少上游查询
  • 验证新增缓存层或调整存活时间后的实际效果
  • 分析页面加载中域名解析次数偏多的原因
  • 为变更窗口安排提供依据:存活时间越长,变更生效越慢

观察要点

观察要点
# 同一解析器第二次查询:数值应比第一次小(缓存剩余时间)
# 若两次数值相同且间隔很近:可能未缓存或直连查询
dns.resp.ttl < 60                         # 筛出极短存活时间的答复
dns.resp.ttl == 0                         # 完全不允许缓存
# 结合查询总量与业务请求量估算缓存命中率

观察项逐项读法

观察项含义判读方向
第二次数值变小命中缓存缓存正常工作,费用与延迟都可降
两次数值相同未命中缓存查是否直连查询或缓存被绕过
数值为 0禁止缓存每次都要回源,查询量随请求线性增长
数值极短快速生效优先利于变更,代价是回源频率升高
缓存命中率提升后抓包中的查询量会明显减少,这是评估优化收益最直接的证据。
按客户端网段返回不同地址的调度方案里,缓存所在位置会决定客户端最终拿到哪一组地址,排查时要确认缓存节点位置。

易错点

  • 只看单次响应就判断缓存状态:至少需要同一域名的两次观测才能对比出缓存是否生效
  • 把存活时间当作传播时间:它只约束缓存时长,实际生效还受客户端与本地缓存影响
  • 忽略极短取值的影响:设置为 0 或极小时回源频率会显著上升,解析器负载随之增加
  • 忽略调度与缓存的关系:同一域名可能因缓存位置不同而返回不同地址,误判为解析异常

数据来源与参考

  • RFC 1035(TTL)
  • RFC 2181
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌