路由跟踪程序(tracerouter)也是ICMP协议的一个常见应用。Traceroute程序被用来发现前往目的节点的路径上的所有路由器。该程序简单地发送一系列的数据报并等待每一个响应:在发送第一个数据报之前,将它的生存时间置为1。第一个路由器收到这一数据报会将生存时间减1,显然就会丢弃这一数据报,并发回一个ICMP超时报文。由于ICMP报文是通过IP数据报传送的,因此路由跟踪可以从中取出IP源地址,也就是去往目的地的路径上的第一个路由器的地址。得到第一个路由器的地址之后,路由跟踪会发送一个生存时间为2的数据报。第一个路由器将计时器减1并转发这一数据报,第二个路由器会丢弃这一数据报并发回一个超时报文。类似的,一旦跟踪路由程序收到距离为2的路由器发来的超时报文,它就发送生存时间为3的数据报,然后是4,等等。
|
|