1、Tracert介绍
Tracert是测试报文从发送端到目的地所经过的路由的办法。它可以直观展示报文在转发的时候所经过的路径。Tracert基于ICMP协议来达成的。当互联网出现问题时,用户可以用Tracert确定出现问题的互联网节点。
2、Tracert达成过程

图1 Tracert的步骤
Tracert的达成如上图1所示,Tracert的工作步骤为:
1、源端(SwitchA)向目的端(日志主机)发送一个UDP报文,TTL值为1,目的UDP端口号是大于30000的一个数,由于在大部分状况下,大于30000的UDP端口号是任何一个应用程序都不可能用的端口号。
2、第一跳(SwitchB)收到源端发出的UDP报文后,看出报文的目的IP地址不是本机IP地址,将TTL值减1后,看出TTL值等于0,则遗弃报文并向源端发送一个ICMP超时(Time Exceeded)报文(该报文中含有第一跳的IP地址10.1.1.2),如此源端就得到了SwitchB的地址。
3、源端收到SwitchB的ICMP超时报文后,第三向目的端发送一个UDP报文,TTL值为2。
4、第二跳(SwitchC)收到源端发出的UDP报文后,回话一个ICMP超时报文,如此源端就得到了SwitchC的地址(10.1.2.2)。
5、以上过程不断进行,直到目的端收到源端发送的UDP报文后,看出目的IP地址是本机IP地址,则处置此报文。依据报文中的目的UDP端口号探寻占用此端口号的上层协议,因目的端没应用程序用该UDP端口号,则向源端返回一个ICMP端口不可达(Destination Unreachable)报文(该报文含有目的端的IP地址10.1.3.2)。
6、源端收到ICMP端口不可达报文后,看出UDP报文已经到达目的端,则停止Tracert程序,从而得到数据报文从源端到目的端所历程的路径(10.1.1.2;10.1.2.2;10.1.3.2)。
3、华为设施支持的Tracert命令
华为设施《命令参考》手册提供了详细的命令参数和用法。这里只列举了常见的参数,并对参数进行讲解说明。tracert [ -a source-ip-address | -f first-ttl | -m max-ttl | -p port | -q nqueries | -vpn-instance vpn-instance-name | -w timeout ] *host
-a:
指定报文的源地址。假如不指定源地址,将使用出接口的IP地址作为Tracert报文发送的源地址。
-f:
指定初始TTL。当经过的跳数小于此参数值,因为TTL字段的值大于0,经过的这几个节点不会返回ICMP超时报文给源主机。假如已经设置了max-ttl参数值,first-ttl的取值需要小于max-ttl。
-m:
指定最大TTL。一般情况下,max-ttl的值被设置为经过站点的跳数。假如已经设置了first-ttl参数值,max-ttl的取值需要大于first-ttl。缺省状况下,最大TTL为30。
-p:
指定目的主机的UDP端口号。 假如不指定目的主机的UDP端口号,Tracert命令用大于32768的随机的端口作为目的设施的接收报文端口。 假如指定目的UDP端口号,需要防止使用对端已经开启的端口号,不然会致使Tracert失败。
-q:
指定每次发送的UDP探测数据报文的个数。当互联网水平不高时,可以增加发送探测数据报文的数目,保证探测报文可以到达目的节点。缺省状况下,每次发送三个UDP探测数据报文。
-w:
等待响应报文的超时时间。当发送数据报文到达某网关超时,则输出 * 。假如互联网水平不高且速度非常慢,建议增加发送数据报文的超时时间。缺省超时时间为5000毫秒。
host:
可以是IP地址或域名,若是域名会第一进行DNS分析,并显示分析后的IP地址。
4、电脑支持的Tracert命令
电脑上的Tracert功能与操作系统有关,这里以Windows操作系统为例。这里只列举了常见的参数,并对参数进行讲解说明。tracert [ -d | -h maximum_hops | -j host-list | -w timeout ] *host
-d:不分析主机名。
-h:指定最大TTL的数值。
-j:设定松散源地址路由列表。
-w:用于设置UDP报文的超时时间,单位为毫秒。
host:指定目的主机的域名或IP地址。
5、Tracert示例
tracert 10.26.0.115
traceroute to 10.26.0.115(10.26.0.115), max hops: 30 ,packet length: 40,press CTRL_C to break
1 10.3.112.1 10 ms 10 ms 10 ms
2 10.32.216.1 19 ms 19 ms 19 ms
4 10.32.136.23 19 ms 39 ms 39 ms
5 * * *
6 * * *
7 * * *
8 10.26.0.115 69 ms 79 ms 79 ms
表1 tracert命令输出信息描述
项目
描述
traceroute to
到某个目的地址的tracert测试。
max hops
最大TTL数。
packet length
发送的报文长度。
1 10.3.112.1 10 ms 10 ms 10 ms
1表示第一跳网关。每增加一跳,序号递增。缺省状况下,最大跳数是30跳。
10.3.112.1表示第一跳的网关地址。每一跳序号后的IPv4地址表示本跳的网关地址。
10 ms 10 ms 10 ms表示发送的三个UDP报文和相应接收的ICMP超时报文或者ICMP端口不可达报文的时间差。缺省状况下,测试每跳时,发送的UDP探测数据包个数是三个。
当互联网上出现路由环路时,用Ping命令只能了解接收端出现超时错误,而Tracert命令可以比较容易发现路由环路等潜在问题。在Tracert某地址时,多次出现相同的地址,即可觉得出现了路由环路。
*
经过第N跳时,在肯定时间内没收到ICMP超时报文或者ICMP端口不可达报文。缺省状况下,等待响应报文的超时时间是5000ms。





