Tracert命令简介

tracert 命令概述:

  Tracert是路由跟踪程序,用于确定 IP 数据报访问目标所经过的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。

  Tracert一般用来检测故障的位置,我们可以使用用tracert IP命令确定数据包在网络上的停止位置,来判断在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,方便检测网络中存在的问题。

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。

tracert 命令参数以及描述:

  命令格式如下:

  tracert 目标主机地址(IP或者域名)[参数]

    • -d:不将地址解析成主机名,能够更快地显示路由器路径;
    • -h:指定跟踪的跃点数;
    • -j:设定松散源地址路由列表
    • -w:指定等待每个应答的时间(以毫秒为单位)。默认值为3000毫秒(3秒)
    • -R:跟踪往返行路径(仅适用于IPv6)
    • -S:使用的源地址(仅适用于IPv6)

下图显示了一些有用的tracert命令选项

测试示例:

扫描二维码关注公众号,回复: 1735035 查看本文章

注释:

  • 最左侧的1-4:标明到达目标节点需要经过8个路由节点;
  • 中间三列:单位是ms,表示连接到每个路由节点的速度,返回速度和多次链接反馈的平均值;
  • 最后一列:每个路由节点对应的IP;
  • *,请求超时:这个路由节点无法联通,可能是该节点做了过滤策略等;

tracert 示例:

  示例:有A、B、C、D四台机子(其中A、B的IP分别为192.168.0.4-192.168.0.5,子网掩码均为255.255.255.0;C、D的IP分别为192.168.1.3-192.168.1.4,子网掩码均为255.255.255.0),一台路由RA连接以上两个子网。

   Tracert的实现如上图所示,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)。

猜你喜欢

转载自www.cnblogs.com/amonos/p/9220342.html