traceroute 詳解及結果出現*的分析


traceroute詳解

  用來查看主機及目標主機之間的路由路徑。每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,MS Windows中為tracert。 traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其IP地址。

在大多數情況下,我們會在linux主機系統下,直接執行命令行:

traceroute hostname

而在Windows系統下是執行tracert的命令:

tracert hostname

 

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.使用實例:

 

實例1:traceroute 用法簡單、最常用的用法

命令:

traceroute www.baidu.com 

輸出:

[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
 211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
 211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
 210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
 202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
 61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
 124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
 202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
 * * *
 * * *
[root@localhost ~]#
 

 

說明: 

記錄按序列號從1開始,每個紀錄就是一跳 ,每跳表示一個網關,我們看到每行有三個時間,單位是 ms,其實就是-q的默認參數。探測數據包向每個網關發送三個數據包后,網關響應后返回的時間;如果您用 traceroute -q 4 www.58.com ,表示向每個網關發送4個數據包

 

有時我們traceroute 一台主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回信息,所以我們得不到什么相關的數據包返回數據。

 

  使用兩種:使用ICMP的和使用UDP的。

  Microsoft使用ICMP,所以win95上發出的traceRT應使用的是ICMP,但我沒有用 sniffer查過;其它包括unix和cisco router都使用UDP.
      ICMP traceroute :       ===========       使用ICMP Echo Request , Echo Reply and TTL-expired .
      源發出 ICMP        Equest,第一個request的TTL為1,第二個request的TTL為2,以后依此遞增直至第30個;中間的router送回ICMP  TTL-expired ( ICMP type  11)通知source,(packet同時因TTL超時而被drop),由此source知曉一路上經過的每一個router;最后的  destination送回ICMP Echo Reply 。
      所以中間任何一個router上如果封了ICMP Echo Request , traceroute就不能工作 ;如果封了type 11 (TTL-expired), 中間的router全看不到 ,但能看到packet 到達了最后的destination;如果封了ICMP Echo Reply,中間的全能看到,最后的destination看不到 。


      UDP traceroute:       ==========       使用ICMP TTL-expired (type 11), ICMP port unreachable (type 3, code 3), UDP       port >32768 .
      source發出UDP packet, source port使用隨機的任何大於32768的高段port, destination  port從33434開始每送個probe依此遞增,直至33434+29,(cisco  router上使用extended-traceroute命令可以修改這個起始的33434 port #),       同時TTL從1開始依此遞增,直至1+29=30(最多送30個probe)。中間的router送回 ICMP  TTL-expired,使得source得知了中間的每一個router,最后的destination送回TTL-expired 和ICMP  port unreachable (因為任何主機上都沒有應用使用UDP port# >32768這樣的高段port )。
      所以中間某處封掉UDP port>32768回導致traceroute不工作 ;封掉TTL超時會使source看不到中間的router (有的router根本不支持回送TTL超時);封掉type3 code3可能看不到destination .
      另外需要知道的是,由於回送TTL-expired的信息需要CPU生成一個packet,必須打斷  CPU,為保證其它工作的正常進行,cisco router每隔一秒才處理traceroute ,所以在source 上你可能看到中間一路 * *  *,但卻看得到最后的destination. 這時你應知道這是中間的router  CPU太忙或者中間路由器不回送TTL-expired包的原因 ,不必大驚小怪的。:-)

 

有時我們在某一網關處延時比較長,有可能是某台網關比較阻塞,也可能是物理設備本身的原因。當然如果某台DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n 參數來避免DNS解析,以IP格式輸出數據

 

如果在局域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是網關的問題。如果我們通過遠程來訪問某台服務器遇到問題時,我們用到traceroute 追蹤數據包所經過的網關,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。 

 

實例2:跳數設置 

命令:

traceroute -m 10 www.baidu.com

輸出:

[root@localhost ~]# traceroute -m 10 www.baidu.com
traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets
 192.168.74.2 (192.168.74.2)  1.534 ms  1.775 ms  1.961 ms
 211.151.56.1 (211.151.56.1)  0.508 ms  0.514 ms  0.507 ms
 211.151.227.206 (211.151.227.206)  0.571 ms  0.558 ms  0.550 ms
 210.77.139.145 (210.77.139.145)  0.708 ms  0.729 ms  0.785 ms
 202.106.42.101 (202.106.42.101)  7.978 ms  8.155 ms  8.311 ms
 bt-228-037.bta.net.cn (202.106.228.37)  772.460 ms bt-228-025.bta.net.cn (202.106.228.25)  2.152 ms 61.148.154.97 (61.148.154.97)  772.107 ms
 124.65.58.221 (124.65.58.221)  4.875 ms 61.148.146.29 (61.148.146.29)  2.124 ms 124.65.58.221 (124.65.58.221)  4.854 ms
 123.126.6.198 (123.126.6.198)  2.944 ms 61.148.156.6 (61.148.156.6)  3.505 ms 123.126.6.198 (123.126.6.198)  2.885 ms
 * * *
 * * *
[root@localhost ~]#

 

說明:最多跳到10就結束。

 

實例3:顯示IP地址,不查主機名 

命令: 

traceroute -n www.baidu.com 

輸出:

 [root@localhost ~]# traceroute -n www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 211.151.74.2  5.430 ms  5.636 ms  5.802 ms
 211.151.56.57  0.627 ms  0.625 ms  0.617 ms
 211.151.227.206  0.575 ms  0.584 ms  0.576 ms
 210.77.139.145  0.703 ms  0.754 ms  0.806 ms
 202.106.42.101  23.683 ms  23.869 ms  23.998 ms
 202.106.228.37  247.101 ms * *
 61.148.146.29  5.256 ms 124.65.58.213  4.386 ms  4.373 ms
 202.106.35.190  1.610 ms 61.148.156.138  1.786 ms 61.148.3.34  2.089 ms
 * * *
 * * *
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 211.151.74.2 (211.151.74.2)  4.671 ms  4.865 ms  5.055 ms
 211.151.56.57 (211.151.56.57)  0.619 ms  0.618 ms  0.612 ms
 211.151.227.206 (211.151.227.206)  0.620 ms  0.642 ms  0.636 ms
 210.77.139.145 (210.77.139.145)  0.720 ms  0.772 ms  0.816 ms
 202.106.42.101 (202.106.42.101)  7.667 ms  7.910 ms  8.012 ms
 bt-228-025.bta.net.cn (202.106.228.25)  2.965 ms  2.440 ms 61.148.154.97 (61.148.154.97)  431.337 ms
 124.65.58.213 (124.65.58.213)  5.134 ms  5.124 ms  5.044 ms
 202.106.35.190 (202.106.35.190)  1.917 ms  2.052 ms  2.059 ms
 * * *
 * * *
[root@localhost ~]# 

 

實例4:探測包使用的基本UDP端口設置6888 

命令: 

traceroute -p 6888 www.baidu.com 

輸出: 

[root@localhost ~]# traceroute -p 6888 www.baidu.com
traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets
 211.151.74.2 (211.151.74.2)  4.927 ms  5.121 ms  5.298 ms
 211.151.56.1 (211.151.56.1)  0.500 ms  0.499 ms  0.509 ms
 211.151.224.90 (211.151.224.90)  0.637 ms  0.631 ms  0.641 ms
 * * *
 220.181.70.98 (220.181.70.98)  5.050 ms  5.313 ms  5.596 ms
 220.181.17.94 (220.181.17.94)  1.665 ms !X * *
[root@localhost ~]#

 

實例5:把探測包的個數設置為值4 

命令: 

traceroute -q 4 www.baidu.com 

輸出:

[root@localhost ~]# traceroute -q 4 www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 211.151.74.2 (211.151.74.2)  40.633 ms  40.819 ms  41.004 ms  41.188 ms
 211.151.56.57 (211.151.56.57)  0.637 ms  0.633 ms  0.627 ms  0.619 ms
 211.151.227.206 (211.151.227.206)  0.505 ms  0.580 ms  0.571 ms  0.569 ms
 210.77.139.145 (210.77.139.145)  0.753 ms  0.800 ms  0.853 ms  0.904 ms
 202.106.42.101 (202.106.42.101)  7.449 ms  7.543 ms  7.738 ms  7.893 ms
 61.148.154.97 (61.148.154.97)  316.817 ms bt-228-025.bta.net.cn (202.106.228.25)  3.695 ms  3.672 ms *
 124.65.58.213 (124.65.58.213)  3.056 ms  2.993 ms  2.960 ms 61.148.146.29 (61.148.146.29)  2.837 ms
 61.148.3.34 (61.148.3.34)  2.179 ms  2.295 ms  2.442 ms 202.106.35.190 (202.106.35.190)  7.136 ms
 * * * *
 * * * *
[root@localhost ~]#
 

說明:表示對每個路徑上的設備發送4次數據包請求,響應時間有4個。

 

實例6:繞過正常的路由表,直接發送到網絡相連的主機 

命令: 

 traceroute -r www.baidu.com 

輸出:

 

[root@localhost ~] # traceroute -r www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
connect: 網絡不可達
[root@localhost ~]#   

 

實例7:把對外發探測包的等待響應時間設置為3 

命令: 

traceroute -w 3 www.baidu.com 

輸出:

 [root@localhost ~]# traceroute -w 3 www.baidu.com
traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets
 211.151.74.2 (211.151.74.2)  2.306 ms  2.469 ms  2.650 ms
 211.151.56.1 (211.151.56.1)  0.621 ms  0.613 ms  0.603 ms
 211.151.227.206 (211.151.227.206)  0.557 ms  0.560 ms  0.552 ms
 210.77.139.145 (210.77.139.145)  0.708 ms  0.761 ms  0.817 ms
 202.106.42.101 (202.106.42.101)  7.520 ms  7.774 ms  7.902 ms
 bt-228-025.bta.net.cn (202.106.228.25)  2.890 ms  2.369 ms 61.148.154.97 (61.148.154.97)  471.961 ms
 124.65.58.221 (124.65.58.221)  4.490 ms  4.483 ms  4.472 ms
 123.126.6.198 (123.126.6.198)  2.948 ms 61.148.156.6 (61.148.156.6)  7.688 ms  7.756 ms
 * * *
 * * *
[root@localhost ~]# 

 

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地址,三個包每次來回所花時間。 

 

windows之tracert:

 

格式:

 

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

 

參數說明:

 

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

 

該診斷實用程序通過向目的地發送具有不同生存時間 (TL) 的 Internet 控制信息協議 (CMP) 回應報文,以確定至目的地的路由。路徑上的每個路由器都要在轉發該 ICMP 回應報文之前將其 TTL 值至少減 1,因此 TTL 是有效的跳轉計數。當報文的 TTL 值減少到 0 時,路由器向源系統發回 ICMP 超時信息。通過發送 TTL 為 1 的第一個回應報文並且在隨后的發送中每次將 TTL 值加 1,直到目標響應或達到最大 TTL 值,Tracert 可以確定路由。通過檢查中間路由器發發回的 ICMP 超時 (ime Exceeded) 信息,可以確定路由器。注意,有些路由器“安靜”地丟棄生存時間 (TLS) 過期的報文並且對 tracert 無效。

 

參數

 

-d 指定不對計算機名解析地址。

 

-h maximum_hops 指定查找目標的跳轉的最大數目。

 

-jcomputer-list 指定在 computer-list 中松散源路由。

 

-w timeout 等待由 timeout 對每個應答指定的毫秒數。

 

target_name 目標計算機的名稱。

 

 

 

實例:

 

復制代碼
C:\Users\Administrator>tracert www.58.com
Tracing route to www.58.com [221.187.111.30] over a maximum of 30 hops:
  1     1 ms     1 ms     1 ms  10.58.156.1   2     1 ms    <1 ms    <1 ms  10.10.10.1   3     1 ms     1 ms     1 ms  211.103.193.129   4     2 ms     2 ms     2 ms  10.255.109.129   5     1 ms     1 ms     3 ms  124.205.98.205   6     2 ms     2 ms     2 ms  124.205.98.253   7     2 ms     6 ms     1 ms  202.99.1.125   8     5 ms     6 ms     5 ms  118.186.0.113   9   207 ms     *        *     118.186.0.106  10     8 ms     6 ms    11 ms  124.238.226.201  11     6 ms     7 ms     6 ms  219.148.19.177  12    12 ms    12 ms    16 ms  219.148.18.117  13    14 ms    17 ms    16 ms  219.148.19.125  14    13 ms    13 ms    12 ms  202.97.80.113  15     *        *        *     Request timed out.  16    12 ms    12 ms    17 ms  bj141-147-82.bjtelecom.net [219.141.147.82]  17    13 ms    13 ms    12 ms  202.97.48.2  18     *        *        *     Request timed out.  19    14 ms    14 ms    12 ms  221.187.224.85  20    15 ms    13 ms    12 ms  221.187.104.2  21     *        *        *     Request timed out.  22    15 ms    17 ms    18 ms  221.187.111.30
Trace complete.

 


免責聲明!

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



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