核心 · Key Idea
一句话:traceroute 通过逐步增大 TTL 让沿途每个路由器返回「TTL 超时」错误,从而拼出包从你到目标走过的整条路径与每一跳延迟。
是什么#
$ traceroute -n 8.8.8.8
1 192.168.1.1 1.2 ms 1.0 ms 1.1 ms
2 100.64.0.1 8.5 ms 8.2 ms 8.4 ms
3 202.97.x.x 12.0 ms 11.8 ms 12.1 ms
...
9 8.8.8.8 11.9 ms 12.0 ms 11.8 ms
每行 = 一跳路由器。三列 RTT 是连发三次取样。
怎么工作#
每一跳报告耗时,组合起来就能看出慢在 / 丢在哪一段。
关键概念#
TTLTime To Live
IP 头部里的字段,每经过一跳 -1,到 0 路由器丢包并回报。
TTL ExceededICMP Type 11
「我把它丢了」消息,是 traceroute 拿到中间路由地址的关键。
UDP / ICMP / TCP traceroute三种探测方式
Linux 默认 UDP 高端口;macOS/Windows 默认 ICMP;-T 走 TCP(穿越防火墙最稳)。
* * *星号跳
该跳不回 ICMP(防火墙过滤),不一定代表网络坏。
MPLS 隐藏MPLS Hop
运营商骨干网常用 MPLS,部分跳被隐藏不可见。
实操要点#
traceroute -n host:不解析域名,更快。traceroute -T -p 443 host:用 TCP 443,穿过 ICMP 屏蔽最常用。tcptraceroute:另一个 TCP traceroute 实现。mtr host:traceroute + ping 的结合,实时刷新每跳的丢包 / 抖动。生产排查首选。- 半路星号正常:很多核心路由器配置不返回 ICMP,看到
* * *不必慌;只要终点能到、整体延迟合理即可。 - 结果别只看一次:网络抖动是常态,多跑几次 / 用 mtr 长时间观察才有意义。
易混点#
traceroute
跑一次给出快照路径。
单次结果有偶然性。
单次结果有偶然性。
mtr
持续探测,逐跳实时显示丢包 / 抖动。
更适合定位 **不稳定** 的链路。
更适合定位 **不稳定** 的链路。