TTL缩写在不同场景含义不一样,很容易混淆,最常用两类:IP数据包生存时间,DNS记录缓存时间。两者缩写同为TTL,但作用完全不同。
IP的TTL保存在IP数据包头部,属于8位字段,最大值255。作用防止数据包在网络无限循环。数据包每经过一台路由器,TTL数值减1,数值归零路由器丢弃数据包,返回ICMP超时消息。没有这个机制,路由环路产生之后数据包持续转发,占用全部带宽。
不同操作系统默认TTL初始值不一样,这个差异常用来粗略识别操作系统。Linux以及大部分Unix系统默认初始值64,Windows默认128,部分老旧路由器设备使用255。ping目标地址返回TTL,是对方发出数据包经过路由递减之后剩余数值。ping百度返回TTL52,粗略判断对方是Linux系统,中途经过十几跳。该推断只能作为参考,中间网络设备可以修改TTL,服务端也可以手动调整初始TTL。

IP TTL不存在固定标准正常值,协议层面0到255全部合法。公网地址ping返回TTL大多落在30至128区间。同城同运营商剩余TTL可能一百多,跨省跨网降至50左右,跨国链路经过十几二十跳,剩余四十多也属于正常。TTL本身没有好坏之分,反映路由跳数和源主机初始TTL,不属于健康检测指标。
有一种情况需要留意。ping同一个目标返回TTL数值波动大,这次120下次50,代表访问路由路径发生变化,大概率负载均衡或者路由抖动。TTL数值极低,只剩个位数,说明链路很长或者网络存在异常。抓包查看本机发出数据包,TTL应该是系统初始设定值,数值被篡改代表中间设备修改数据包。
DNS的TTL和IP TTL相互独立,含义是DNS记录缓存存活时长,单位秒。域名后台修改解析配置,会看到TTL选项,常见取值600、3600、86400。600等于十分钟,3600一小时,86400一天。数值控制递归DNS服务器、本地客户端缓存这条记录多久。TTL设置偏小,解析修改生效速度快,但DNS查询请求变多,解析服务压力上升。TTL设置偏大,查询请求少,修改解析之后全球生效等待时间久。
DNS TTL没有强制标准。域名默认一般3600或者7200,也就是1到2小时。服务器迁移、更换IP之前,提前一天下调TTL到300甚至60,等待旧缓存过期再修改解析,新记录快速生效。迁移完成调回原有数值,运维人员称这个操作为降低TTL预热。
CDN场景也有TTL,指CDN边缘节点缓存源站内容时长。这个TTL一般通过源站Cache-Control响应头或者CDN控制台配置。静态资源TTL可以设置较长,几天甚至一个月;动态内容TTL缩短或者关闭缓存。和DNS TTL同名,实际作用无关,沟通时容易混淆。
所以有人询问TTL正常范围,先要区分是哪一类TTL。IP TTL看路由路径;DNS TTL看解析变更节奏;CDN TTL看内容更新频率。三类TTL管控对象不一样,混在一起讨论范围没有意义。