Trace命令详解

Trace命令详解

 一、Trace命令的原理
Trace命令提供路由器到目的地址的每一跳的信息。他通过控制IP报文的生存期(英文简称为TTL)字段来实现。为了获得往返延迟的时间信息,Trace命令会发送三个报文显示平均延迟时间。然后命令会将报文的TTL字段加1并在此发送这三个报文。这些报文将达到路径的第二个路由器上,并返回超时错误或者端口不可达的信息。反复使用这个方法,不断增加报文的TTL字段的值,直到接收到目的地址的响应消息。

上面这么说可能有点绕口令。笔者这里举一个简单的例子来说明。如果现在有用户反映他们不能够访问公司的网站,但是可以访问其他网页。此时网络管理员该如何处理呢?网络管理员怀疑是连接那个网站的路由器出现了问题。此时就可以利用 Trace + 被怀疑有故障的路由器IP地址的方式,来跟踪数据包到这个路由器的整个过程。这个Trace命令会列举出从管理员路由器到那个被怀疑出现故障路由器之间所有的路由器连接信息。如此的话,网络管理员就可以发现是中间那个路由器出现了问题。这将帮助管理员迅速定位出问题的路由器。如果最后网络管理员受到了来自那个被怀疑路由器的反应信息,则表明跟那个路由器之间的连接时没有问题的。这就表明问题可能不出在路由器身上,而有可能是那个WEB服务器在搞怪。

二、如何读懂Trace命令返回的消息

要利用Trace命令来排查网络故障,则读懂Trace返回报文的含义这是最基础的。还好Trace命令返回的报文并不复杂,比较容易看懂。

MSEC表示路由器在接收到响应消息之前的往返网络延迟,这是以毫秒为单位。在网络中从发送方和接受方之间交换数据,接受方收到数据和发送方发送数据之间的时间差就是网络延迟。也就是说,从路由器发送消息到下一个路由器接收到消息并做出响应中间会有一个时间的间隔。这个间隔就是网络延迟。造成网络延迟的原因有很多,比如在物理线路上电磁波传播要时间,在网络中间设备转发数据包也要时间,受网络带宽限制,发送数据也要时间,还有其他的排队时延等。从理论上来说,这个时间间隔为零为好,但是实际上做不到。在采用Trace命令时,只有第一跳的MSEC时间可能为0,达到自己路由器接口的时间。为此在网络性能优化时,不能够消除这个网络延迟,而只能够把这个延迟尽量的缩短。若最终能够出现这个信息,至少说明跟对方的连接是通的。此时网络管理员要考虑的是,这个延迟的时间是否在可以容忍的范围之内。如果网络虽然通了,但是延迟时间比较长则管理员仍然需要进行网络调整。要把这个网络

延迟的时间控制在可以忍受的范围之内。

如果执行了这个命令之后,路由器最后没有返回MSEC信息,而是显示了其他的内容,则表示这个连路不通,可能存在网络故障。此时,网络管理员就需要根据其返回的错误信息来排查网络故障。通常情况下,其可能会返回这些错误信息。一是*号,它表示报文超时。二是?号,表示报文类型不能识别。三是U符号,表示端口不可达。四是P字母,表示谢意不可达。五是N字母,表示网络不可达。六是H字母,表示主机不可达。七是Q字母,表示ICMP源抑制。这里笔者要特别强调一下ICMP源抑制的作用。由于TCP是可靠的面向连接的协议,在建立连接的时候会协商窗口大小,当网络拥塞或主机资源缺乏的时候,则会相互通知以减慢数据发送速度;而UDP协议则没有这样的传输机制,当网络拥塞或资源不足的时候,无法通知对方,所以,这时,则会发送ICMP源抑制的报文给发送端,以减慢发送速度。如有时候再网络维护时管理员会发现千兆网的数据传输速度反而比百兆网的速度的慢好几倍。则很有可能使某个关键路由器处理不过来。此时网络管理员就需要利用一定的工具查看网络中是否存在ICMP源抑制信息。如果存在的话,则这个千兆网速度没有百兆网快很可能是因为某个路由器成为了网络中的瓶颈资源。管理员需要升级这个路由器,以改善其处理性能。

另外,如果在思科路由器的特权模式下,还可以对这个命令进行扩展,以实现更多的功能。如在特权模式下,Port number是一个很有用的扩展属性。网络管理员通过这个命令可以使工程技术人员跟踪特定的传输层端口。因此通过这个命令网络管理员不但可以确认源端与目的地址之间的IP连通性;而且还可以确认高层服务的连通性问题(即可以通过此来判断目的设备是否开启了相关的高层服务)。

三、Tracle实例解析

1. 利用Trace命令判断路由器是否存在访问控制列表。

如现在网络管理员发现可以Ping远程路由器设备,但是却无法Telnet到远程路由器进行远程维护。因为网络管理员在某个设备中可以通过Telnet连接到这个远程路由器。现在更换了一个设备却不行了,那么网络管理员就怀疑是路由器设置了扩展访问控制列表的原因。网络管理员该如何验证自己的判断呢?

其实很简单哪。网络管理员可以利用Trace命令在源地址上检查目的设备主机上的Telnet端口是否可以访问(采用思科路由器特权模式下的Port number属性)。如果只有管理员以前使用的设备可以Telnet端口,而其他地址都被拒绝访问的话,就就可以百分之百的证明这台路由器设备存在扩展访问控

制列表。此时网络管理员若有远程路由器管理权限的话,就需要先用自己的设备修改扩展访问控制列表中的限制。把其他涉别的MAC地址或者IP地址加入进去,允许其进行Telnet访问。然后再通过其他设备进行Telnet访问。

2. *号并不一定表示网络不通。

当网络管理员利用Trace测试路由器的连通性时,如果路由器返回*符号,并不一定代表网络不通。因为Trace命令是采用网间控制信息协议(简称ICMP)协议的。网间控制ICMP是用于路由器之间传递控制信息和报错的协议。ICMP使用IP数据包,但是这些数据是由IP软件处理,而不会直接传送给用户。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。

但是ICMP协议有着先天行的缺陷,如很容易遭受对方的洪水攻击。洪水攻击简单的说就是攻击者通过某种手段同时让多台网络设备向目标设备发送ICMP包从而让目的设备忙不过来而拒绝接受新的数据包。为此为了提高网络设备的安全性,不少网络管理员会关闭掉ICMP响应。此时,当网络管理员Trace远程网络设备时就会出现*符号,表示报文超时。

另外网络管理员在使用这个Trace命令时需要注意一个问题。如果源地址到目的地址之间存在多条路径,则这个命令返回报文的源地址可能不大相同。如果遇到这种情况,则网络管理员就需要仔细比较不同返回报文显示的延迟时间。通常情况下延迟时间比较少的会优先路径。管理员主要考察延迟时间短的几个路径即可。除非管理员需要考察特殊路径,那么最好能够知道特定路由器的IP地址。

tracert /?

Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name

Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.

Tracert命令详解

该诊断实用程序将包含不同生存时间 (TTL) 值的 Int

ernet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由。要在转发数据包上的 TTL 之前至少递减 1,必需路径上的每个路由器,所以 TTL 是有效的跃点计数。数据包上的 TTL 到达 0 时,路由器应该将“ICMP 已超时”的消息发送回源系统。Tracert 先发送 TTL 为 1 的回显数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。路由通过检查中级路由器发送回的“ICMP 已超时”的消息来确定路由。不过,有些路由器悄悄地下传包含过期 TTL 值的数据包,而 tracert 看不到。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
使用 tracert 跟踪网络连接
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
Tracert 工作原理
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
Tracert 命令按顺序打印出返回“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。
C:\>tracert 172.16.0.99 -d
Tracing route to 172.16.0.99 over a maximum of 30 hops
1 2s 3s 2s 10,0.0,1
2 75 ms 83 ms 88 ms 192.168.0.1
3 73 ms 79 ms 93 ms 172.16.0.99
Trace complete.
用 tracert 解决问题
可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 192.168.10.99 主机没有有效路径。这可能是路由器配置的问题,或者是 192.168.10.0 网络不存在(错误的 IP 地址)。
C:\>tracert 192.168.10.99
Tracing route to 192.168.10.99 over a maximum of 30 hops
1 10.0.0.1 reports:Destination net unreachable.
Trace complete.
Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
Tracert 命令行选项
Tracert 命令

支持多种选项,如下表所示。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
-d 指定不将 IP 地址解析到主机名称。
-h maximum_hops 指定跃点数以跟踪到称为 target_name 的主机的路由。
-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout 等待 timeout 为每次回复所指定的毫秒数。
target_name 目标主机的名称或 IP 地址。
使用 tracert 命令跟踪路径
打开 命令提示符,然后键入:
tracert host_name
或者键入 tracert ip_address
其中 host_name 或 ip_address 分别是远程计算机的主机名或 IP 地址。
例如,要跟踪从该计算机到 [url]https://www.360docs.net/doc/2e18332101.html,/[/url] 的连接路由,请在命令提示行键入:
tracert [url]https://www.360docs.net/doc/2e18332101.html,/[/url]
注意
要打开“命令提示符”,请单击“开始”,指向“程序”、“附件”,然后单击“命令提示符”。
tracert 命令跟踪 TCP/IP 数据包从该计算机到其他远程计算机所采用的路径。tracert 命令使用 ICMP 响应请求并答复消息(和 ping 命令类似),产生关于经过的每个路由器及每个跃点的往返时间 (RTT) 的命令行报告输出。
如果 tracert 失败,可以使用命令输出来帮助确定哪个中介路由器转发失败或耗时太多。
参数
/d
指定不将地址解析为计算机名。
-h maximum_hops
指定搜索目标的最大跃点数。
-j computer-list
指定沿 computer-list 的稀疏源路由。
-w timeout
每次应答等待 timeout 指定的微秒数。
target_name
目标计算机的名称

相关文档
最新文档