Traceroute的两种实现方式

1.简述

Traceroute 是一种网络诊断工具,功能是查看路由路径上的所有节点。不过各个系统的实现方式有所不同

2.ICMP 实现 Traceroute

众所周知,ping 使用的就是 ICMP,所以直觉上来说,只要控制 ping 的 TTL 值,我们就可以实现 Traceroute 了。Windows 就采用了这种实现方式。

不同的 TTL 值,会让不同的节点返回 ICMP Time Exceeded 错误,这样我们就可以知道路由路径上的所有节点了。

3.UDP 实现 Traceroute

另一种方式就是通过 UDP,不使用 TCP 的原因很简单,TCP 是需要建立连接的,而不是每个节点都可以建立连接。

UDP 的实现方式是,发送一系列 TTL 值递增的 UDP 数据包,每个数据包都是发送到目标主机的同一个端口,当 TTL 值变为 0 时,中间节点会返回 ICMP Time Exceeded 错误,反之目标主机会返回 ICMP Port Unreachable 错误,这样我们就可以知道路由路径上的所有节点了。

这种实现方式被 Linux 和 MacOS 采用。


Traceroute的两种实现方式
https://nacldragon.top/2023/traceroute-icmp-udp/
作者
NaCl
发布于
2023年6月19日
许可协议