traceroute为什么ICMP ECHO工作

时间:2017-11-04 17:29:08

标签: networking icmp traceroute

我对traceroute的工作原理感到困惑,我在网上看到,Traceroute在IP头中使用ICMP消息和TTL字段进行操作,并传输小TTL值的数据包。

我做了

测试1:traceroute<"域">

traceroute永远无法映射最终目的地

测试2:traceroute -I -IP icmp<"域">

最终的目的地已被映射但是这一切的混乱是为什么?我认为Traceroute已经使用了ICMP。

2 个答案:

答案 0 :(得分:0)

不同的tracroute实现使用不同的数据包。通常,UDP或ICMP,尽管也存在TCP traceroute。

你可能正在使用一些UDP实现。

答案 1 :(得分:0)

Traceroute通过利用称为生存时间(TTL)的功能来工作,TTL是数据包在停止重新传输之前可以采用的跳数。对于数据包遍历的每一跳,TTL递减1。当TTL达到零时,它达到零的路由器将向源发送一个ICMP Time Exceeded数据包,而不是重新发送数据包。然后,源(即您)将从原始数据包的TTL达到零的路由器接收此数据包,因此您将知道数据包失败的IP地址。 Traceroute的工作原理是通过连续更大的TTL向目的地发送数据包。这样,您将在您和目标之间的路径上获得每跳一次的ICMP Time Exceeded数据包,因为每个跃点的数据包都会达到TTL为0。 现在请注意,我们在这里没有提到您用来发送数据包的协议。 TTL位于IP头中,它封装了您正在使用的协议的数据包。因此,您可以在tracerouting时使用任何协议。

至于为什么traceroute hops解析某些协议而不是其他协议,它可能是防火墙以及你正在遍历的路由器上的策略。某些路由器要么取消对ICMP的响应优先级,要么禁用ICMP。有一些原因导致某些协议在特定情况下比其他协议更好地工作。