目錄
一、traceroute概述
1.1 traceroute命令簡介
1.2 命令格式
1.3 原理
1.4 命令功能
二、使用實例
實例1:traceroute 用法簡單、最常用的用法
實例2:跳數(shù)設(shè)置
實例3:設(shè)置探測數(shù)據(jù)包數(shù)量
實例4:顯示IP地址,不查主機名
實例5:繞過正常的路由表,直接發(fā)送到網(wǎng)絡(luò)相連的主機
實例6:探測包使用的基本UDP端口設(shè)置6888
網(wǎng)絡(luò)診斷相關(guān)命令或工具使用:
【Linux】網(wǎng)絡(luò)診斷 ping命令詳解_linux ping-CSDN博客
【網(wǎng)絡(luò)】抓包工具Wireshark下載安裝和基本使用教程-CSDN博客
【網(wǎng)絡(luò)】網(wǎng)絡(luò)層ICMP協(xié)議-CSDN博客
一、traceroute概述
1.1 traceroute命令簡介
traceroute跟蹤從IP網(wǎng)絡(luò)到給定主機的路由數(shù)據(jù)包。它利用IP協(xié)議的生存時間(TTL)字段,并嘗試從通往主機的路徑上的每個網(wǎng)關(guān)引出ICMP TIME_EXCEEDED響應(yīng),它默認(rèn)發(fā)送的數(shù)據(jù)包大小是60字節(jié)(IPv4,CentOS7.X)。
通過traceroute我們可以知道信息從你的計算機到互聯(lián)網(wǎng)另一端的主機是走的什么路徑。當(dāng)然每次數(shù)據(jù)包由某一同樣的出發(fā)點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統(tǒng)中,我們稱之為traceroute,在MS Windows中為tracert。 traceroute通過發(fā)送小的數(shù)據(jù)包到目的設(shè)備直到其返回,來測量其需要多長時間。一條路徑上的每個設(shè)備traceroute默認(rèn)要測3次,輸出結(jié)果中包括每次測試的時間(ms)和設(shè)備的名稱(如有的話)及其IP地址。
在大多數(shù)情況下,我們會在linux主機系統(tǒng)下,直接執(zhí)行命令行:
traceroute hostname
而在Windows系統(tǒng)下是執(zhí)行tracert的命令:
tracert hostname
1.2 命令格式
官方釋義翻譯:
traceroute跟蹤從IP網(wǎng)絡(luò)到給定主機的路由數(shù)據(jù)包。它利用IP協(xié)議的生存時間(TTL)字段,并嘗試從通往主機的路徑上的每個網(wǎng)關(guān)引出ICMP TIME_EXCEEDED響應(yīng)。
traceroute唯一需要的參數(shù)是目標(biāo)主機的名稱或IP地址??蛇x的packet_length是探測報文的總大小(IPv4默認(rèn)60字節(jié),IPv6默認(rèn)80字節(jié))
程序試圖通過啟動帶有TTL(生存時間)的探測數(shù)據(jù)包來跟蹤IP數(shù)據(jù)包將遵循的路由到某些internet主機,然后偵聽來自網(wǎng)關(guān)的ICMP“超時”回復(fù)。我們以ttl為1開始探測,然后再增加1,直到我們得到ICMP“端口不可達”(或TCP重置),這意味著我們到達了“主機”,或者達到了最大值(默認(rèn)為30跳)。每個ttl設(shè)置發(fā)送三個探測(默認(rèn)情況下) 打印出一行顯示ttl、網(wǎng)關(guān)地址和每個探針的往返時間。如果需要,可以在地址后面加上其他信息。如果探測答案來自不同的網(wǎng)關(guān),則將打印每個響應(yīng)系統(tǒng)的地址。如果在5.0秒(默認(rèn))內(nèi)沒有響應(yīng),則為該探測打印“*”(星號)。
在行程時間之后,可以打印一些附加的注釋:!H, !N,或!P(主機,網(wǎng)絡(luò)或協(xié)議不可達),!S(源路由失敗),!F(需要分片),!X(管理禁止通信),!V(主機優(yōu)先級違反),!C(優(yōu)先級有效切斷),或!<num> (ICMP不可達代碼<num>)。如果幾乎所有探測都導(dǎo)致某種不可達,traceroute將放棄并退出。
1.3 原理
traceroute程序完整過程:首先它發(fā)送一份TTL字段為1的IP數(shù)據(jù)包給目的主機,處理這個數(shù)據(jù)包的第一個路由器將TTL值減1,然后丟棄該數(shù)據(jù)報,并給源主機發(fā)送一個ICMP報文(“超時”信息,這個報文包含了路由器的IP地址,這樣就得到了第一個路由器的地址),然后traceroute發(fā)送一個TTL為2的數(shù)據(jù)報來得到第二個路由器的IP地址,繼續(xù)這個過程,直至這個數(shù)據(jù)報到達目的主機。
如圖所示,在IPv4中,ICMP報文屬于IP子協(xié)議,協(xié)議(Protocal)字段值為1表示該報文攜帶了ICMPv4。
如圖所示,為ICMPv4的報文格式。所有的ICMP報文都以8位的類型(Type)和代碼(Code)字段開始,其后的16位校驗和(CheckSum)字段涵蓋了整個報文。
其中各字段的含義如下:
- 類型(Type):指定 ICMP 報文的類型,占 1 個字節(jié)。常見類型有:回顯應(yīng)答(Echo Reply:0)、回顯請求(Echo Request:8)等。
- 代碼(Code):指定 ICMP 報文的代碼,占 1 個字節(jié)。用于進一步描述 ICMP 報文,與 Type 字段組合使用。
- 校驗和(Checksum):校驗和,用于檢查 ICMP 報文是否有損壞,占 2 個字節(jié)。
- 數(shù)據(jù)(Data):數(shù)據(jù),可變長度??梢允侨我鈹?shù)據(jù),長度由具體的 ICMP 報文類型和代碼決定。
基于ICMP報文的traceroute是這樣實現(xiàn)的:讓你在客戶端輸入 traceroute 命令+ip時, 客戶端就發(fā)起一個ICMP回顯請求報文,第一個數(shù)據(jù)包,TTL=1,這樣第一跳路由器收到后,要轉(zhuǎn)發(fā)出去時,會將TTL減一,即TTL=0, 就丟棄,然后第一跳路由器就返回一個ICMP超時的錯誤信息,客戶端收到后,會判斷是否收到ICMP 回顯應(yīng)答 報文? 如果還沒收到,就會繼續(xù)發(fā)送回顯請求報文,TTL加1進行嘗試,當(dāng)?shù)降追?wù)器后,服務(wù)器就會發(fā)送ICMP 回顯應(yīng)答報文。
?
1、客戶端發(fā)送第一個TTL=1的ICMP 回顯請求報文,第1跳路由器收到后,查看目的地址進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)前會將TTL會減1,減完后TTL=0,就丟棄該數(shù)據(jù)包,并向客戶端返回TTL超時的ICMP報文。客戶端收到,TTL超時ICMP報文,從報文里面的源地址,得到第1跳地址:10.10.10.10
2、由于客戶端發(fā)現(xiàn)還沒收到回顯應(yīng)答的ICMP報文,于是繼續(xù)嘗試發(fā)送,TTL進行加1。第1跳路由器收到后,根據(jù)目的地址進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)出去時,TTL減1,減完后TTL=1。第2跳路由器收到后,查看目的地址進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)前會將TTL會減1,減完后TTL=0,就丟棄該數(shù)據(jù)包,并向客戶端返回TTL超時的ICMP報文。
?
客戶端收到,TTL超時ICMP報文,從報文里面的源地址,得到第2跳地址:20.20.20.20
3、由于客戶端仍然還沒收到 回顯應(yīng)答 的ICMP報文,于是繼續(xù)嘗試發(fā)送,TTL進行加1。第1跳路由器收到后,根據(jù)目的地址進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)出去時,TTL減1,減完后TTL=2。第2跳路由器收到后,查看目的地址進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)前會將TTL會減1,減完后TTL=1, TTL不是0,路由器就繼續(xù)轉(zhuǎn)發(fā)。數(shù)據(jù)包終于到達服務(wù)器啦!服務(wù)器查看目的地址,就是找我的,于是繼續(xù)解封裝,查看IP數(shù)據(jù)部分(ICMP),發(fā)現(xiàn)是回顯請求的ICMP報文,于是向客戶端發(fā)送一個 回顯應(yīng)答的ICMP報文。
客戶端收到,回顯應(yīng)答的ICMP報文,確認(rèn)UDP數(shù)據(jù)包已成功到達服務(wù)器了,traceroute結(jié)束,并記錄源IP地址:192.168.2.1
1.4 命令功能
traceroute指令讓你追蹤網(wǎng)絡(luò)數(shù)據(jù)包的路由途徑,預(yù)設(shè)數(shù)據(jù)包大小是40Bytes,用戶可另行設(shè)置。
具體參數(shù)格式:traceroute [-dFlnrvx][-f<存活數(shù)值>][-g<網(wǎng)關(guān)>...][-i<網(wǎng)絡(luò)界面>][-m<存活數(shù)值>][-p<通信端口>][-s<來源地址>][-t<服務(wù)類型>][-w<超時秒數(shù)>][主機名稱或IP地址][數(shù)據(jù)包大小]
命令參數(shù):
參數(shù) |
釋義 |
-d |
使用Socket層級的排錯功能。 |
-f |
設(shè)置第一個檢測數(shù)據(jù)包的存活數(shù)值TTL的大小。 |
-F |
不要分割數(shù)據(jù)包。 |
-g |
設(shè)置來源路由網(wǎng)關(guān),最多可設(shè)置8個。 |
-i |
使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。 |
-I |
使用ICMP ECHO進行跟蹤路由 |
-T |
使用TCP SYN進行跟蹤路由(默認(rèn)端口為80) |
-m |
設(shè)置檢測數(shù)據(jù)包的最大存活數(shù)值TTL的大小。 |
-N |
同時發(fā)送探測報文的個數(shù)。同時發(fā)送多個探針可以提高速度traceroute很大。默認(rèn)值為16。 |
-n |
直接使用IP地址而非主機名稱。 |
-p |
設(shè)置UDP傳輸協(xié)議的通信端口。 |
-r |
忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機上。 |
-s |
設(shè)置本地主機送出數(shù)據(jù)包的IP地址。 |
-t |
設(shè)置檢測數(shù)據(jù)包的TOS數(shù)值。 |
-v |
詳細(xì)顯示指令的執(zhí)行過程。 |
-w |
設(shè)置等待遠(yuǎn)端主機回報的時間。 |
-x |
開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗。 |
二、使用實例
實例1:traceroute 用法簡單、最常用的用法
命令:
traceroute www.baidu.com
輸出:
[root@hdp105 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 124.89.90.205 (124.89.90.205) 4.446 ms 4.398 ms 3.707 ms
4 123.139.0.85 (123.139.0.85) 3.225 ms 123.139.1.29 (123.139.1.29) 12.200 ms 123.139.1.177 (123.139.1.177) 2.085 ms
5 * 221.11.0.145 (221.11.0.145) 35.491 ms *
6 219.158.111.233 (219.158.111.233) 33.572 ms * 221.11.0.45 (221.11.0.45) 33.728 ms
7 110.242.66.166 (110.242.66.166) 65.619 ms 110.242.66.170 (110.242.66.170) 65.541 ms *
8 110.242.66.178 (110.242.66.178) 20.313 ms 221.194.45.134 (221.194.45.134) 20.487 ms 110.242.66.182 (110.242.66.182) 19.403 ms
9 221.194.45.134 (221.194.45.134) 22.095 ms * 221.194.45.130 (221.194.45.130) 19.838 ms
.....
29 * * *
30 * * *
說明:
記錄按序列號從1開始,每個紀(jì)錄就是一跳 ,每跳表示一個網(wǎng)關(guān),我們看到有的行有三個時間,單位是 ms,其實就是-q的默認(rèn)參數(shù)。探測數(shù)據(jù)包向每個網(wǎng)關(guān)發(fā)送三個數(shù)據(jù)包后,網(wǎng)關(guān)響應(yīng)后返回的時間;如果您用 traceroute -q 4 www.58.com ,表示向每個網(wǎng)關(guān)發(fā)送4個數(shù)據(jù)包。
有時我們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現(xiàn)這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關(guān)的數(shù)據(jù)包返回數(shù)據(jù)。
實例2:跳數(shù)設(shè)置
命令:限制路由經(jīng)過 10跳停止
traceroute -m 10 www.baidu.com
輸出:
[root@hdp105 ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets
1 * * *
2 * * *
3 124.89.90.205 (124.89.90.205) 5.417 ms 5.530 ms 5.287 ms
4 123.139.1.29 (123.139.1.29) 1.992 ms 123.139.1.177 (123.139.1.177) 1.968 ms 123.139.2.161 (123.139.2.161) 1.945 ms
5 * 221.11.0.1 (221.11.0.1) 2.090 ms *
6 219.158.111.233 (219.158.111.233) 35.322 ms 221.11.0.69 (221.11.0.69) 28.003 ms *
7 219.158.111.233 (219.158.111.233) 33.298 ms 33.255 ms *
8 221.194.45.130 (221.194.45.130) 20.088 ms 110.242.66.170 (110.242.66.170) 20.029 ms 221.194.45.130 (221.194.45.130) 20.582 ms
9 * * 221.194.45.134 (221.194.45.134) 21.801 ms
10 * * *
[root@hdp105 ~]#
實例3:設(shè)置探測數(shù)據(jù)包數(shù)量
命令:限制路由經(jīng)過 10跳且 每一跳發(fā)送4個探測數(shù)據(jù)包
[root@hdp105 ~]# traceroute -q 4 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 10 hops max, 60 byte packets
1 * * * *
2 * * * *
3 124.89.90.205 (124.89.90.205) 3.536 ms 3.507 ms 2.734 ms 3.425 ms
4 * * * 123.139.2.37 (123.139.2.37) 2.599 ms
5 221.11.0.1 (221.11.0.1) 2.756 ms 2.727 ms 5.096 ms 7.570 ms
6 * 221.11.0.169 (221.11.0.169) 22.440 ms 221.11.0.69 (221.11.0.69) 27.588 ms *
7 * 110.242.66.186 (110.242.66.186) 25.913 ms 219.158.111.233 (219.158.111.233) 21.579 ms 110.242.66.178 (110.242.66.178) 20.378 ms
8 221.194.45.130 (221.194.45.130) 23.732 ms 110.242.66.162 (110.242.66.162) 20.793 ms 221.194.45.130 (221.194.45.130) 20.476 ms 23.077 ms
9 221.194.45.134 (221.194.45.134) 24.247 ms * * *
10 * * * *
[root@hdp105 ~]#
如下圖可以看到 發(fā)送4個探測數(shù)據(jù)包 輸出了 4個數(shù)據(jù)包的時間
實例4:顯示IP地址,不查主機名
命令:
traceroute -n -m 10 www.baidu.com
輸出:
實例5:繞過正常的路由表,直接發(fā)送到網(wǎng)絡(luò)相連的主機
命令:
traceroute -r www.baidu.com
輸出:
實例6:探測包使用的基本UDP端口設(shè)置6888
命令:
traceroute -p 6888 www.baidu.com
輸出:
[root@hdp105 ~]# traceroute -p 6888 -m 10 www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 10 hops max, 60 byte packets
1 * * *
2 * * *
3 124.89.90.205 (124.89.90.205) 2.079 ms 2.502 ms 2.440 ms
4 123.139.0.85 (123.139.0.85) 2.280 ms 123.139.2.161 (123.139.2.161) 1.945 ms 123.139.1.29 (123.139.1.29) 2.212 ms
5 * 221.11.0.53 (221.11.0.53) 27.007 ms *
6 221.11.0.97 (221.11.0.97) 22.444 ms * *
7 110.242.66.170 (110.242.66.170) 20.305 ms * *
8 110.242.66.174 (110.242.66.174) 20.119 ms 221.194.45.130 (221.194.45.130) 19.840 ms 221.194.45.134 (221.194.45.134) 21.036 ms
9 * 221.194.45.130 (221.194.45.130) 20.001 ms *
10 * * *
[root@hdp105 ~]#
參考文章:
【Linux】網(wǎng)絡(luò)診斷 ping命令詳解_linux ping-CSDN博客
traceroute 命令,Linux traceroute 命令詳解:顯示數(shù)據(jù)包到主機間的路徑 - Linux 命令搜索引擎
Linux命令:traceroute命令(路由跟蹤)-CSDN博客
原文鏈接:linux網(wǎng)絡(luò)命令--traceroute_traceroute命令詳解-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-802991.html
動態(tài)圖解 | 9分鐘讓你明明白白看懂Traceroute(路由追蹤)的原理與實現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-802991.html
到了這里,關(guān)于【Linux】網(wǎng)絡(luò)診斷 traceroute命令詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!