traceroute是路由跟踪实用程序,用于确定IP数据报访问目标所采取的路径。
traceroute命令用IP生存时间 (TTL) 字段和ICMP错误消息来确定从一个主机到网络上其它主机的路由。
traceroute是利用ICMP和TTL进行工作的。首先,traceroute会发出TTL为1的ICMP数据报(包含40字节数据,包括源地址、目标地址和发出的时间标签)。当到达路径上的第一个路由器时,路由器会将TTL减1,此时TTL为0,该路由器会将此数据报丢弃,并返回一个超时回应数据报(包括数据报的源地址、内容和路由器的IP地址)。当traceroute收到该数据报时,它便获得了这个路径上的第一个路由器,接着traceroute再发送另一个TTL为2 的数据报,第一个路由器会将此数据报转发给第二个路由器,而第二个路由器收到数据报时,TTL为0。第二个路由器便会返回一个超时回应数据报,从而traceroute便发现了第二个路由器。traceroute每次发出数据报时便将TTL加1,来发现下一个路由器。这个动作一直重复,直到到达目的地或者确定目标主机不可到达为止。当数据报到达目的地后,目标主机并不会返回超时回应数据报。traceroute在发送数据报时,会选择一个一般应用程序不会使用的号码(3000以上)来作为接收端口号,所以当到达目的地后,目标主机会返回一个ICMP port unreachable(端口不可到达)的消息。当traceroute收到这个消息后,就知道目的地已经到达了。
转载于:https://blog.51cto.com/352598/1419937