Tracert是路由跟踪程序,用于确定IP数据报访问目标所经过的路径。Tracert命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。
Tracert一般用来检测故障的位置,我们可以使用用tracertIP命令确定数据包在网络上的停止位置,来判断在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,方便检测网络中存在的问题。
通过向目标发送不同IP生存时间(TTL)值的“控制消息协议(ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL递减
1。数据包上的TTL减为0时,路由器应该将“ICMP已超时”的消息发回源系统。
Tracert先发送TTL为1的回应数据包,并在随后的每次发送过程将TTL递增
1,直到目标响应或TTL达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP已超时”的消息确定路由。某些路由器不经询问直接丢弃TTL过期的数据包,这在Tracert实用程序中看不到。
Tracert命令按顺序打印出返回“ICMP已超时”消息的路径中的近端路由器接口列表。如果使用-d选项,则Tracert实用程序不在每个IP地址上查询DNS。
不带选项的tracert命令将显示到达目标IP地址所经过的路径,并将IP地址解析为主机名一同显示。如下图所示,第一跳是网关地址,可以根据看到的主机名,判断我使用的是极路由。
不将地址解析成主机名,能够更快地显示路由器路径。与上图对比,路径是一样的,只是不将IP地址解析成主机名,速度更快。下图中红色框所示的主机名已消失。
指定跟踪的跃点数。以下的命令只显示5跳,可以看到命令只跟踪到5跳就结束了。一般来说,5跳之内可能还是本地省内链路。
tracerouteto10.26.0.115(10.26.0.115),maxhops:30,packetlength:40,pressCTRL_Ctobreak
“10.3.112.1”表示第一跳的网关地址。每一跳序号后的IPv4地址表示本跳的网关地址。
“10ms10ms10ms”表示发送的三个UDP报文和相应接收的ICMP超时报文或者ICMP端口不可达报文的时间差。缺省情况下,检测每跳时,发送的UDP探测数据包个数是三个。
当网络上出现路由环路时,使用Ping命令只能知道接收端出现超时错误,而Tracert命令能够很容易发现路由环路等潜在问题。在Tracert某地址时,多次出现相同的地址,即可认为出现了路由环路。
经过第N跳时,在一定时间内没有收到ICMP超时报文或者ICMP端口不可达报文。缺省情况下,等待响应报文的超时时间是ms。