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/