您可以使用Linux traceroute命令來發現網路資料包傳輸過程中的慢段,並對緩慢的網路連線進行故障排除。我們會教你怎麼做!
當您瞭解traceroute的工作原理時,就更容易理解結果。網路資料包到達目的地的路徑越複雜,就越難確定可能發生減速的位置。
小型組織的區域網(LAN)可能相對簡單。它可能至少有一個伺服器和一兩個路由器。在不同地點之間或透過因特網進行通訊的廣域網(WAN)上,複雜性增加。然後,您的網路資料包會遇到(並被轉發和路由)許多硬體,如路由器和閘道器。
資料包上元資料的頭描述了它的長度、它來自哪裡、它要去哪裡、使用的協議等等。協議的規範定義了頭。如果您可以識別協議,可以確定頭中每個欄位的開始和結束,並讀取元資料。
traceroute使用TCP/IP協議套件,傳送使用者資料報協議包。標頭包含生存時間(TTL)欄位,該欄位包含一個8位整數值。不管名字怎麼說,它代表的是計數,而不是持續時間。
一個包透過路由器從它的起點到它的目的地。每次資料包到達路由器時,它都會減少TTL計數器。如果TTL值曾經達到1,那麼接收資料包的路由器將遞減該值並注意到它現在為零。資料包隨後被丟棄,並且不會轉發到其旅程的下一個躍點,因為它已經“超時”
路由器傳送一個Internet訊息控制協議(ICMP)超時訊息回資料包的來源,讓它知道資料包超時。超時訊息包含原始報頭和原始資料包資料的前64位。這在徵求意見792第6頁中有定義。
因此,如果traceroute傳送一個數據包,然後將TTL值設定為1,那麼該資料包在被丟棄之前只能到達第一個路由器。它將從路由器接收ICMP超時訊息,並記錄往返所用的時間。
然後,它將重複練習,TTL設定為2,兩次跳後將失敗。traceroute將TTL增加到3,然後重試。此過程重複,直到達到目標或測試最大跳數(預設情況下為30)。
有些路由器有漏洞。它們嘗試轉發TTL為零的資料包,而不是丟棄它們並引發ICMP超時訊息。
據思科稱,一些網際網路服務提供商(ISP)限制路由器中繼的ICMP訊息數量。
某些裝置被配置為從不傳送ICMP資料包。這通常是為了確保裝置不會在無意中被強迫參與分散式拒絕服務,比如**urf攻擊。
traceroute的預設答覆超時時間為5秒。如果在這五秒鐘內沒有收到響應,則放棄嘗試。這意味著來自非常慢的路由器的響應被忽略。
traceroute已經安裝在fedora31上,但必須安裝在manjaro18.1和ubuntu18.04上。要在Manjaro上安裝traceroute,請使用以下命令:
sudo pacman -Sy traceroute要在Ubuntu上安裝traceroute,請使用以下命令:
sudo apt-get install traceroute如上所述,traceroute的目的是在從您的計算機到目的地的每一跳中從路由器獲取響應。有些人可能守口如瓶,什麼也不給,而另一些人可能會毫無顧忌地洩露祕密。
例如,我們將執行一個traceroute到愛爾蘭布拉尼城堡網站,這裡是著名的布拉尼石之家。傳說如果你親吻布拉尼石,你會得到“口碑的禮物”的祝福。讓我們希望我們在路上遇到的路由器是適當的嘮叨。
我們鍵入以下命令:
traceroute www.blarneycastle.ie第一行提供了以下資訊:
所有其他行都包含其中一個躍點的資訊。不過,在深入瞭解細節之前,我們可以看到,我們的電腦和布拉尼城堡網站之間有11個跳躍。跳11也告訴我們我們到達了目的地。
每個躍點行的格式如下:
讓我們回顧一下下面的內容:
所以,這是一個混合袋。一些裝置玩球,一些迴應,但沒有告訴我們他們的名字,還有一些保持完全匿名。
然而,我們確實到達了目的地,我們知道它離我們有11跳的路程,往返時間是13.773和14.715毫秒。
如我們所見,有時包含裝置名稱會導致顯示混亂。為了更容易檢視資料,可以使用-n(無對映)選項。
要使用我們的示例執行此操作,請鍵入以下內容:
traceroute -n blarneycastle.ie這樣就可以更容易地為可能表示瓶頸的往返計時選擇大量的數字。
第三跳看起來有點可疑。上一次,它只回應了兩次,而這次,它只回應了一次。在這種情況下,我們當然無法控制。
然而,如果你正在調查你的公司網路,那麼對這個節點進行更深入的研究是值得的。
也許如果我們延長預設的超時時間(5秒),我們會得到更多的響應。為此,我們將使用-w(等待時間)選項將其更改為7秒。(請注意,這是一個浮點數。)
我們鍵入以下命令:
traceroute -w 7.0 blarneycastle.ie這並沒有造成太大的影響,所以迴應可能已經過時了。很可能匿名的啤酒花是故意保密的。
預設情況下,traceroute向每個躍點發送三個UDP資料包。我們可以使用-q(查詢數)選項來向上或向下調整。
為了加快traceroute測試的速度,我們鍵入以下命令以減少傳送到其中一個的UDP探測資料包的數量:
traceroute -q 1 blarneycastle.ie這會向每個躍點發送一個探測。
我們可以將TTL的初始值設定為1以外的值,並跳過一些跳躍。通常,TTL值在第一組測試中設定為1,在下一組測試中設定為2,依此類推。如果我們把它設為5,第一個測試將嘗試跳到5,跳過1到4。
因為我們知道Blarney Castle網站離這臺計算機有11個躍點,所以我們鍵入以下內容直接轉到躍點11:
traceroute -f 11 blarneycastle.ie這給了我們一個很好的,關於目標連線狀態的簡明報告。
traceroute是研究網路路由、檢查連線速度或識別瓶頸的一個很好的工具。Windows還有一個tracert命令,其功能類似。
但是,您不希望用大量的UDP資料包轟炸未知裝置,並且要小心在指令碼或無人参與的作業中包含traceroute。
負載跟蹤路由可能會對網路效能產生不利影響。除非您處於“現在就修復”的情況,否則您可能希望在正常工作時間之外使用它。
... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...
...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...
... 如何在windows10上安裝linux bash shell ...
要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...
...描、連線檢查器和網路裝置清單工具,還可以處理ping和traceroute等基本命令。 ...
想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...
...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...