在 Windows 10 中使用 Traceroute: 掌握网络路由跟踪

網絡是通過將數據包從A點路由到B點再到C點來建立的。每個數據包都從源頭到目的地經過一個路由。您可以使用Windows 10中方便的追踪路徑工具tracert來跟踪發生的情況。

在本文中,您將學習有關Windows 10中(tracert)命令或追踪路徑的全部信息。您將了解其目的、各種開關以及如何解讀提供的信息。通過本文,您將具備充分利用這個工具的知識!

相關文章:如何在Linux中使用追踪路徑命令

Windows 10中的追踪路徑命令是如何工作的?

在Windows 10(以及所有其他操作系統)中,追踪路徑命令的主要目的是檢測數據包在網絡中傳遞時所經過的路徑。它使用錯誤消息收集有關數據包在路徑上遇到的各個路由器的信息。

tracert利用IP數據包標頭中的生存時間(TTL)字段。TTL限制了數據包的生命期,防止它們停留在網絡中。這在路徑失效或存在路由循環時很重要。

當數據包到達一個路由器時,其TTL值減少,直到達到0。當數據包的TTL為0時,路由器丟棄該數據包並向其起源位置返回一個ICMP_TIME_EXCEEDED消息。

Tracert 與它的 Linux 表兄弟 traceroute 不同,使用 UDP 發送探測封包而非 ICMP 回應請求。

當 Windows 10 中的 traceroute 命令發送一個封包來查找路徑時,它會改變封包的 TTL 欄位。利用所得到的錯誤訊息,traceroute 可以拼湊出並發現封包在網路上所經過的路徑。

Traceroute術語

我們已經提到了一些術語,但在閱讀本文時,您將學到更多術語。讓我們首先介紹更多重要的術語。

  • 主機 – 一個主機是您運行 Traceroute in Windows 10 工具的電腦或設備。這可以是 Windows 或 Linux PC,或者是 Cisco IOS 設備。
  • 路由器 – 一個轉發或路由封包從一個網路到另一個網路通過各種接口的設備。
  • 跳 – 一個跳是網路路徑上的一個路由器。將路由封包視為在網路上的一個路由器接口 “跳” 到另一個接口,而封包在網路中傳遞。
  • 路徑 – 路徑是封包從一個主機到另一個主機所經過的路由。每次使用 traceroute 工具時,路徑都可能不同。這是因為路由協定和規則可能將流量引導到不同的接口。

A Demo of Traceroute in Windows 10

也许你发现自己需要为你管理的应用程序解决网络问题。在查看一些日志文件后,你发现应用程序从远程服务器发出的请求耗时较长或完全丢包。这是使用Windows 10中的tracert实用程序的完美场景。tracert

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

查找帮助

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

在下面的代码片段中,可以看到tracert有几个不同的选项来配置其行为。Windows 10中的traceroute实用程序tracert不像它的Linux版本那样包含很多选项。

如果您键入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 (tracert) 中的第一個參數提供給 traceroute。

在下面的示範中,您可以看到一個來自範例主機的封包所經過的路徑,共經過 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,該 TTL 會導致路由器生成一個包含 tracert 命令使用的信息的錯誤。

5-30ms 的回應時間被認為是良好的高速跳躍回應時間。通常,您會看到 35-60ms 的時間。當您開始看到 60ms+ 的時間時,這可能表示存在延遲。

  • 第5列(主機名稱或 IP 位址)- 路由器在路徑中返回的項目。有時候,如果路由器被配置為不回應或由於某種原因無法連接,你會在這裡看到一個「*」。預設情況下,tracert 嘗試對每個路由器 IP 位址進行反向 DNS 查找。這就是你在這裡看到 DNS 名稱而不是 IP 位址的原因。

如果您放棄使用-d 開關進行名稱解析,可以稍微加快 tracert 的速度。此選項將防止主機名稱解析,僅返回 IP 位址。

有了這個輸出,您現在擁有了在疑難排解網絡延遲或路由問題時有用的基本信息。您有時間測量、IP 位址和/或 FQDN (完全限定域名) 供您進行路由器調查。

結論

在 Windows 10 中的 traceroute 是一個經過驗證且實用的命令行網絡工具。我們在本文中沒有涵蓋每個命令的每個參數,但我們涵蓋了許多最有用的參數。

如果您想更多了解 Windows 10 中 traceroute 的內部運作方式,請查看 tracert Microsoft 文件

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