性能|网络工具 Traceroute

417 阅读3分钟

Traceroute 用于跟踪数据包从源主机到目标主机的路径。它显示了数据包经过的每个中间路由器,并提供了每个跃点的延迟时间。

traceroute 提供了对网络路径的可视化,帮助诊断网络连接中的问题,如延迟、丢包或路径异常。它还可以用于分析网络中的路由器跃点,帮助了解数据包在传输过程中经过的网络节点。

使用 traceroute 命令时,常见的语法是在终端或命令提示符中输入

traceroute ${hostname}

当执行 traceroute 命令时,它会向目标主机发送一系列的 ICMP(Internet Control Message Protocol)回显请求数据包(或使用其他协议,如 UDP),每个数据包的 TTL 值依次增加。当 TTL 值为 1 时,第一个路由器收到数据包后,将其 TTL 减 1,然后将其丢弃并发送一个 ICMP "TTL 过期"消息回给源主机。这样,源主机就知道了到达第一个路由器的路径。

然后,源主机发送 TTL 值为 2 的数据包,以此类推。每个路由器都会根据 TTL 的值进行相应的操作,并将 ICMP 消息返回给源主机。通过收集这些 ICMP 消息,traceroute 工具可以确定数据包从源主机到目标主机的路径,并测量每个跃点的往返时间(Round-Trip Time,RTT)。

结果中的含义如下所示:

  1. 跃点序号(Hop Number) :显示当前跃点的顺序号,从源主机开始递增。
  2. IP 地址(IP Address) :显示当前跃点的 IP 地址,即网络上的路由器或节点的 IP 地址。
  3. 主机名(Hostname) :如果可用,显示当前跃点的主机名。在某些情况下,主机名可能不可用或无法解析。
  4. 延迟(Latency) :显示从源主机到当前跃点的往返时延(Round Trip Time,RTT)。通常以毫秒为单位。
  5. 跃点类型(Hop Type) :显示当前跃点的类型。常见的类型包括 *,表示超时;!H,表示主机不可达;!N,表示网络不可达;!P,表示协议不可达;!S,表示源主机不可达;!A,表示访问被拒绝等。

通过分析 traceroute 的输出,我们可以了解从源主机到目标主机经过的每个跃点,并根据延迟和跃点类型等信息,判断网络中的瓶颈或故障点。

跃点之间的延迟可以显示网络中的传输速度和响应时间。如果在特定跃点上看到 * 或 ! 开头的标记,表示出现了问题,例如超时、不可达或访问拒绝等。这些信息可以帮助你诊断网络连接问题、定位网络故障,并优化网络路径。

image.png

从这张图可以看出,经过了 1,2,3,8 四个路由,其中最后一个路由的延迟时间最长,说明最后一个点可能存在瓶颈。