【Linux】一步一步学Linux——traceroute命令(167)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 附錄
01. 命令概述
traceroute命令用于追蹤數據包在網絡上的傳輸時的全部路徑,它默認發送的數據包大小是40字節。通過traceroute我們可以知道信息從你的計算機到互聯網另一端的主機是走的什么路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。
traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其ip地址。
02. 命令格式
格式:traceroute [選項] [參數]03. 常用選項
-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 開啟或關閉數據包的正確性檢驗04. 參考示例
4.1 追蹤本地數據包到百度的傳輸路徑
[root@localhost ~]# traceroute www.baidu.com traceroute to www.baidu.com (183.232.231.172), 30 hops max4.2 設置跳數
[root@localhost ~]# traceroute -m 7 www.baidu.com traceroute to www.baidu.com (183.232.231.174), 7 hops max, 60 byte packets1 gateway (172.16.0.1) 0.907 ms 2.072 ms 3.795 ms2 * * *4.3 顯示IP地址,不查主機名
[root@localhost ~]# traceroute -n www.baidu.com traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets1 172.16.0.1 1.103 ms 2.567 ms 3.163 ms2 * * *4.4 設置探測包的個數
[root@localhost ~]# traceroute -q 4 www.baidu.com traceroute to www.baidu.com (183.232.231.172), 30 hops max, 60 byte packets1 gateway (172.16.0.1) 0.927 ms 2.614 ms 3.645 ms 4.239 ms2 * * * *4.5 設置等待響應時間
[root@localhost ~]# traceroute -w 3 www.baidu.com traceroute to www.baidu.com (183.232.231.172), 30 hops max, 60 byte packets1 gateway (172.16.0.1) 2.017 ms 3.584 ms 4.136 ms2 * * *4.6 繞過正常的路由表,直接發送到網絡相連的主機
[root@localhost ~]# traceroute -r www.baidu.com traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets connect: 網絡不可達 [root@localhost ~]#4.7 探測包使用的基本UDP端口設置10086
[root@localhost ~]# traceroute -p 10086 www.baidu.com traceroute to www.baidu.com (183.232.231.172), 30 hops max, 60 byte packets1 gateway (172.16.0.1) 1.055 ms 2.671 ms 3.537 ms2 * * *4.8 Traceroute工作原理
Traceroute最簡單的基本用法是:traceroute hostname
Traceroute程序的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1的IP datagram(其實,每次送出的為3個40字節的包,包括源地址,目的地址和包發出的時間標簽)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變為0了,所以該路由器會將此datagram丟掉,并送回一個「ICMP time exceeded」消息(包括發IP包的源地址,IP包的所有內容及路由器的IP地址),traceroute 收到這個消息后,便知道這個路由器存在于這個路徑上,接著traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由器… traceroute 每次將送出的datagram的TTL 加1來發現另一個路由器,這個重復的動作一直持續到某個datagram 抵達目的地。當datagram到達目的地后,該主機并不會送回ICMP time exceeded消息,因為它已是目的地了,那么traceroute如何得知目的地到達了呢?
Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程序都不會用的號碼(30000 以上),所以當此UDP datagram 到達目的地后該主機會送回一個「ICMP port unreachable」的消息,而當traceroute 收到這個消息時,便知道目的地已經到達了。所以traceroute 在Server端也是沒有所謂的Daemon 程式。
Traceroute提取發 ICMP TTL到期消息設備的IP地址并作域名解析。每次 ,Traceroute都打印出一系列數據,包括所經過的路由設備的域名及 IP地址,三個包每次來回所花時間。
05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——traceroute命令(167)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——n
- 下一篇: 【Linux】一步一步学Linux——t