Tracerouter程序中TTL exceed 后返回ICMP报文,返回的报文中TTL值有何含义

TimeToLive,是说包在网络中可以存活的时间。最初设计的时候,网关设备处理完数据包之后,经过了多少秒,就将TTL减去多少,这样经过TTL秒之后,这个数据包就不能在网络中存活了,这样就防止网络成环之后数据包在其中来回传输永远不停止的情况出现。实际上设备处理一个数据包的时间远小于一秒,所以一般是经过一个设备的一次转发就减1,这样TTL实际代表的是最多可以经过的三层转发次数,每一跳TTL会减1,减到0,就会返回一个ICMP消息到源地址(如果设备允许的话)Traceroute利用的就是这个特性,发出TTL很小的包,这样在到达目的之前包的TTL就会减到0,减到0那一条的设备会返回ICMP消息,于是就知道了这一跳的地址。依次增加发送包最初的TTL,就可以扩展包的跳数,直到到达目的,于是就知道了到达目的中途经过的设备数量和相应的地址。
■网友
Traceroute Using an IP Option或者《TCP/IP Illustrated》卷一第八章。


    推荐阅读