traceroute命令詳解

  

基礎命令學習目錄首頁php

 

原文連接:https://www.cnblogs.com/peida/archive/2013/03/07/2947326.htmlhtml

經過traceroute咱們能夠知道信息從你的計算機到互聯網另外一端的主機是走的什麼路徑。固然每次數據包由某一一樣的出發點(source)到達某一一樣的目的地(destination)走的路徑可能會不同,但基本上來講大部分時候所走的路由是相同的。linux系統中,咱們稱之爲traceroute,在MS Windows中爲tracert。 traceroute經過發送小的數據包到目的設備直到其返回,來測量其須要多長時間。一條路徑上的每一個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(若有的話)及其IP地址。linux

在大多數狀況下,咱們會在linux主機系統下,直接執行命令行:小程序

traceroute hostnamewindows

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

tracert hostname服務器

 

1.命令格式:網絡

traceroute[參數][主機]dom

 

2.命令功能:ide

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
 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
 8  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
 9  * * *
30  * * *
[root@localhost ~]# 
 

說明:

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

有時咱們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的狀況,多是防火牆封掉了ICMP的返回信息,因此咱們得不到什麼相關的數據包返回數據。

有時咱們在某一網關處延時比較長,有多是某臺網關比較阻塞,也多是物理設備自己的緣由。固然若是某臺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
 1  192.168.74.2 (192.168.74.2)  1.534 ms  1.775 ms  1.961 ms
 2  211.151.56.1 (211.151.56.1)  0.508 ms  0.514 ms  0.507 ms
 3  211.151.227.206 (211.151.227.206)  0.571 ms  0.558 ms  0.550 ms
 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.729 ms  0.785 ms
 5  202.106.42.101 (202.106.42.101)  7.978 ms  8.155 ms  8.311 ms
 6  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
 7  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
 8  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
 9  * * *
10  * * *
[root@localhost ~]#
 

說明:

 

 

實例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
 1  211.151.74.2  5.430 ms  5.636 ms  5.802 ms
 2  211.151.56.57  0.627 ms  0.625 ms  0.617 ms
 3  211.151.227.206  0.575 ms  0.584 ms  0.576 ms
 4  210.77.139.145  0.703 ms  0.754 ms  0.806 ms
 5  202.106.42.101  23.683 ms  23.869 ms  23.998 ms
 6  202.106.228.37  247.101 ms * *
 7  61.148.146.29  5.256 ms 124.65.58.213  4.386 ms  4.373 ms
 8  202.106.35.190  1.610 ms 61.148.156.138  1.786 ms 61.148.3.34  2.089 ms
 9  * * *
30  * * *
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 1  211.151.74.2 (211.151.74.2)  4.671 ms  4.865 ms  5.055 ms
 2  211.151.56.57 (211.151.56.57)  0.619 ms  0.618 ms  0.612 ms
 3  211.151.227.206 (211.151.227.206)  0.620 ms  0.642 ms  0.636 ms
 4  210.77.139.145 (210.77.139.145)  0.720 ms  0.772 ms  0.816 ms
 5  202.106.42.101 (202.106.42.101)  7.667 ms  7.910 ms  8.012 ms
 6  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
 7  124.65.58.213 (124.65.58.213)  5.134 ms  5.124 ms  5.044 ms
 8  202.106.35.190 (202.106.35.190)  1.917 ms  2.052 ms  2.059 ms
 9  * * *
30  * * *
[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
 1  211.151.74.2 (211.151.74.2)  4.927 ms  5.121 ms  5.298 ms
 2  211.151.56.1 (211.151.56.1)  0.500 ms  0.499 ms  0.509 ms
 3  211.151.224.90 (211.151.224.90)  0.637 ms  0.631 ms  0.641 ms
 4  * * *
 5  220.181.70.98 (220.181.70.98)  5.050 ms  5.313 ms  5.596 ms
 6  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
 1  211.151.74.2 (211.151.74.2)  40.633 ms  40.819 ms  41.004 ms  41.188 ms
 2  211.151.56.57 (211.151.56.57)  0.637 ms  0.633 ms  0.627 ms  0.619 ms
 3  211.151.227.206 (211.151.227.206)  0.505 ms  0.580 ms  0.571 ms  0.569 ms
 4  210.77.139.145 (210.77.139.145)  0.753 ms  0.800 ms  0.853 ms  0.904 ms
 5  202.106.42.101 (202.106.42.101)  7.449 ms  7.543 ms  7.738 ms  7.893 ms
 6  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 *
 7  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
 8  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
 9  * * * *
30  * * * *
[root@localhost ~]# 
 

說明:

 

 

 

實例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
 1  211.151.74.2 (211.151.74.2)  2.306 ms  2.469 ms  2.650 ms
 2  211.151.56.1 (211.151.56.1)  0.621 ms  0.613 ms  0.603 ms
 3  211.151.227.206 (211.151.227.206)  0.557 ms  0.560 ms  0.552 ms
 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.761 ms  0.817 ms
 5  202.106.42.101 (202.106.42.101)  7.520 ms  7.774 ms  7.902 ms
 6  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
 7  124.65.58.221 (124.65.58.221)  4.490 ms  4.483 ms  4.472 ms
 8  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
 9  * * *
30  * * *
[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.

 

原文  : http://www.freebuf.com/articles/network/118221.html

1、路由追蹤程序traceroute/tracert

Traceroute是Linux和Mac OS等系統默認提供的路由追蹤小程序,Tracert是Windows系統默認提供的路由追蹤小程序。兩者的功能相同,都能探測數據包從源地址到目的地址通過的路由器的IP地址。Traceroute/Tracert的實現都藉助了TTL:經過向目的地址發送一系列的探測包,設置探測包的TTL初始值分別爲1,2,3…,根據返回的超時通知(ICMP Time Exceeded Message)獲得源地址與目的地址之間的每一跳路由信息。雖然二者輸出結果一致,但在實現原理上還有着顯著的差異。

2、Traceroute實現原理

1. 從源地址發出一個UDP探測包到目的地址,並將TTL設置爲1;

2. 到達路由器時,將TTL減1;

3. 當TTL變爲0時,包被丟棄,路由器向源地址發回一個ICMP超時通知(ICMP Time Exceeded Message),內含發送IP包的源地址,IP包的全部內容及路由器的IP地址;

4. 當源地址收到該ICMP包時,顯示這一跳路由信息;

5. 重複1~5,並每次設置TTL加1;

6. 直至目標地址收到探測數據包,並返回端口不可達通知(ICMP Port Unreachable);

7. 當源地址收到ICMP Port Unreachable包時中止traceroute。

注:

1. Linux和Mac OS等系統使用UDP包進行探測,目標端口號默認爲33434,每次探測目標端口號加1。Traceroute故意使用了一個大於 30000 的目標端口號,以保證目標地址收到數據包後可以返回一個「端口不可達」的 ICMP 報文,因而源地址就可將端口不可達報文看成跟蹤結束的標誌。

2.Traceroute每跳默認發送3個探測包(發包的數量可經過-q進行設置),探測包的返回會受到網絡狀況的影響。若是防火牆封掉了ICMP的返回信息,那麼相應的延時位置會以*顯示。若是某臺網關阻塞或者某臺DNS出現問題,那麼相應行的延時會變長。能夠加-n 參數來避免DNS解析,以IP格式輸出數據。

3.每一個探測包都有惟一的標識號,使得Traceroute可以識別返回的包。UDP數據包使用遞增的目標端口號進行標識。

3、Tracert實現原理

1. 從源地址發出一個ICMP請求回顯(ICMP Echo Request)數據包到目的地址,並將TTL設置爲1;

2. 到達路由器時,將TTL減1;

3. 當TTL變爲0時,包被丟棄,路由器向源地址發回一個ICMP超時通知(ICMP Time Exceeded Message),內含發送IP包的源地址,IP包的全部內容及路由器的IP地址;

4. 當源地址收到該ICMP包時,顯示這一跳路由信息;

5. 重複1~5,並每次設置TTL加1;

6. 直至目標地址收到探測數據包,並返回ICMP迴應答覆(ICMPEcho Reply);

7. 當源地址收到ICMP Echo Reply包時中止tracert。

注:

1.Windows系統使用ICMP請求回顯(ICMP Echo Request)數據包進行探測,源地址以目的地址返回的ICMP迴應答覆(ICMP Echo Reply)做爲跟蹤結束標誌。

2.Traceroute每跳默認發送3個探測包。在未能到達路由器或未返回ICMP超時通知的狀況下,相應的延時位置會以*顯示。

3.每一個探測包都有惟一的標識號,ICMP數據包使用seq進行標識。

4、Wireshark抓包解析

本次實驗經過追蹤本機到達www.baidu.com所通過的路由信息,並使用Wireshark抓取數據包進行簡要分析來驗證traceroute和tracert的實現原理。

1.Linux/ Mac OS——traceroute

(1)Mac OS

traceroute www.baidu.com

如圖,Traceroute可以顯示到達目的地址所需的跳數、通過的路由器的IP地址、延時、丟包狀況等信息。第一跳爲10.203.4.225,第二跳爲10.2.30.1,第三跳爲10.2.1.1;每條記錄輸出3個延時結果,說明源地址每次默認發送三個數據包;在11條記錄只有1個延時結果,說明源地址只收到了1個ICMP超時通知消息。

如圖,源地址10.203.4.244向目的地址119.75.218.70發送UDP數據包,每跳默認發送3個,TTL設置爲1;數據包遇到路由器以後,被丟棄,返回Time tolive exceeded超時通知,解析出路由器IP地址10.203.4.225。源地址再發數據包,設置TTL=2,從而解析出第二跳路由10.2.30.1。同理,解析出第三跳路由10.2.1.1。與終端顯示的信息相符。

從圖中還能夠看出,數據包目標端口號從33435開始而且每次加1,traceroute可以經過UDP數據包遞增的目標端口號來惟一識別返回的包。

如圖,第11跳的61.51.113.202路由只返回了一個ICMP超時通知,與終端顯示的信息相符。

如圖,TTL=34時,ICMP數據包中Type=3(Destination unreachable),Code=3(Port unreachable),說明目的地址向源地址發送了端口不可達通知(ICMP Port Unreachable),表示數據包到達目的地址。

(2)Linux

traceroute www.baidu.com

Linux系統下的抓包解析與Mac OS相似。

2. Windows——tracert

tracert www.baidu.com

如圖,第一跳爲10.8.160.1,第二跳爲10.0.14.1,第三跳爲10.0.4.41;每條記錄輸出3個延時結果,說明源地址每次默認發送三個數據包;在第6條記錄只有2個延時結果,說明源地址只收到了2個ICMP超時通知消息;數據包從源地址通過15跳以後到達目的地址。

如圖,源地址10.8.169.32向目的地址220.181.111.188發送ICMP請求回顯(ICMP Echo Request)數據包,每跳默認發送3個,TTL設置爲1;數據包遇到路由器以後,被丟棄,返回Time tolive exceeded超時通知,解析出路由器IP地址10.8.160.1。源地址再發數據包,設置TTL=2,從而解析出第二跳路由10.0.14.1和10.0.14.5。同理,解析出第三跳路由10.0.4.41。與終端顯示的信息相符。

從圖中還能夠看出,數據包從seq=142開始每次加1,tracert可以經過seq來惟一識別返回的包。

如圖,seq=157的數據包沒有獲得路由器172.16.7.1的超時通知消息,所以第6跳只有兩個延時結果,與終端顯示的信息相符。

如圖,TTL=15時,源地址收到了目的地址的ICMP迴應答覆(ICMP Echo Reply),說明源地址通過了15跳到達目的地址,與終端顯示信息相符。

5、The Great Cannon案例

2015年3月26日開始,因某些衆所周知的緣由,GitHub遭到其網站歷史上最大規模DDoS攻擊。瑞典網絡安全公司Netresec經過查看數據包中的TTL值判定這是一塊兒中間人攻擊事件。在此過程當中,他們藉助了路由追蹤程序traceroute/tracert的實現原理。首先創建一個正常的鏈接,確保數據包可以到達目標機器。而後依次發送TTL值爲1,2,3…的HTTP請求。若數據包沒有到達中間人設備,則不會出現HTTP響應;若數據包到達中間人設備,則會出現HTTP響應,而後只需在出現HTTP響應時,查看請求數據包設置初始TTL值便可。

安全人員根據下圖發現中間人設備潛伏在11和12跳之間。Web請求中 TTL 值爲11的時候數據包沒有響應,而TTL值爲12的時候,返回了正常響應。

6、小結

Traceroute/tracert路由追蹤程序是用來追蹤數據包到達網絡主機所通過的路由信息的重要工具,雖然路由追蹤效果一致,但實現原理略有不一樣:前者藉助UDP協議,後者藉助ICMP協議。此外,利用TTL追蹤攻擊主機的位置,也爲咱們提供了新的思路。

參考資料

[1] http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html

[2] http://www.dearda.com/index.php/archives/1361

[3] https://translate.google.com/translatehl=zh-CN&sl=en&u=https://technet.microsoft.com/en-us/library/cc940128.aspx&prev=search

[4] http://www.freebuf.com/news/topnews/63148.html

[5]https://blog.gesha.net/archives/499/

*本文原創做者:ArkTeam/YSYY,轉載須註明來自FreeBuf.COM

 

Traceroute使用詳解

 

Internet,即國際互聯網,是目前世界上最大的計算機網絡,更確切地說是網絡的網絡。它由遍及全球的幾萬局域網和數百萬臺計算機組成,並經過用於異構網絡的TCP/IP協議進行網間通訊。互聯網中,信息的傳送是經過網中許多段的傳輸介質和設備(路由器,交換機,服務器,網關等等)從一端到達另外一端。每個鏈接在Internet上的設備,如主機、路由器、接入服務器等通常狀況下都會有一個獨立的IP地址。經過Traceroute咱們能夠知道信息從你的計算機到互聯網另外一端的主機是走的什麼路徑。固然每次數據包由某一一樣的出發點(source)到達某一一樣的目的地(destination)走的路徑可能會不同,但基本上來講大部分時候所走的路由是相同的。UNIX系統中,咱們稱之爲Traceroute,MS Windows中爲Tracert。 Traceroute經過發送小的數據包到目的設備直到其返回,來測量其須要多長時間。一條路徑上的每一個設備Traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(若有的話)及其IP地址。
在大多數狀況下,做爲網絡工程技術人員或者系統管理員會在UNIX主機系統下,直接執行命令行:
Traceroute hostname
而在Windows系統下是執行Tracert的命令:
Tracerert hostname
好比在北京地區使用windows NT 主機(已經與北京163創建了點對點的鏈接後)
使用NT系統中的Tracert命令:(用戶可用:開始->運行,輸入"command" 調出command窗口使用此命令)
C://>tracertwww.yahoo.com
Tracing route towww.yahoo.com [204.71.200.75]
over a maximum of 30 hops:

1 161 ms 150 ms 160 ms 202.99.38.67
2 151 ms 160 ms 160 ms 202.99.38.65
3 151 ms 160 ms 150 ms 202.97.16.170
4 151 ms 150 ms 150 ms 202.97.17.90
5 151 ms 150 ms 150 ms 202.97.10.5
6 151 ms 150 ms 150 ms 202.97.9.9
7 761 ms 761 ms 752 ms border7-serial3-0-0.Sacramento.cw.net [204.70.122.69]
8 751 ms 751 ms * core2-fddi-0.Sacramento.cw.net [204.70.164.49]
9 762 ms 771 ms 751 ms border8-fddi-0.Sacramento.cw.net [204.70.164.67]
10 721 ms * 741 ms globalcenter.Sacramento.cw.net [204.70.123.6]
11 * 761 ms 751 ms pos4-2-155M.cr2.SNV.globalcenter.net [206.132.150.237]
12 771 ms * 771 ms pos1-0-2488M.hr8.SNV.globalcenter.net [206.132.254.41]
13 731 ms 741 ms 751 ms bas1r-ge3-0-hr8.snv.yahoo.com [208.178.103.62]
14 781 ms 771 ms 781 ms www10.yahoo.com [204.71.200.75]

Trace complete.
您目前正在ONLINE狀態的話,能夠直接嘗試一下。
參數說明:
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
目標計算機的名稱。
2、什麼是Traceroute網關—— Traceroute Gateway?
通常使用Traceroute(或者是Tracert)是基於一臺主機的,可是一般您只能知道以手邊的主機爲源地址到互聯網絡上任意一臺在線的主機的路由鏈接質量以及數據傳輸效率的狀況,而使用基於WEB的方式,只要一臺主機安裝了特定的CGI程序,用戶就能夠經過這臺主機運行相關的程序,執行Traceroute的功能。這臺主機咱們把它叫作Traceroute網關。Traceroute網關能夠幫助用戶瞭解網絡的物理與邏輯鏈接的拓撲狀況以及數據傳輸的效率。若是這種網關足夠多,咱們就能夠方便地瞭解到各主機之間鏈接的狀況了。
3、爲何要使用Traceroute?
1.幾乎每個網上人(尤爲是Webmaster)對他們的計算機(或其它設備)與Internet的鏈接,路由(徑),連通時間,速度等都很關心。使用由ChinaNetMap組織起來的各地區Webmaster提供的Traceroute網關的服務,將給你一個滿意的答案。從你的計算機到任何別的地方,ChinaNetMap(Traceroute)都能提供其間的每一個設備(IP地址)及其連通時間。它可讓你畫出經過網絡的路徑。
2.許多公司和單位都設有或正在設立本身的服務器-尤爲是Web服務器。一旦有本身的Web服務器,隨着網民數量的日益增長(包括潛在的,無法統計的網民),你必定很想知道是否他們都能與你鏈接。你的ISP如何與一個或多個NAP鏈接,以及他們的鏈接效率會直接影響到你的鏈接質量.
3.在選擇ISP,骨幹網鏈接,你站點的主機時,大多數有見識的網民喜歡檢查該Site的鏈接性能及其它是怎樣精確的與誰連,連到哪兒。ChinaNetMap(Traceroute)將給你一個完美的答案。 
4、Traceroute的功能介紹: 
Traceroute最先是由Van Jacobson在1988寫出的小程序。當時主要是解決他本身碰到的一些網絡的問題。Traceroute是一個正確理解IP網絡並瞭解路由原理的重要工具。他們對負責網絡工程技術與系統管理的Webmaster是一個使用方便的程序。
對ISP而言,設立Traceroute網關,將使網絡服務提供商幫助用戶創建並維持對服務商服務質量的信心。服務質量高的ISP能夠經過設立Traceroute網關,使用戶瞭解其與網絡鏈接以及數據傳輸的效率。固然,基礎設施差,服務質量低的ISP是比較懼怕提供這種服務。由於,這樣用戶可使用這一工具瞭解服務商目前的網絡鏈接狀況。
在一臺主機安裝了相關的Traceroute的CGI程序後,您能夠輸入相應的目的主機的IP地址或者名字,就能夠獲得相關的數據:
如:在美國的主機http://bs.mit.edu:8001/cgi-bin/traceroute
查詢其到中國南京的北極星站點www.lodesoft.com(中國Webmaster聯盟的合做夥伴)數據傳輸的路徑。
查詢界面爲:
Traceroute Hack
--------------------------------------------------------------------------------

能夠搜索該索引。請鍵入要搜索的關鍵字: 
查詢結果爲:
Traceroute Hack
1 E40-RTR-E40SERVER72-ETHER.MIT.EDU (18.72.0.1) 4 ms 4 ms 4 ms
2 EXTERNAL-RTR-FDDI.MIT.EDU (18.168.0.12) 4 ms 4 ms 4 ms
3 f1-0.cambridge2-br2.bbnplanet.net (192.233.33.6) 4 ms 4 ms 4 ms
4 s11-0-1.cambridge1-br1.bbnplanet.net (4.0.1.201) 8 ms 4 ms 4 ms
5 p1-0.cambridge1-nbr2.bbnplanet.net (4.0.1.45) 4 ms 4 ms 4 ms
6 p4-1.bstnma1-ba1.bbnplanet.net (4.0.2.170) 4 ms 4 ms 4 ms
7 p1-0.bstnma1-ba2.bbnplanet.net (4.24.4.194) 4 ms 8 ms 8 ms
8 p2-1.nyc4-nbr3.bbnplanet.net (4.24.4.238) 8 ms 12 ms 12 ms
9 p1-0.nyc4-nbr2.bbnplanet.net (4.0.5.25) 8 ms 12 ms 8 ms
10 p4-0.sanjose1-nbr2.bbnplanet.net (4.0.5.97) 70 ms 70 ms 70 ms
11 p1-0.sanjose1-nbr1.bbnplanet.net (4.0.5.85) 70 ms 70 ms 70 ms
12 p4-0.paloalto-nbr2.bbnplanet.net (4.0.1.1) 70 ms 74 ms 70 ms
13 p0-0-0.paloalto-cr18.bbnplanet.net (4.0.3.86) 70 ms 74 ms 74 ms
14 h1-0.atteasylink.bbnplanet.net (4.1.142.254) 74 ms 74 ms 78 ms
15 199.37.127.234 (199.37.127.234) 78 ms 74 ms 78 ms
16 205.174.74.170 (205.174.74.170) 230 ms 238 ms 227 ms
17 202.97.9.65 (202.97.9.65) 238 ms 231 ms 223 ms
18 * 202.97.9.49 (202.97.9.49) 234 ms *
19 202.97.10.110 (202.97.10.110) 246 ms 250 ms *
20 202.97.24.178 (202.97.24.178) 234 ms 238 ms 238 ms
21 202.102.24.74 (202.102.24.74) 234 ms 254 ms *
5、Traceroute的命令參數:
Traceroute的用法爲: Traceroute [options] <IP-address or domain-name> [data size]
[options]的內容有:
[-n]:顯示的地址是用數字表示而不是符號
[-v]:長輸出
[-p]:UDP端口設置(缺省爲33434)
[-q]:設置TTL測試數目(缺省爲3)
[-t]:設置測包的服務類型
[data size]:每次測試包的數據字節長度(缺省爲38)

6、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地址,三個包每次來回所花時間。
Traceroute face="宋體" 有一個固定的時間等待響應(ICMP TTL到期消息)。若是這個時間過了,它將打印出一系列的*號代表:在這個路徑上,這個設備不能在給定的時間內發出ICMP TTL到期消息的響應。而後,Traceroute給TTL記數器加1,繼續進行。

原文連接:http://blog.51cto.com/xfelix/1419739

相關文章
相關標籤/搜索