traceroute, Linux 系统称为 tracepath,Windows 系统称为 tracert,是一种计算机网络工具。它可显示数据包在 IP 网络经过的路由器的 IP 地址。通过 traceroute 我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。
traceroute 有不同的实现版本:常规的 traceroute(基于 UDP 和 ICMP)和 tcptraceroute(基于 TCP)
常规的 traceroute 和 tcptraceroute 具有相同的工作原理:
- 发送一个 TTL(Time-To-Live) 相当小的包,TTL 经过每一跳时会递减。当它减为 0 时,数据包就被丢弃。
- 当 TTL 失效后,看哪个路由器返回一个带有表明的 ICMP “time exceeded”
- 如果返回的路由器就是最终的目的地,停止 trace
- 否则,TTL 加 1 并返回到步骤 1
两者的不同点:
- 常规的 traceroute 使用 UDP 包或 ICMP “Echo” 包,这两种包都可能会被防火墙拦截。