我們都用過ping命令來檢查主機與目標地址是否連通,自己的主機與目標地址的通訊包通訊速率,所謂的通訊包也就是那些什麼TCP/IP,UDP包。
關於路由跟蹤:
路由跟蹤指令對Linux來說是traceroute,在windows則是tracert,這次就主要來說traceroute。
traceroute是用來檢測發出資料包的主機到目標主機之間所經過的網關數量的工具。traceroute的原理是試圖以最小的TTL(存活時間)發出探測包來跟蹤資料包到達目標主機所經過的網關,然後監聽一個來自網關ICMP的應答。發送資料包的大小預設為38個位元組。
traceroute程式完整過程:首先它發送一份TTL欄位為1的IP資料包給目的主機,處理這個資料包的第一個路由器將TTL值減1,然後丟棄該資料報,並給源主機發送一個ICMP報文(“逾時”資訊,這個報文包含了路由器的IP地址,這樣就得到了第一個路由器的地址),然後traceroute發送一個TTL為2的資料報來得到第二個路由器的IP地址,繼續這個過程,直至這個資料報到達目的主機。
1.命令格式:
traceroute [參數] [主機]
2.命令功能:
traceroute指令讓你追蹤網路資料包的路由途徑,預設資料包大小是40Bytes,使用者可另行設定。
**具體參數格式:**traceroute [-dFlnrvx][-f<存活數值>][-g<網關>…][-i<網路介面>][-m<存活數值>][-p<通訊連接埠>][-s<來源地址>][-t<服務類型>][-w<逾時秒數>][主機名稱或IP地址][資料包大小]
3.命令參數: -d 使用Socket層級的排錯功能。
-f 設定第一個檢測資料包的存活數值TTL的大小。
-F 設定勿離斷位。
-g 設定來源路由網關,最多可設定8個。
-i 使用指定的網路介面送出資料包。
-I 使用ICMP回應取代UDP資料資訊。
-m 設定檢測資料包的最大存活數值TTL的大小。
-n 直接使用IP地址而非主機名稱。
-p 設定UDP傳輸協議的通訊連接埠。
-r 忽略普通的Routing Table,直接將資料包送到遠端主機上。
-s 設定本地主機送出資料包的IP地址。
-t 設定檢測資料包的TOS數值。
-v 詳細顯示指令的執行過程。
-w 設定等待遠端主機回報的時間。
-x 開啟或關閉資料包的正確性檢驗。
**4 執行個體:
執行個體4.1** : traceroute www.baidu.com
說明:
記錄按序號從1開始,每個紀錄就是一跳 ,每跳錶示一個網關,我們看到每行有三個時間,單位是 ms,其實就是-q的預設參數。探測資料包向每個網關發送三個資料包後,網關響應後返回的時間;如果您用 traceroute -q 4 www.baidu.com ,表示向每個網關發送4個資料包。見下圖:
有時我們traceroute 一台主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回資訊,所以我們得不到什麼相關的資料包返回資料。
有時我們在某一網關處延時比較長,有可能是某台網關比較阻塞,也可能是物理裝置本身的原因。當然如果某台DNS出現問題時,不能解析主機名稱、網域名稱時,也會 有延時間長度的現象;您可以加-n 參數來避免DNS解析,以IP格式輸出資料。
如果在區域網路中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某台伺服器遇到問題時,我們用到traceroute 追蹤資料包所經過的網關,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能協助我們解決。
執行個體4.2:跳數設定
命令:traceroute -m 10 www.baidu.com
結果:
說明:通過結果可以看到存活數值=10,當存活數值=0時,主機便取消資料包
執行個體3:探測包使用的基本UDP連接埠設定6888 (此處不太懂)
命令: traceroute -p 6888 www.baidu.com
結果:
執行個體4:把對外發探測包的等待回應時間設定為3秒
命令:traceroute -w 3 www.baidu.com
結果:
本文參考資料:
http://blog.csdn.net/sinat_33442459/article/details/75126149
另外,具體詳細命令下安裝,每步的操作步驟及每跳的含義,請參考:
http://blog.csdn.net/yongh701/article/details/45599001