一、名词解释
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
通过向目标发送不同IP生存时间 (TTL) 值的“Internet控制消息协议 (ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将TTL递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
可以使用 tracert 命令确定数据包在网络上的停止位置。
二、如何使用
1、IP地址或者域名:输入要追踪的目的地址。
2、指定源接口:指定从哪个接口去追踪。
3、最大路由跳数:设置数字几,就显示几条到达目的地址经过的路由设备和对应地址。
4、超时等待时间:每一跳之间等待的时间。
三、举例
路由追踪,到百度经过的路由设备和对应地址
四、知识扩展
1、命令行
Tracert 命令支持多种选项,如下表所示。
用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout][-R] [-S srcaddr] [-4] [-6] target_name
选项:
-d 不将地址解析成主机名。
-h maximum_hops 搜索目标的最大跃点数。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位)。
-R 跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr 要使用的源地址(仅适用于 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
target_name 目标主机的名称或 IP 地址。
当我们不能通过网络访问目的设备时,网络管理员就需要判断是哪里出了问题。问题不仅仅会出现在最终目的设备,也可能出现在转发数据包的中间路由器。
有3种方式用来探测一 个数据包从源点到目的地经过了哪些中转路由器,这3种方式分别是:基于记录路由选项的路由探测,基于UDP协议的路由探测,基于ICMP Echo Request的路由探测。三种方式都可以用来探测一个数据包到达目的设备经过了哪些中间路由器,但实现的过程却截然不同。
2、注意:
基于记录路由选项的路由探测
1、基于Record route options(记录路由选项)的路由探测
这种方式是我们最容易理解的探测路由方式。比如,我想知道一封从上海发出,目的地是北京电信,中间经过了多少个邮局转发。这个过程很简单,只要中间邮局在转发的信件扣上他们自己的邮戳,这封信到达目的地北京后,北京再把这封信回邮给我,当我收到回信后,只要看信上的邮戳,便知道中间经过哪些邮局。
ping -r www.aorb.org命令便可实现这种记录中间路由的功能,返回的结果是中间路由器的IP地址。
1) ping命令发出的是类型为8的ICMP数据报,当使用ping -r时,这个类型为8的ICMP数据报被装在一个IP数据报里,IP数据报的Options(选项)字段预留出给中间路由器扣戳的地方,这个地方不太大,只能容纳9台中转路由器的IP地址。
2) 当这个数据报被发送端送出后,每经过一个中转路由器,中转路由器的IP软件便会在此IP数据报的选项字段中加入一条这个中转路由器的IP地址。
3) 当这个数据包到达目的地时(如,www.aorb.org),目的设备便会生成一条类型为0的ICMP数据报,这个ICMP数据报被封装在一个新的IP数据报里,新IP数据报的Options字段中拷贝了刚才收到的IP数据报中的Options字段。
4) 当这个新IP数据报回送到源发送端时,您便会在屏幕上看见一些中间路由器的IP地址了。
基于UDP协议的路由探测
tracert是Windows下常用的命令行工具(基于ICMP协议),UNIX下与之对应的是traceroute(基于UDP协议)。若想知道自己的电脑到www.aorb.org 经过了多少个路由器, 可在命令行下输入tracert www.aorb.org进行探测,返回结果也许会与ping -R相同,但它是以另一种方式实现的。这种方式并没有像Record route options探测技术中使用IP协议包的Options字段,而是利用了IP协议包中的TTL字段。
基本思路是这样的:www.aorb.org这台服务器即卖茄子(提供HTTP服务),也卖黄瓜(提供FTP服务),但不卖土豆(未监听的UDP端口)。有位买家,为了知道一封信到达蔬菜供应商www.aorb.org中间需要经过几个邮局(路由器),于是写信给www.aorb.org询问土豆的价格。
基于ICMP Echo Request的路由探测
这种探测方式与基于UDP协议的路由探测的实现步骤一样,但发送端送出的不是一个UDP数据包,而发送的是一个ICMP类型为8的Echo Request(回显请求)数据报文。与基于UDP协议的路由探测技术一样,每次发送端都会把TTL值加1,每个中转路由器都对TTL值减1,如果为0,便丢弃后给发送端发送一个超时报文,若不为0,则继续转发给下一跳。唯一不同的是,当这个数据报到达最终目的节点时,由于发送端发送的是Echo Request报文,所以接收端就会相应一个ICMP类型为0的数据报文。这样,当发送端收到ICMP类型为0的数据报文时,就知道了全部路由已经查询完毕,终止继续探测。
Dos命令Tracert跟踪路由详解
Tracert
通过递减“存在时间 (TTL)”字段的值将“Internet 控制消息协议 (ICMP)回显请求”或 ICMPv6 消息发送给目标可确定到达目标的路径。路径将以列表形式显示,其中包含源主机与目标主机之间路径中路由器的近侧路由器接口。近侧接口是距离路径中的发送主机最近的路由器的接口。如果使用时不带参数,tracert 显示帮助。
语法
tracert [-d] [-h MaximumHops] [-j HostList] [-w Timeout] [-R] [-S SrcAddr] [-4][-6] TargetName
参数
-d
防止 tracert 试图将中间路由器的 IP地址解析为它们的名称。这样可加速显示 tracert 的结果。
-h MaximumHops
指定搜索目标(目的)的路径中存在的跃点的最大数。默认值为 30 个跃点。
-j HostList
指定回显请求消息将 IP 报头中的松散源路由选项与 HostList 中指定的中间目标集一起使用。使用松散源路由时,连续的中间目标可以由一个或多个路由器分隔开。HostList 中的地址或名称的最大数量为 9。HostList 是一系列由空格分隔的 IP 地址(用带点的十进制符号表示)。仅当跟踪IPv4地址时才使用该参数。
-w Timeout
指定等待“ICMP 已超时”或“回显答复”消息(对应于要接收的给定“回现请求”消息)的时间(以毫秒为单位)。如果超时时间内未收到消息,则显示一个星号 (*)。默认的超时时间为 4000(4 秒)。
-R
指定 IPv6 路由扩展标头应用来将“回显请求”消息发送到本地主机,使用目标作为中间目标并测试反向路由。
-S
指定在“回显请求”消息中使用的源地址。仅当跟踪 IPv6 地址时才使用该参数。
-4
指定 Tracert.exe 只能将 IPv4 用于本跟踪。
-6
指定 Tracert.exe 只能将 IPv6 用于本跟踪。
TargetName
指定目标,可以是 IP 地址或主机名。
-?
在命令提示符下显示帮助。
注释
" 该诊断工具通过向目标发送具有变化的“生存时间 (TTL)”值的“ICMP 回响请求”消息来确定到达目标的路径。要求路径上的每个路由器在转发数据包之 前至少将 IP 数据包中的 TTL 递减 1。这样,TTL 就成为最大链路计数器。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源计算机。Tracert 发送 TTL 为 1 的第一条“回响请求”消息,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或跃点达到最大值,从而确定路径。默认情况下跃点的最大数量是 30,可使用 -h 参数指定。检查中间路由器返回的“ICMP 超时”消息与目标返回的“回显答复”消息可确定路径。但是,某些路由器不会为其 TTL 值已过期的数据包返回“已超时”消息,而且这些路由器对于 tracert 命令不可见。在这种情况下,将为该跃点显示一行星号 (*)。
" 要跟踪路径并为路径中的每个路由器和链路提供网络延迟和数据包丢失信息,请使用pathping命令。
" 只有当“Internet 协议 (TCP/IP)”协议在“网络连接”中安装为网络适配器属性的组件时,该命令才可用。
示例
要跟踪名为 corp7.microsoft.com 的主机的路径,请键入:
tracert corp7.microsoft.com
要跟踪名为 corp7.microsoft.com 的主机的路径并防止将每个 IP地址解析为它的名称,请键入:
tracert -d corp7.microsoft.com
要跟踪名为 corp7.microsoft.com 的主机的路径并使用松散源路由10.12.0.1-10.29.3.1-10.1.44.1,请键入:
tracert -j 10.12.0.1 10.29.3.1 10.1.44.1 corp7.microsoft.com
注:在使用 tracert程序测试到达目标节点所经过的路径时,默认对每个 TTL 值 Traceroute 要测3次。
其他 :pathping
pathping是tracert和ping的混合体。命令行下输入pathpingwww.aorb.org,返回两部分内容,第一部分显示到达目的地经过了哪些路由,第二部分显示了路径中每个路由器上数据包丢失方面的信息。