網絡路徑排查工具使用/原理淺析(MTR、traceroute、tracepath、windows下besttrace)


在請求網絡資源獲取緩慢或者有丟包過程中。經常會使用到網絡路徑探測工具。linux 下最常用的有mtr、traceroute、tracepath 等。

你是否有一點疑惑,路徑探測的原理到底是如何完成的,普通的ping探測和TCP、UDP 等數據包在同一個源--->目的地址之間交互鏈路狀態為何有時會有不同現象。

原理淺析:

首先我們知道,實現數據在網絡中的交互,都基於最基礎的網絡地址:源--->目的地址。這個地址為IP地址。為了避免無效的數據包垃圾在網絡中永久存在。有8位的TTL值。

在互聯網中傳輸過程中,IP數據包每經過一個路由器該值減一,直到為0 時將該包丟棄。

路由探測原理就是從發送TTL 值為1開始的數據包開始,每次增加1,直到該數據包能抵達目的IP地址。

未能抵達最終目的地址的數據包,當路由器將值減為0 時,會給源地址返回一個數據包告知源地址:因經過路由的數據過多,導致TTL耗盡。數據包無法到達最終目的地。工具根據中間路由節點這個數據包返回的時間戳和發出數據包時的時間戳相減,計算出中間經過的每個路由節點的耗時。並獲取中間路由節點的IP地址。

 

下面分別看下常用鏈路測試工具,默認發送數據包的區別。

mtr

mtr 默認使用ICMP協議發送探測數據包。

若使用TCP或者UDP 發送數據包。需另外指定指定可選項

-u

--udp
Use UDP datagrams instead of ICMP ECHO.

-T

--tcp
Use TCP SYN packets instead of ICMP ECHO. PACKETSIZE is ignored, since SYN packets can not contain data.

-P PORT

--port PORT
The target port number for TCP traces.

下圖示例默認探測包:

 

 mtr  -T -P22 <IP地址>示例:

 

traceroute 

當我們使用traceroute 不加任何參數測試路徑時,默認四層使用UDP協議發送探測數據包

如果使用TCP或者ICMP協議數據包探測路徑需加選項

-I --icmp Use ICMP ECHO for tracerouting
-T --tcp Use TCP SYN for tracerouting (default port is 80)

 -p port  --port=port  Set the destination port to use. It is either initial udp port value for "default" method (incremented by each probe, default is 33434), or initial seq for "icmp" (incremented as well, default from 1), or some constant destination port for other methods (with default of 80 for "tcp", 53 for "udp", etc.)

traceroute -使用ICMP協議探測路徑 -p 指定起始seq

 

 tracepath

只支持UDP協議數據包探測路徑

 besttrace

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM