系统极客一直在努力
专注操作系统及软件使用技能

使用 Tracert 路由跟踪工具,快速排查 Windows 网络问题

Network

在 Windows 中排查网络相关问题时,可以使用 tracert 路由跟踪命令。它是基于网络协议的路由跟踪工具,通过向目标发送 ICMP 回响数据包并追踪沿途的每一个跃点(通常是路由器/网关),帮助诊断和定位网络连接中的问题。

tracert 实用程序可以用于分析互联网上的数据包传输路径,有助于检测在路由中连接变慢或无响应的位置。执行 tracert 命令后,会显示每个数据包沿途往返的时间以及跃点的 IP 地址或主机名。通过分析输出,可以对有问题的路由节点有一个大致的了解。下面是在 Windows 中使用路由跟踪命令的步骤。🚀

Tracert 路由跟踪基础

相信大多数人都使用过 ping 命令来测试网络中设备的可到达性。虽然它是检测潜在网络异常的有效工具,但也仅能告诉用户指定的目标是否可达。

Ping 类似,tracert 命令也运行在 OSI 模型的第三层。它能够向目标主机发送 ICMP 请求数据包,不仅测试服务器是否可达,还会输出明确的路由信息。每当数据包到达一个路由跃点时,路由跟踪的生存时间(TTL)值就会减 1。当值为 0 时,路由器/网关就会响应一个 ICMP 回复数据包。🔎

Tracert 工作原理示意
Tracert 工作原理示意

简单来说,tracert 工作方式就是:通过递增 TTL 值的方法,发送回显请求并记录每个请求经过的路由器/网关,从而获得到达目标主机的路径信息。

举一个简单的例子来帮助大家理解,假设您正在尝试跟踪系统极客网站 www.sysgeek.cn 的路由信息:

  1. tracert 通过 ICMP 或其他协议发送第一个回显请求到目标主机,初始的 TTL = 1,并且该数据包离开源主机后,其 TTL 值减 1。(现在 TTL = 0
  2. 当第一个路由器接收到数据包时,由于 TTL = 0,路由器会将其丢弃,并向源主机发送「TTL exceeded」消息。
  3. 源主机接收到消息后,会将目标主机的 IP 地址记录在 tracert 输出中,并将 TTL 增加 1(TTL = 2),然后再次发送回显请求。同样,该值减 1(现在 TTL = 1),数据包被转发到目标服务器。
  4. tracert 会持续发送回显请求,每次 TTL 增加 1,直到达到用户指定的最大跃点数或成功到达目标主机。
  5. tracert 会将路由跟踪信息显示给用户,包括每个跃点的 IP 地址、平均往返时间(RTT)和域名(如果有)。🌐
执行 Tracert 命令后分析 TTL
执行 Tracert 命令后分析 TTL

在 Windows 系统中,路由跟踪数据包可传输的默认最大跳数为 30。一旦跃点计数器达到限制,数据包就会被丢弃,并且无法达到最终目标。(可以通过参数来增加最大跳数)🔍

在 Windows 中使用 Tracert 路由跟踪命令

您可以在「命令提示符」或 PowerShell 中执行 tracert 命令,以确定源设备到目标的路由信息。这两种情况下的语法都是相同的:

tracert <参数> <目标 IP 或主机名>

只运行 tracert 命令可以查看帮助,了解用法和各种可用参数开关。

Tracert 参数说明
-d不将地址解析成主机名。
-h maximum_hops搜索目标的最大跃点数。
-j host-list与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout等待每个回复的超时时间(以毫秒为单位)。
-R跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr要使用的源地址(仅适用于 IPv6)。
-4强制使用 IPv4。
-6强制使用 IPv6。
Windows 中的 Tracert 命令参数

我们以跟踪系统极客网站的路由信息作为示例。请打开「命令提示符」并执行 tracert www.sysgeek.cn 命令。

Tracert 命令输出
Tracert 命令输出
  • 第一列是跃点计数器,它显示在到达指定目标之前命中的跃点总数。
  • 接下来的三列分别输出每个数据包的往返时间(以毫秒为单位)。这里的 RTT 是数据包命中一个跃点并返回所需的时间。不难理解,每一步时间都在增加,路由跃点越远,回显请求到达和返回所需的时间就越长。
  • 最后一列输出每个路由跃点的 IP 地址。如果这些跃点有主机名,会显示在 IP 地址的左侧。

参考上表中的参数,还可以执行 tracert -d www.sysgeek.cn 来丢弃主机名,这将仅列出路由中每个跃点的 IP 地址。

如果跃点跳数达到或超过 30,可以执行 tracert -h 50 www.sysgeek.cn 来增加到达目标的最大跳数。

使用 -h 参数指定 tracert 最大跃点数
使用 -h 参数指定 tracert 最大跃点数

通过类似的方式,您可以根据上表中包含的语法和描述测试其他参数开关。

附加提示

虽然在 Windows PowerShell 中使用相同的命令效果很好,但还有一个可替代的 cmdlet 可以运行路由跟踪:

Test-netconnection -traceroute <目标 IP/主机名>
使用 Powershell 执行路由跟踪
使用 Powershell 执行路由跟踪

它需要几秒钟来加载以下输出:

  • ComputerName: 显示目标主机名
  • RemoteAddress: 显示分配的 IP 地址
  • InterfaceAlias: 网络适配器名称
  • SourceAddress: 设备的源 IP 地址
  • PingSucceeded: 显示布尔值(如果 ping 成功则为 True,失败为 False 。)
  • PingReplyDetails (RTT): 显示平均往返时间
  • TraceRoute: 显示每个跃点的关联 IP 地址(最大限制为 30)

使用 Tracert 解决网络问题

tracert命令可以帮助定位网络故障点,您可以比较每个数据包的往返时间和 IP 列中可能存在的错误消息。

  • 在大多数情况下,列表中的 * 星号表示数据包丢失,通常发生在路径中的跃点(路由器)未响应 ICMP 请求消息的情况下。🌟
执行 Tracert 命令时的「*」星号
执行 Tracert 命令时的「*」星号
  • 如果所有三个数据包都显示 * 星号且后面会跟着「Request timed out」请求超时提示,可能意味着某个特定路由器或其相关连接存在问题(或被防探测主动丢弃)。虽然这可能只发生在其中某一个跃点上,但所有后续的跃点也可能受到影响。🚧
执行 Tracert 命令时出现「请求超时」错误
执行 Tracert 命令时出现「请求超时」错误
  • 如果目标设备/服务器不可用或存在 IP 相关问题,tracert 命令可能会显示「Destination host unreachable」表示目标主机不可达。💔
执行 Tracert 命令时出现「无法访问目标主机」错误
执行 Tracert 命令时出现「无法访问目标主机」错误
  • 如果命令没有提示任何错误,还可以通过 RTT 列来检查延迟。跃点增加就增加延迟并不总表示问题,但到达相同跃点的数据包却有不同的延迟,基本就上可以预测故障点。🕒
Tracert 第 8 跳存在高延迟
Tracert 第 8 跳存在高延迟

另外,如果在跃点开始或结束处遇到超时或高延迟问题,则表示本地网络或目标主机可能存在问题。🚫


虽然 tracert 路由跟踪命令不能实际解决网络问题,但它为检测从源设备到目标主机的数据传输提供了一种可行方法。

赞(7) 赞赏

评论 抢沙发

微信赞赏