Windows 10 中的 Traceroute:精通网络路由跟踪

网络是通过将数据包从点A路由到点B再到点C来构建的。每个数据包都从源到目的地经过一条路由。您可以使用 Windows 10 中一个方便的跟踪路由工具叫做tracert来追踪发生了什么。

在本文中,您将了解有关(tracert)命令或 Windows 10 中的 Traceroute 的所有信息。您将了解其目的、各种开关以及如何解释它提供的信息。通过本文的学习,您将掌握充分利用这一工具的知识!

相关内容:如何在 Linux 中使用 Traceroute

Windows 10 中的 Traceroute 是如何工作的?

在 Windows 10(以及所有其他操作系统)中,traceroute 的主要目的是检测数据包在网络中传输时经过的路由。它通过错误消息收集关于沿途遇到的各个路由器的信息来实现这一点。

Tracert 利用 IP 数据包头中的生存时间(TTL)字段。TTL 限制了数据包的生存时间,防止它们在网络上停留。这对于路径失败或存在路由环路至关重要。

当数据包到达路由器时,其 TTL 值会递减,直到达到 0。当数据包的 TTL 达到 0 时,路由器会丢弃数据包并将ICMP_TIME_EXCEEDED消息返回给数据包的源。

Tracert与其Linux同类命令traceroute不同,它使用UDP发送探测数据包而不是ICMP回显请求。

当Windows 10中的tracert命令发送一个数据包以查找其路径时,它会修改数据包的TTL字段。利用结果错误消息中的信息,tracert然后可以拼凑出并发现数据包在网络中传输的路径。

Tracert术语

我们已经提到了一些术语,但在阅读本文时您将学到更多。让我们首先介绍更多重要的术语。

  • 主机 – 主机是您运行Windows 10中的Tracert工具的计算机或设备。这可以是Windows或Linux PC,或者是Cisco IOS设备。
  • 路由器 – 一个设备,通过各种接口从一个网络向另一个网络转发或路由数据包。
  • 跳 – 跳是沿着网络路径的路由器。当一个路由数据包在网络中“跳”从一个路由器接口到另一个接口时,请考虑。
  • 路径 – 路径是数据包从一个主机传输到另一个主机时所经过的路由。

A Demo of Traceroute in Windows 10

也许你发现自己正在为你管理的应用程序解决网络问题。在查看了一些日志文件后,你发现应用程序从远程服务器发出的请求花费的时间比正常情况下长,或者完全丢失了数据包。这是使用 Windows 10 实用程序中的traceroute(tracert)的完美场景。

打开命令提示符(cmd.exe)或 Windows PowerShell 控制台。本节中所示的所有示例都将使用 Windows PowerShell v5.1。

查找帮助

首先让我们熟悉并了解一下 Windows 10 中这个tracert实用程序的工作原理。通过运行tracert -?命令,你可以方便地查看运行它的所有选项。

在以下代码片段中,你可以看到tracert有一些不同的选项来配置其行为。与它的 Linux 表亲不同,Windows 10 实用程序中的traceroute tracert并不包含很多选项。

如果你输入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,然后跟上目标服务器的IP地址或完全限定域名(FQDN)。

Windows 10中的Traceroute: 举例说明

假设您的应用程序必须到达 www.google.com。要跟踪应用程序到 www.google.com 的路径,您只需将地址作为Windows 10中traceroute(tracert)的第一个参数提供。

在以下演示中,您可以看到来自示例主机的数据包到达目的地所经过的路径,穿过了11个路由器。

Traceroute in Windows 10 : traceroute -q example

现在让我们来检查输出,然后在下面解释结果。

Tracing route to www.google.com [172.217.8.164]
over a maximum of 30 hops:

  1     1 ms     4 ms     1 ms  www.routerlogin.com [192.168.1.1]
  2    56 ms    11 ms    12 ms  142.254.148.17
  3    65 ms   468 ms    29 ms  agg63.vnwrohbt01h.midwest.rr.com [98.30.201.210]
  4    61 ms    22 ms    21 ms  agg59.clmkohpe02r.midwest.rr.com [24.33.162.134]
  5   508 ms    23 ms    29 ms  be27.clmkohpe01r.midwest.rr.com [65.29.1.34]
  6    73 ms    41 ms    31 ms  bu-ether31-vinnva0510w-bcr00.tbone.rr.com [66.109.6.54]
  7    76 ms    33 ms    37 ms  66.109.5.136
  8   382 ms    29 ms    36 ms  66.109.7.83
  9    75 ms    32 ms    37 ms  209.85.250.189
 10     *     1320 ms    29 ms  72.14.232.153
 11    28 ms    27 ms    27 ms  ord37s08-in-f4.1e100.net [172.217.8.164]

Trace complete.

输出中有五列数据。从左到右开始:

  • 第1列(跳数)- 此路由中有11个跳数。请记住,您可以再次运行相同的命令,并获得不同的输出。这是预期的,因为您可能被路由到路由器上的不同接口,或者完全不同的路由器。
  • 第2-4列(ICMP(ping)数据包往返时间)- 这些时间以毫秒为单位测量。您应该记得这些数据包还包含导致路由器生成错误的TTL,该错误包含由tracert命令使用的信息。

5-30毫秒的响应时间被认为是良好的高速跳数响应时间。通常,您会看到35-60毫秒之间的时间。当您开始看到60毫秒以上的时间时,那可能表明存在延迟。

  • 第5列(主机名或IP地址)- 路由器在路径中返回的项目。有时,如果路由器配置为不响应或由于某种原因无法到达,你会在这里看到一个*。默认情况下,tracert尝试对每个路由器IP地址执行反向DNS查找。这就是你在这里看到DNS名称而不是IP地址的原因。

如果你放弃使用-d开关进行名称解析,你可以稍微加快tracert的速度。这个选项将阻止主机名解析,只返回IP地址。

有了这个输出,你现在拥有了在排查网络延迟或路由问题时有用的基本信息。你有时间测量、IP地址和/或路由器的FQDN(全限定域名)来调查。

结论

在Windows 10中的traceroute是一个经过验证的、方便的、命令行网络实用工具。我们在本文中没有涵盖每个命令的每个参数,但我们确实涵盖了许多最有用的参数。

如果你想了解更多关于Windows 10中traceroute的内部工作原理,请查阅tracert微软文档

Source:
https://adamtheautomator.com/traceoute-windows-10/