当网站、服务器或在线服务停止响应时,问题的根源并不总是显而易见的。您的计算机可能已连接到本地网络,但目标仍无法访问。问题可能出在您的家庭路由器、您的互联网服务提供商的网络、远程网络或目标服务器本身。
追踪路由是用于网络诊断的工具,它有助于显示数据包从您的设备到目标地址所经过的路径。它会列出中间路由器,通常称为跳数,并测量每个路由器的响应时间。这可以帮助您确定路径发生变化的位置、延迟开始的位置,或者响应停止出现的位置。
追踪路由不会显示互联网路由工作的所有细节,超时并不自动意味着路由器或链路出现故障。许多路由器会限制或过滤追踪路由所依赖的响应。尽管如此,当你了解输出能告诉你什么和不能告诉你什么时,它就成为故障排除的一个有用的第一步。
本指南解释了tracert的工作原理,如何在Windows、macOS和Linux上运行它,以及如何解释常见的结果。如果您正在学习网络基础知识,了解其作用也有帮助。 默认网关 以及IP地址范围是如何组织的 子网.
什么是Traceroute?
Traceroute是一个命令行工具,试图确定数据包在到达目标过程中经过的路由器。在Windows上,内置工具称为 tracert。在 macOS 和大多数 Linux 发行版中,它被称为 traceroute名称不同,但它们的主要用途是相似的。
该工具发送一系列探测包,其逐次增加的跃点限制。跃点限制告诉数据包它可以经过多少个路由器,之后必须被丢弃。在IPv4中,此字段称为 存活时间,或TTL。在IPv6中,它被称为 跳数.
当路由器转发数据包时,它会减少TTL或跃点限制。当该值变为零时,路由器会丢弃数据包,并可能向源地址发送响应。追踪路由(Traceroute)利用这些响应来识别连续的路由器。在工具了解了第一个跃点后,它会发送另一个具有更高限制的探测包,然后是另一个,继续向目标地址前进。
追踪路由测量发送探测和接收响应之间的时间。它通常会为每个跃点发送多个探测,这就是输出中经常包含三个响应时间的原因。这些数字测量的是探测和回复在您的设备和响应路由器之间传输的时间。它们并不只测量该路由器内部处理数据包所花费的时间。
追踪路由显示什么?
每个跃点都有一个编号的行。第一个跃点通常是您的本地路由器或本地网络上的另一个第一设备。后续的跃点可能属于您的互联网服务提供商、传输网络、托管服务商或目标网络。
一个简化的示例可能如下所示:
traceroute 到 example.com,最多 30 跳
1 192.168.1.1 2.1 毫秒 1.8 毫秒 2.0 毫秒
2 100.64.0.1 8.4 毫秒 8.1 毫秒 8.6 毫秒
3 203.0.113.10 13.2 毫秒 12.9 毫秒 13.5 毫秒
4 * * *
5 198.51.100.20 25.6 毫秒 25.1 毫秒 26.0 毫秒
第一列标识跃点编号。下一个值是响应路由器的地址或名称。其余值是该跃点发送探测器的响应时间。在这个例子中,跃点4没有对探测器作出响应,但跃点5作出了响应。
一个响应的跃点表明探测从该点收到了回复。这并不能证明路由的其他每个部分都是健康的。同样,一个未响应的跃点也不能证明路由器已关闭。该设备可能被配置为转发流量,同时忽略或限制诊断探测。
Traceroute还可以在不同时间显示不同的路径。互联网路由会随着网络调整路由、平衡流量、处理中断或应用策略而发生变化。一次追踪中观察到的路由只是一个快照,而不是永久的地图。
如何在Windows上运行Traceroute
Windows 包括 tracert. 打开命令提示符或 PowerShell 并输入主机名或 IP 地址:
tracert example.com
Windows 将主机名解析为 IP 地址,然后显示它能观察到的跃点。您可以使用 -d 防止 tracert 从解析路由器地址到名称:
tracert -d example.com
使用 -d 可以更快地显示结果,因为Windows会跳过中间地址的反向DNS查找。这在您关心路径和时间而不是每个路由器的名称时很有用。
您可以使用来限制最大跳数 -h 并为每个响应设置等待时间 -w例如:
tracert -d -h 20 -w 2000 example.com
此命令跳过名称查找,最多停止20个跃点,并为每个探测等待最多2000毫秒以获得响应。如果目标很远或路径较慢,较低的跃点限制可能会在到达目标之前停止跟踪。
要测试特定的IP地址而不是主机名,请运行:
tracert -d 203.0.113.25
在比较结果时,要始终测试相同的目地。如果域名解析到不同的服务器,那么对域名的追踪和对特定IP地址的追踪可能会遵循不同的路径。
如何在macOS上运行Traceroute
在 macOS 上,打开终端并运行:
traceroute example.com
要显示数字地址而不尝试解析名称,请使用:
traceroute -n example.com
您可以使用来限制最大跳数 -米 并调整等待时间 with -w例如:
traceroute -n -m 20 -w 2 example.com
这会要求数值输出,将跟踪限制为20个跃点,并在每个跃点等待最多两秒以获得响应。可用的精确选项可能因实现而略有不同,如果某个命令选项未被识别,请查看本地手册:
man traceroute
Traceroute可能需要一些时间才能完成,因为它在每个跳转点发送多个探测包并等待响应。如果看起来在某一行暂停了,可能是正在等待不响应这些探测包的路由器的回复。
如何在Linux上运行Traceroute
许多Linux发行版包含 traceroute,但有些可能需要您先安装它。一个基本的测试是:
traceroute example.com
为了避免反向DNS查找并仅显示数字地址,请使用:
traceroute -n example.com
您还可以设置最大跳数和响应等待时间:
traceroute -n -m 20 -w 2 example.com
在Linux上,可用的命令选项取决于安装的traceroute实现。如果命令缺失,请使用发行版的包管理器安装适当的软件包,或使用可用的替代工具,例如 tracepath.
对于IPv6目标地址,许多Linux系统支持:
traceroute -6 example.com
如果域名同时具有IPv4和IPv6记录,该工具可能会默认选择一个地址族。在支持的情况下,运行单独的IPv4和IPv6追踪以比较路径。这有助于确定连接问题是否影响其中一个地址族而未影响另一个。
如何阅读每个啤酒花
首先检查第一跳。在家庭网络中,通常是本地路由器。如果第一跳响应迅速,您的设备至少可以到达本地网络上的路由器。如果它没有响应,这本身并不能证明本地出现故障,因为路由器可能会过滤诊断回复。在得出结论之前,请先检查其他本地设备和互联网服务是否正常。
接下来,随着路由的进行,比较响应时间。如果在后续跳数中持续出现突然且一致的增加,可能表明路径发生了变化,或者网络延迟开始出现。然而,在某个路由器处的高响应时间,随后的路由器响应时间降低,通常反映了该路由器处理诊断流量的方式,并不一定表示影响转发流量的延迟。
查找最后一个响应的跃点,但将其视为线索而非确定的故障位置。下一个路由器可能正在过滤探测,返回路径可能不同,或者目标网络可能阻止了traceroute所期望的响应类型。
最后,比较多次运行,并在可能的情况下,在同一服务或网络中测试第二个目的地。一次追踪可能受到临时拥塞或过滤的影响。重复测试中的模式比单一的输出更有信息量。
什么是一个星号的意思?
一个星号(*) 表示 traceroute 在等待时间内未收到对该探测的响应。路由器可能仍然将该探测转发到目标地址。它可能只是拒绝发送诊断响应。
路由器和防火墙通常会限制互联网控制消息协议(ICMP)消息或其他诊断响应,以保护性能并减少不必要的流量。一些网络允许正常的应用流量,同时过滤跟踪路由探测。因此,跟踪可能会显示一个或多个星号,然后继续显示路径中较后面的响应跳数。
如果在某个点之后的每个跃点都显示星号,则路径可能在该点被过滤,目标可能无法到达,或者返回流量可能被阻止。为了区分这些情况,请使用相关应用程序(如网页浏览器或SSH客户端)实际测试服务,并与其他目标的追踪进行比较。
理解响应时间和延迟
Traceroute的计时值显示了探测到达响应跳数以及响应返回所需的时间。它们包括双向的网络延迟,可能受到拥塞、排队和路由器响应策略的影响。
一个跳数的高值可能具有误导性。路由器会优先转发传输流量,而不是响应发送到自身的诊断数据包。路由器可能需要很长时间才能对traceroute做出响应,同时却能快速转发普通流量。如果后续的跳数显示较低的响应时间,那么这个高值不太可能代表数据路径中的持续延迟。
一个更有用的模式是从某个跳数开始的延迟增加,并在后续的跳数和目标地址上多次测试中保持可见。即使如此,仅凭traceroute 本身也无法证明确切的原因。它只能指出需要进一步调查的位置,例如供应商交接点、拥塞的链路或远距离的网络段。
常见Traceroute模式
如果第一个跃点响应但后续跃点不响应,则本地网络可能正常,而后续网络可能过滤了诊断流量。在假设连接已断开之前,请先检查目标服务本身是否可访问。
如果跟踪到达了目标但应用程序仍然失败,网络路径可能正常,而服务可能存在其他问题。服务器可能拒绝连接,应用程序可能不可用,或者防火墙可能阻止了特定端口。
如果追踪每次都在同一位置停止,且目标也无法到达,最后一个响应的网络可以帮助缩小寻求支持的范围。它不一定能确定负责的设备,因为过滤和非对称返回路径可能使明显的停止点产生误导。
如果IPv4正常但IPv6不正常,或者相反,请为每个地址族分别运行跟踪。两条路径可能使用不同的提供商、路由器、防火墙策略或目标服务器。比较它们可以揭示问题是否仅存在于网络的一侧。
追踪路由和跟踪命令不相同
命令 tracert 和 traceroute 它们具有类似的目的,但其探测方法和选项可能因操作系统和实现而异。Windows tracert 通常使用ICMP回显探测。类Unix实现可能默认使用UDP,一些支持ICMP或TCP探测模式。
这很重要,因为防火墙可能允许一种类型的探测而阻止另一种类型。因此,即使从同一台计算机对同一目标运行,两个工具也可能产生不同的输出。
一些traceroute实现允许您选择探测方法。例如,Linux版本可能支持UDP、ICMP或TCP探测的选项。当普通探测被过滤但特定的TCP服务可访问时,基于TCP的跟踪可能会很有用。选项语法各不相同,因此在依赖特定标志之前,请查阅本地手册。
当与网络管理员或提供商共享结果时,请包括操作系统、命令、选项、目标地址和测试的大致时间。这些上下文信息有助于他们解释追踪之间的差异。
Traceroute 与 Ping
Ping测试是否目标对特定类型的网络探测作出响应并测量往返时间。它对于检查基本的可达性很有用,但不会显示中间路径。
Traceroute尝试揭示通往目标的响应路由器序列。它可以帮助缩小回复停止或延迟模式开始的位置,但它对过滤和路由器响应策略更敏感。
这些工具回答不同的问题。使用ping来测试目标是否响应。使用traceroute来检查通往目标的路径。单独使用任一工具都不能保证网站或应用程序是健康的,因为即使基本的网络探测成功,也可能出现特定于应用的问题。
一个实用的故障排除工作流程
首先确认目标名称和地址。如果您使用的是主机名,请检查它是否正确解析。然后运行traceroute并记录时间、地址族、命令选项和目标。
对同一目标进行多次测试。如果输出有显著变化,问题可能是间歇性的,或者路由可能已更改。如果跟踪稳定但应用程序失败,请检查服务是否在监听,防火墙是否阻止了其端口,以及服务器是否返回错误。
与同一提供商托管的另一个目的地或同一地区的另一个目的地进行比较。如果多个目的地从同一时间点开始出现类似问题,这将更强烈地表明受影响的网络段可能需要关注。
如果您将此问题报告给互联网服务提供商或托管公司,请提供原始输出,而不仅仅是说“traceroute 失败”。请包括目标地址、时间、操作系统以及目标服务本身是否无法访问。这些细节会使报告更容易被调查。
Traceroute的限制
追踪路由不会显示互联网上的每台路由器。一些网络会隐藏或过滤它们的响应,一些路由使用的技术会导致跳数信息不完整。负载平衡也可能将不同的探测沿不同的路径发送,因此相邻的行可能并不总是表示一个稳定的整体路由。
响应时间并不是路由器转发正常流量速度的直接度量。它们测量的是探测和响应的时间,而路由器可能将这些诊断数据包与常规的应用程序流量区别对待。
Traceroute也不能证明谁拥有路由器地址,确定数据包丢失的确切原因,或确认路由是经过授权的。公共路由和注册数据需要单独检查。要对公共IPv4或IPv6资源进行更全面的审查,请使用 IP资源就绪检查器.
常见问题
使用tracert安全吗?
追踪路由是一个标准的诊断工具,它向目标发送网络探测。进行一些测试以进行故障排除是正常的。避免生成过多的流量或以高速率探测您不管理的系统。
为什么traceroute每次显示的路径都不同?
网络可以更改路由、使用负载平衡或通过不同供应商传输流量。探测流量可能也会以不同于普通应用流量的方式处理。路径的微小差异并不自动表示出现故障。
星号是否表示路由器已关闭?
没有。这意味着traceroute在超时时间内未收到对该探测的响应。路由器可能仍然会转发流量,同时过滤或限制诊断回复。
为什么tracert在到达网站前就停止了?
目标网络或中间防火墙可能会阻止探测类型。该网站可能仍可通过正常的HTTPS流量访问。在确定路由不可用之前,请先测试服务本身。
tracert能否确定数据包丢失的位置?
它可以帮助确定响应停止的位置,但不能总是证明应用程序流量在哪里丢失。比较多次运行、后续跃点和实际服务。工具包括 mtr 可以提供重复的测量值,但其输出也需要仔细解读。
我可以对IPv6地址运行traceroute吗?
是的。Windows、macOS 和 Linux 均支持 IPv6 路由跟踪,尽管命令名称和选项有所不同。在 Linux 上, traceroute -6 通常被支持。在Windows上, tracert can trace IPv6 when given an IPv6 destination.
Traceroute可以帮助您查看流量从您的设备流向目标时哪些路由器会响应。第一个跳转通常是您的本地网关,后续的跳转可能属于您的互联网服务提供商和其他网络,直到到达目标。
使用 tracert 在 Windows 和 traceroute 在 macOS 或 Linux 上。检查第一跳,比较后续各跳的响应模式,并在结果看起来异常时重复测试。星号和孤立的高响应时间是常见的,并不意味着网络一定出现了问题。
最有用的结论来自于将tracert与应用测试、DNS检查、重复测量以及来自其他用户或网络的报告相结合。应将输出视为有助于指导调查的证据,而不是自身的完整诊断。