您的 IPv4 地址:
操作系统:
运营商:

Traceroute 详解:跳数、超时与网络路由

Traceroute 是一种诊断工具,用来查看数据包通往目的地时可能经过的路径。它会列出有响应的各跳,以及探测包收到响应所花的时间。一次跟踪结果只是特定网络条件下的快照,既不是互联网的永久地图,也不能证明每个应用数据包都走同一条路。

traceroute 如何发现各跳

该程序发送探测包时,会逐步增大跳数限制:IPv4 中是 TTL,IPv6 中是 Hop Limit。当某台路由器把这个值减到零时,它可能会返回一条 ICMP 超时(Time Exceeded)响应。如此反复,就能得出正向路径上依次作出响应的设备。

视操作系统和选项而定,探测包可能使用 UDP、ICMP 或 TCP。防火墙和网络策略对它们的处理方式各不相同,因此换一种探测类型可能会得到不同的跟踪结果。有时,向服务端口发送 TCP 探测包,比默认的 UDP 探测包更能说明问题。

解读时间与星号

每一行代表一个跳数编号;同一行中的几个时间分别对应不同的探测包,而不是一次连续的测量。星号通常表示在超时之前没有收到响应。路由器可能照常转发普通流量,只是不回应或限制了诊断消息的速率。

某个中间节点的响应时间偏高,并不一定意味着那里是瓶颈。请看后续各跳和最终目的地是否也出现了类似的增长。回程流量可能走另一条路由,负载均衡也可能让探测包经由不同的正向路径。这些因素都使得单次跟踪结果很容易被误读。

实用的排障步骤

在 Linux 和许多 macOS 系统上,可以试试 traceroute example.com;在 Windows 上则使用 tracert example.com。记下目的地、所选协议、时间以及所用的网络。多运行几次跟踪,并与直接的应用测试结果进行比较。请只针对您自己管理或获准诊断的域名进行测试。

如果所有探测都在某一跳停止,但网站可以正常访问,那么缺失的响应只是诊断手段本身的局限。如果目的地也无法访问,请比较从其他网络得到的跟踪结果,并检查 DNS、防火墙规则和服务本身。把简明的结果提供给您的运营商;仅凭一次跟踪无法认定是谁造成了故障。

请保存完整的输出,而不要只保留最后一个有响应的节点:中间节点没有回复但最终目的地成功响应,与目的地始终没有响应,反映的是截然不同的情况。

BGP、Anycast 与路由变化

Traceroute 观察的是特定探测包的路径,而不是直接观察 BGP 策略。对等互联的变化可能改变跳的顺序,而 Anycast 可能让同一个 IP 指向另一个站点。请参阅 traceroute 的工作原理、BGP 与 ASN 以及 Anycast。