首页/网络/抓包与流量分析速查/用 TTL 推断对端与跳数
TCP 流分析82 条

用 TTL 推断对端与跳数

初始 TTL 常见 64/128/255,收到包的 TTL 与初始值之差≈经过跳数;TTL 异常(同对端忽大忽小)提示路径变化或伪造,辅助来源分析。

用 TTL 推断什么

IP 头里的 TTL(生存时间)每经过一台三层设备就减一,减到零就丢弃并回 ICMP 超时。操作系统发第一个包时会填一个初始值,常见的是 64、128、255,因此用初始值减去抓到的值,可以粗略估算这个包从发送端到你这里经过了几跳。它不能当作定位手段,但能帮你判断来源是否符合预期、路径是否发生变化。

基本信息

抓包字段Wireshark 中为 ip.ttl;tcpdump -v 输出中显示为 ttl
常见初始值Linux 与多数 Unix 为 64,Windows 为 128,部分网络设备为 255
换算方式跳数约等于初始值减实测值,取最接近的常见初始值反推
抓包点修正换算结果是相对抓包点的跳数,不是相对你的工位
影响因素中间设备可能重置或改写 TTL,代理与负载均衡常见
适用范围仅作辅助判断,不作为定责依据

典型使用场景

  • 来源核查:判断某个包的发送端是真客户端还是绕了远路的代理
  • 路径变化:同一对端前后 TTL 明显不同,提示链路或出口发生切换
  • 多路径识别:同一对端 TTL 小范围浮动,常见于等价多路径转发环境
  • 异常检测:内网主机出现 TTL 很小或很大的包,提示来源与预期不符
  • 远端探测:粗略估计跨了几层网络,辅助理解延迟构成

查看与统计

查看与统计
# 看某个来源的 TTL 分布, 判断路径是否稳定
tshark -r a.pcap -Y 'ip.src == 10.0.0.9' -T fields -e ip.ttl | sort | uniq -c
# 抓包时直接看 TTL
tcpdump -n -v -c 20 -i eth0 'host 10.0.0.9'
# 结合两侧地址确认方向与来源
tshark -r a.pcap -Y 'ip.src == 10.0.0.9' -T fields -e ip.src -e ip.dst -e ip.ttl | head -20

常见初始值与判读

初始值常见来源判读要点
64Linux、多数 Unix、网络设备最主流, 实测 62 表示约 2 跳
128Windows 主机实测 126 表示约 2 跳, 视具体系统
255部分网络设备与老系统较少见, 遇到时先确认设备型号
同值多重同一对端出现多个值多路径或多来源, 需结合五元组
值极小本地链路协议或刚发出的包常见于同一网段内的直连通信
换算前先确认抓包点位置:如果在核心交换机的镜像口抓包,得到的是相对该交换机的跳数,与你所在办公网的跳数不同,两者混用会得出矛盾结论。
等价多路径环境下同一对端的 TTL 在小范围内浮动属于正常现象,只有跨跳数的明显变化才值得进一步核对路由。

易错点

  • 把推算出的跳数当成实际拓扑距离上报:中间设备的隧道、代理或 TTL 重置都会让数字偏离真实路径
  • 用办公网基线去解释核心镜像口的抓包结果,抓包点不同导致跳数含义完全不同,结论相互矛盾
  • 仅凭 TTL 就判定来源伪造:TTL 可被伪造也可被中间设备重置,必须结合五元组、时序与其他层证据
  • 把等价多路径造成的正常 TTL 浮动当成异常去排查,浪费排查时间,应先确认路由与转发模式

数据来源与参考

  • RFC 791(TTL)
  • Wireshark User's Guide
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌