跟踪路由(Tracert)是路由跟踪实用程序,用于确定IP数据包访问目标所采取的路径,其工作原理是通过向目标发送不同IP生存时间(TTL)值的“控制消息协议(ICMP)”回应数据包,跟踪路由诊断程序确定到目标所采取的路由。实际应用中可以使用跟踪路由命令确定数据包在网络上的停止位置。
通过向目标发送不同IP生存时间(TTL)值的“控制消息协议(ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的TTL递减
1。数据包上的TTL减为0时,路由器应该将“ICMP已超时”的消息发回源系统。Tracert先发送TTL为1的回应数据包,并在随后的每次发送过程将TTL递增
1,直到目标响应或TTL达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP已超时”的消息确定路由。某些路由器不经询问直接丢弃TTL过期的数据包,这在Tracert实用程序中看不到。
tracert为tracerouter的缩写。按顺序打印出返回“ICMP已超时”消息的路径中的近端路由器接口列表。如果使用-d选项,则Tracert实用程序不在每个IP地址上查询DNS。在下例中,数据包必须通过两个路由器(10.0.0.1和192.168.0.1)才能到达主机172.16.0.99。主机的默认网关是10.0.0.1,192.168.0.0网络上的路由器的IP地址是192.168.0.1。tracert命令C:>tracert172.16.0.99-dTracingrouteto172.16.0.99overamaximumof30hops12s3s2s10,0.0,plete.
可以使用tracert命令确定数据包在网络上的停止位置。下例中,默认网关确定192.168.10.99主机没有有效路径。这可能是路由器配置的问题,或者是192.168.10.0网络不存在(错误的IP地址)。C:>tracert192.168.10.99Tracingrouteto192.168.10.99overamaximumof30hops110.0.0.1reports:plete.Tracert实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
tracert[-d][-hmaximum_hops][-jhost-list][-wtimeout]target_name
当我们不能通过网络访问目的设备时,网络管理员就需要判断是哪里出了问题。问题不仅仅会出现在最终目的设备,也可能出现在转发数据包的中间路由器。
有3种方式用来探测一个数据包从源点到目的地经过了哪些中转路由器,这3种方式分别是:基于记录路由选项的路由探测,基于UDP协议的路由探测,基于ICMPEchoRequest的路由探测。三种方式都可以用来探测一个数据包到达目的设备经过了哪些中间路由器,但实现的过程却截然不同。
3、最后在弹出来的DOS命令窗口输入:tracert“ip”或者“域名”,检查本地网络到百度的联通性。
这种方式是我们最容易理解的探测路由方式。比如,我想知道一封从上海发出,目的地是北京电信,中间经过了多少个邮局转发。这个过程很简单,只要中间邮局在转发的信件扣上他们自己的邮戳,这封信到达目的地北京后,北京再把这封信回邮给我,当我收到回信后,只要看信上的邮戳,便知道中间经过哪些邮局。
1)ping命令发出的是类型为8的ICMP数据报,当使用ping-r时,这个类型为8的ICMP数据报被装在一个IP数据报里,IP数据报的Options(选项)字段预留出给中间路由器扣戳的地方,这个地方不太大,只能容纳9台中转路由器的IP地址。
2)当这个数据报被发送端送出后,每经过一个中转路由器,中转路由器的IP软件便会在此IP数据报的选项字段中加入一条这个中转路由器的IP地址。
3)当这个数据包到达目的地时(如,),目的设备便会生成一条类型为0的ICMP数据报,这个ICMP数据报被封装在一个新的IP数据报里,新IP数据报的Options字段中拷贝了刚才收到的IP数据报中的Options字段。4)当这个新IP数据报回送到源发送端时,您便会在屏幕上看见一些中间路由器的IP地址了。
tracert是Windows下常用的命令行工具,UNIX下与之对应的是traceroute。若想知道自己的电脑到经过了多少个路由器,可在命令行下输入tracert进行探测,返回结果也许会与ping-R相同,但它是以另一种方式实现的。这种方式并没有像Recordrouteoptions探测技术中使用IP协议包的Options字段,而是利用了IP协议包中的TTL字段。
基本思路是这样的:这台服务器即卖茄子(提供HTTP服务),也卖黄瓜(提供FTP服务),但不卖土豆(未监听的UDP端口)。有位买家,为了知道一封信到达蔬菜供应商中间需要经过几个邮局(路由器),于是写信给询问土豆的价格。
第一步,买家在信封的TTL位置写上数字
1,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减
1,于是TTL为
0,邮局章程规定,把TTL值为0的信丢到垃圾桶里,然后给买家发一封名曰超时的信,信上写了丢信邮局的名字,以告诉买家信被谁丢掉了。
第二步,买家在信封的TTL位置写上数字
2,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减
1,现在TTL值为
1,邮局章程规定,TTL值不为0的数据包需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局。当下一个邮局收到这封信时,邮局的人把TTL值减
1,于是TTL为
0,邮局章程规定,把TTL值为0的信丢到垃圾桶里,然后给买家发一封名曰超时的信,信上写了丢信邮局的名字,以告诉买家信被谁丢掉了。
通过第一步,买家知道了第一个中转路由器。通过第二步,买家知道了第二个中转路由器。那么买家只需要不断的把TTL值加
1,便可根据如上步骤探测出中间经过了哪些路由器。
第三步,我们假设中间只经过两个邮局信便到达目的地了。接着第二步,买家选在把TTL值设置为
3,当这封信到达与自己相邻的第一个邮局时,邮局的人把TTL值减
1,现在TTL值为
2,邮局章程规定,TTL值不为0的数据报需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局。当下一个邮局收到这封信时,邮局的人把TTL值减
1,于是TTL为
1,邮局章程规定,TTL值不为0的数据报需要继续转发给下一个邮局,于是这封信又被转发到了下一个邮局,但下一个邮局已经就是最终目的地了,尽管把TTL减1的结果为
0,但却不会丢弃它,因为目的地就是呀!于是把这个IP层邮递员送来的信交付给负责卖土豆人,但我们开始说了,并不卖土豆,于是就回送一个名曰终点不可达(ICMP类型为
3,代码为3)的信给买家。第四步,当买家收到类型为终点不可达的信时,就不再把那封问土豆价格的信上的TTL加1了,因为他已经知道了到达目的地的全部路由。
这种探测方式与基于UDP协议的路由探测的实现步骤一样,但发送端送出的不是一个UDP数据包,而发送的是一个ICMP类型为8的EchoRequest(回显请求)数据报文。与基于UDP协议的路由探测技术一样,每次发送端都会把TTL值加
1,每个中转路由器都对TTL值减
1,如果为
0,便丢弃后给发送端发送一个超时报文,若不为
0,则继续转发给下一跳。唯一不同的是,当这个数据报到达最终目的节点时,由于发送端发送的是EchoRequest报文,所以接收端就会相应一个ICMP类型为0的数据报文。这样,当发送端收到ICMP类型为0的数据报文时,就知道了全部路由已经查询完毕,终止继续探测。
通过递减“存在时间(TTL)”字段的值将“控制消息协议(ICMP)回显请求”或ICMPv6消息发送给目标可确定到达目标的路径。路径将以列表形式显示,其中包含源主机与目标主机之间路径中路由器的近侧路由器接口。近侧接口是距离路径中的发送主机最近的路由器的接口。如果使用时不带参数,tracert显示帮助。
tracert[-d][-hMaximumHops][-jHostList][-wTimeout][-R][-SSrcAddr][-4][-6]TargetName
防止tracert试图将中间路由器的IP地址解析为它们的名称。这样可加速显示tracert的结果。
指定回显请求消息将IP报头中的松散源路由选项与HostList中指定的中间目标集一起使用。使用松散源路由时,连续的中间目标可以由一个或多个路由器分隔开。HostList中的地址或名称的最大数量为
9。HostList是一系列由空格分隔的IP地址(用带点的十进制符号表示)。仅当跟踪IPv4地址时才使用该参数。
指定等待“ICMP已超时”或“回显答复”消息(对应于要接收的给定“回现请求”消息)的时间(以毫秒为单位)。如果超时时间内未收到消息,则显示一个星号(*)。默认的超时时间为(4秒)。
指定IPv6路由扩展标头应用来将“回显请求”消息发送到本地主机,使用目标作为中间目标并测试反向路由。
指定在“回显请求”消息中使用的源地址。仅当跟踪IPv6地址时才使用该参数。-4指定Tracert.exe只能将IPv4用于本跟踪。
"该诊断工具通过向目标发送具有变化的“生存时间(TTL)”值的“ICMP回响请求”消息来确定到达目标的路径。要求路径上的每个路由器在转发数据包之前至少将IP数据包中的TTL递减
1。这样,TTL就成为最大链路计数器。数据包上的TTL到达0时,路由器应该将“ICMP已超时”的消息发送回源计算机。Tracert发送TTL为1的第一条“回响请求”消息,并在随后的每次发送过程将TTL递增
1,直到目标响应或跃点达到最大值,从而确定路径。默认情况下跃点的最大数量是30,可使用-h参数指定。检查中间路由器返回的“ICMP超时”消息与目标返回的“回显答复”消息可确定路径。但是,某些路由器不会为其TTL值已过期的数据包返回“已超时”消息,而且这些路由器对于tracert命令不可见。在这种情况下,将为该跃点显示一行星号(*)。
"要跟踪路径并为路径中的每个路由器和链路提供网络延迟和数据包丢失信息,请使用pathping命令。
"只有当“协议(TCP/IP)”协议在“网络连接”中安装为网络适配器属性的组件时,该命令才可用。
要跟踪名为的主机的路径并使用松散源路由10.12.0.1-10.29.3.1-10.1.44.1,请键入:
注:在使用tracert程序测试到达目标节点所经过的路径时,默认对每个TTL值Traceroute要测3次。
pathping是tracert和ping的混合体。命令行下输入pathping,返回两部分内容,第一部分显示到达目的地经过了哪些路由,第二部分显示了路径中每个路由器上数据包丢失方面的信息。
百科词条内容由用户共同创建和维护,不代表百科立场。如果您需要医学、法律、投资理财等专业领域的建议,我们强烈建议您独自对内容的可信性进行评估,并咨询相关专业人士。