在排除與網絡相關的問題時,運行traceroute 命令可以幫助檢測連接速度變慢或無響應的位置(在路由中)。它的工作原理是向目的地發送 ICMP 回顯數據包,並跟踪其途中的每個單跳(通常是路由器/網關)。

在 Windows 上執行 Tracert 命令後,輪詢顯示每個數據包的行程時間以及躍點的 IP 地址/主機名。通過分析此輸出,您現在可以大致了解哪個躍點可能面臨問題。

在本文中,我將指導您如何在 Windows 上正確使用 Traceroute 命令。

Traceroute 基礎知識命令

我們大多數人都使用過 ping 命令來測試網絡上設備的可達性。雖然這是檢測可能的網絡異常的有效實用程序,但它僅限於告訴用戶指定的目的地是否可達。

與 Ping 一樣,Traceroute 或 Tracert 命令也運行在 OSI 模型的第三層上。它向目標主機發送 ICMP 請求數據包。主要區別在於,它不僅指定是否可以到達服務器,還顯示確切的路由。

Traceroute 使用生存時間 (TTL) 值,數據包每到達一跳就減少(1)。當值為 0 時,該路由器/網關將使用 ICMP 回複數據包進行響應。

假設到目的地的路由中有三跳,Traceroute 的工作原理

讓我們通過一個簡單的示例來理解這一點。假設您正在嘗試跟踪我們網站 TechNewsToday 的路徑。執行 Traceroute 命令後,來自您設備的三個 ICMP 數據包將被轉發到我們的服務器,TTL=1。

一旦到達第一跳,TTL 值就會減少 1 (現在 TTL=0)並回复“TTL 超出”消息。然後,您的設備會顯示每個數據包的往返時間(以毫秒為單位)以及躍點的 IP/主機名.

使用指定的 IP 地址,它會重新發送 TTL=2 的 ICMP 數據包。該值再次減 1(現在 TTL=1),並將數據包轉發到目的地

請求消息到達第二跳後,該值再次減 1(現在 TTL=0)。與之前一樣,該路由器會向您的源設備回复“TTL 超出”消息。該過程不斷重複,直到到達最終目的地。在途中,它不斷顯示往返時間和每一跳的IP。

Wireshark 捕獲:執行 Traceroute 命令後分析 TTL

在 Windows 中,數據包可以傳輸的默認最大跳數30。因此,一旦跳數計數器達到限制,數據包就會被丟棄,並且無法找到最終路由。但您不必擔心,因為可以使用專用參數來增加此數字,我將在稍後討論。

如何運行 Traceroute 命令?

確定從源設備到目的設備的ICMP請求報文,需要執行tracert命令。命令提示符和 Powershell 的語法相同。

語法:tracert <目標 IP 或主機名>

僅運行 Tracert 命令執行其幫助命令。您可以直接了解其用法和可用的各種開關。為了您的方便,我在下表中匯總了所有可用選項及其功能。

Traceroute 開關/選項功能-dDiscards DNS 查找(僅顯示 IP 地址)-h <最大跳數>允許您更改到達目的地的最大跳數-j <主機列表>基於指定的主機(最大=9),ICMP 請求消息將使用鬆散源路由(僅當使用 IPv4 地址時)-w <時間>根據指定時間(以毫秒為單位),設備等待 ICMP 回复消息(如果沒有回复,則顯示 *)-RTraces 往返路徑(僅適用於 IPv6 地址)-S <源地址>手動指定源地址(僅適用於 IPv6 地址)-4 強制使用 IPv4 地址跟踪路由-6 強制使用 IPv6 地址跟踪路由/?執行 Tracert 的幫助命令Windows 上的不同 Traert 開關

為了演示,我將跟踪我們網站 TechNewsToday 的路徑。

Traceroute 命令輸出

與 Ping 不同,此命令需要相對更多的時間來顯示相關結果。如前所述,默認情況下最多只搜索 30 跳。

第一列被視為跳數計數器。它顯示到達指定目的地之前的總跳數

接下來的三列輸出往返時間(以毫秒為單位)每個數據包。 RTT 是數據包到達一跳並返回所需的時間。請注意,時間隨著每一步的增加而增加。它的解釋非常簡單——躍點越遠,ICMP 請求到達並返回所需的時間就越長。

最後一列顯示了每個躍點的 IP 地址。路線。如果這些躍點已解析主機名,則它們應顯示在 IP 地址的左側。

使用-h 開關增加最大跳數

以類似的方式,您可以根據我在上表中包含的語法和說明來測試其他開關。

其他提示

雖然同一命令在 Windows Powershell 窗口中運行良好,但這裡有一個用於運行 Traceroute 的替代 cmdlet:
Test-netconnection-traceroute <目標 IP/主機名>

在 Windows Powershell 上執行 Traceroute ComputerName: 顯示目標的主機名(與您在 中輸入的內容相同) RemoteAddress: 顯示分配的 IP 地址InterfaceAlias: 您的適配器名稱 SourceAddress:您的設備分配的 IP 地址 PingSuccedded: 顯示布爾值(如果 ping 成功則顯示 True,如果失敗則顯示 False) t) PingReplyDetails (RTT): 顯示平均往返時間 TraceRoute: 顯示與每個躍點關聯的 IP 地址(最大值=30)

使用以下方法排除網絡問題Traceroute

Traceroute命令可以幫助定位網絡故障點,特別是在多條路徑可能通向同一跳的大型網絡中。您可以在 IP 列中比較每個數據包的往返時間以及可能的錯誤消息。

‘*’執行 Tracert 命令時

在大多數情況下,您會注意到一個“*”符號 在數據包列中。這僅表示數據包丟失,通常在路徑中的躍點(路由器)無法響應 ICMP 請求消息時發生。

執行 Tracert 命令時出現“請求超時”錯誤

如果這三個都數據包顯示“*”符號,後面跟著“請求超時”錯誤。如果發生這種情況,您可以大致了解該特定路由器或其相關連接存在問題。

雖然這種情況只可能發生在其中一個躍點中,但也有可能所有後續躍點都會受到影響

執行 Tracert 命令時出現“目標主機無法訪問”錯誤

以防萬一ping 到的設備/服務器不可用或存在與 IP 相關的問題,Tracert 命令可能會顯示“目標主機無法訪問”。按照此完整指南進行操作將有助於解決此問題。

如果您遇到網絡問題,並且 Traceroute 命令沒有顯示任何上述錯誤,您甚至可以檢查延遲延遲(在 RTT 列中)。到達目的地的延遲增加不會並不總是表明存在問題。但是,如果到達同一躍點的數據包具有不同的延遲,您可以預測故障點。

僅一個 ICMP 數據包(第 9 跳)存在高延遲

例如,如果某個點的數據包顯示 47 毫秒、46 毫秒和 45 毫秒,這裡沒有任何問題。但如果您看到 270 毫秒、70 毫秒和 70 毫秒,您現在可以注意到此躍點存在某種問題。

另一個常見問題是超時或高延遲問題 在開始或結束跳躍時。如果您在前幾跳中看到問題,則表明您的本地網絡存在問題。另一方面,最後的錯誤可能意味著目標主機出現問題。

Traceroute 命令並不意味著真正解決網絡問題。這是一種發現 ICMP 數據包從源設備傳輸到目標主機時可能遇到的潛在問題的方法。

事實上,如果是在本地網絡或可訪問的目標設備上,則可以解決相關問題。但如果您要追踪全球站點的路線,則無能為力。

Categories: IT Info