术语表
Traceroute
Traceroute 通过发送 TTL 递增的探测包,列出数据包前往目的地途中经过的路由器及每一跳的延迟。
什么是 traceroute
Traceroute 是一种揭示数据包从一台主机到另一台所走路径的诊断工具。它依赖 IP 数据包的 TTL 字段:每台路由器把它减一,把它减到零的路由器丢弃数据包并回送 ICMP“超时”消息。Traceroute 先发送 TTL 为 1 的探测并记录哪台路由器应答,然后 TTL 2、TTL 3,依此类推,直到探测到达目的地。输出每跳一行,含路由器地址、反向 DNS 名称(如有)和每个探测的往返时间,通常每跳三个。
各实现发送的探测不同:Unix 上是发往高端口的 UDP 包,Windows(tracert)上是 ICMP echo 请求,旨在穿过防火墙的工具用 TCP SYN 包。机制相同。
阅读输出
- 沿路径延迟递增是正常的;两跳之间的大幅跳升标记一条长链路,常是海底光缆或跨洲。
- 星号表示超时内无回复。许多路由器限制或忽略 ICMP,所以只要后续跳有响应,中间几个沉默的跳不是问题。
- 主机名常编码位置和角色,例如机场代码或城市名,即使没有地图也能读懂路线。
- 从不应答的目的地可能仍然可达;有些主机丢弃除所提供服务之外的一切。
为什么重要
Traceroute 显示连接在哪里变慢或失败:您自己的网络内、运营商处、交换点,还是远端。对代理和 VPN 用户它还有第二个用途。到附近站点的跟踪先跑到另一个国家,揭示了隧道的出口位置;从服务器向您的代理的跟踪显示出口背后的跳,有时会暴露出租该地址的服务商。
如何检查
Traceroute 工具从我们的测量节点向任意地址或主机名运行跟踪,列出每一跳及其网络和位置。由于跟踪从我们的节点而非您的电脑开始,它显示的是从我们视角的路径;要看从您自己机器出发的路径,在本地运行 traceroute 或 tracert 并比较。Ping 工具给出端到端往返时间,没有逐跳细节。
常见误解
显示的跳是作出应答的路由器。非对称路由很常见,所以反方向可能走不同的路线,中间某一跳慢并不总是意味着那一跳有问题。
