Networking

traceroute 是否使用相同的路徑?

  • October 11, 2021

我對traceroute的使用有點困惑。

根據這個

traceroute 命令用於查看數據包是如何被路由的。它的工作原理是發送 TTL 值從 1 開始遞增的數據包。因此,第一個路由器獲取數據包,並將 TTL 值遞減 1,從而丟棄數據包。路由器將 ICMP Time Exceeded 消息發回給我們。然後下一個數據包的 TTL 為 2,因此它通過了第一個路由器,但當它到達第二個路由器時,TTL 為 0,它返回另一個 ICMP Time Exceeded 消息。Traceroute 之所以這樣工作,是因為它在發送和丟棄數據包時會建構一個數據包經過的路由器列表,直到它最終到達目的地並獲得 ICMP Echo Reply 消息。(來源:https ://linuxjourney.com/lesson/traceroute )

據此,我們如何確保traceroute在每次發送ICMP數據包時使用相同的路徑?在第二次、第三次、第四次呼叫等期間不能將數據包路由到其他地方嗎?

謝謝。

我們不能確定,它可以改變。

每個數據包可以有不同的路徑,這裡不能保證,它是一個幫助調試的工具,並不總是一個完美的真理。

一個數據包也可以在那裡走一條路徑,但返回的路徑完全不同。

因此,traceroute 確實告訴您的是,隨著 TTL 的每一步增加,數據包在哪個路由器“失敗”。嘗試並驗證您多次執行跟踪(某些實現可能已經為您執行此操作)

也可能有特定的規則,這使得不同類型的數據包採用不同的路徑。例如,跟踪可能工作得非常好,而 TCP 和/或 UDP 埠在某處被阻塞。

引用自:https://serverfault.com/questions/1080204