MTR
使用 MTR 工具,監測網路狀態。
MTR command
Github 原始碼。
下面命令的含義是使用 MTR 工具對 google.com 進行路徑跟蹤,並使用 TCP 協議進行跟蹤,發送 30 個數據包,並實時顯示每個節點的數據,最終顯示結果並退出程序。
1sudo ./mtr -b -T -r -c 30 google.com
-b:表示啟用 Batch 模式。在 Batch 模式下,MTR 將在測試完成後立即顯示結果,並退出程序。這樣可以方便將結果保存到文件中或者進行其他處理。
-T:表示使用 TCP 進行跟蹤。這個選項告訴 MTR 使用 TCP 協議而不是默認的 UDP 協議進行數據包跟蹤。
-r:表示顯示實時數據。這個選項告訴 MTR 實時顯示每個節點的數據,而不是等待測試完成後一次性顯示。
-c 30:表示指定發送的數據包數量為 30 個。這個選項告訴 MTR 在跟蹤路徑時發送 30 個數據包,以便更準確地評估網絡連接的質量。
其運行結果會顯示欄位 HOST
、Loss%
、Snt
、Last
、Avg
、Best
、Wrst
、`StDev,期解釋如下:
Loss%:表示丟包率,即在發送的數據包中丟失的百分比。它表示了從本地主機到目標主機的路徑中,有多少個數據包在傳輸過程中丟失了。丟包率越低,表示網絡連接越穩定。單位為百分比。
Snt:表示發送的數據包數量,即已發送的數據包數量。單位為個。
Last:表示最後一個數據包的往返時間(Round-Trip Time, RTT),即最後一個數據包從本地主機發送到目標主機,並返回到本地主機的時間。單位為毫秒(ms)。
Avg:表示所有已發送數據包的平均往返時間,即所有數據包往返時間的平均值。單位為毫秒(ms)。
Best:表示已發送數據包的最低往返時間,即所有數據包往返時間中的最小值。單位為毫秒(ms)。
Wrst:表示已發送數據包的最高往返時間,即所有數據包往返時間中的最大值。單位為毫秒(ms)。
StDev:表示所有已發送數據包的往返時間的標準偏差,即所有數據包往返時間與平均往返時間的偏差的平方的平均值的平方根。標準偏差越小,表示數據包往返時間的分佈越集中,網絡連接越穩定。單位為毫秒(ms)。
中間節點的 ICMP 封包行為
在使用 mtr
命令時,-T
參數的作用是讓 mtr
使用 TCP 數據包進行探測,而不是默認的 ICMP 數據包。然而,即使使用了 -T
參數,mtr
仍然會在探測過程中進行類似於 ping
的操作,這是因為 mtr
的核心功能是結合了 ping
和 traceroute
的特性。
具體來說,mtr
的工作原理是:
- 追蹤路由:
mtr
會追蹤數據包從源節點到目標節點(如google.com
)所經過的所有中間節點。 - 持續測試:在追蹤路由的同時,
mtr
會對每個中間節點進行持續的測試,計算丟包率和延遲。 - 探測方式:即使使用
-T
參數指定了 TCP 探測,mtr
仍然會對每個節點進行類似ping
的測試,以獲取節點的響應時間和丟包率 。
因此,-T
參數主要影響的是探測數據包的類型(TCP 而非 ICMP),但 mtr
仍然需要對每個節點進行類似 ping
的操作,以提供完整的網絡質量分析。