原文鏈接:https://www.cnblogs.com/peida/archive/2013/03/07/2947326.html
通過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
輸出:
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
輸出:
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
輸出:
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
輸出:
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
輸出:
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
輸出:
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
輸出:
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 目標計算機的名稱。
實例:
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
一、路由追蹤程序traceroute/tracert
Traceroute是Linux和Mac OS等系統默認提供的路由追蹤小程序,Tracert是Windows系統默認提供的路由追蹤小程序。二者的功能相同,都能探測數據包從源地址到目的地址經過的路由器的IP地址。Traceroute/Tracert的實現都借助了TTL:通過向目的地址發送一系列的探測包,設置探測包的TTL初始值分別為1,2,3…,根據返回的超時通知(ICMP Time Exceeded Message)得到源地址與目的地址之間的每一跳路由信息。雖然兩者輸出結果一致,但在實現原理上還有着顯著的差別。
二、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數據包使用遞增的目標端口號進行標識。
三、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進行標識。
四、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跳到達目的地址,與終端顯示信息相符。
五、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的時候,返回了正常響應。
六、小結
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
[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
目標計算機的名稱。
二、什么是Traceroute網關—— Traceroute Gateway?
一般使用Traceroute(或者是Tracert)是基於一台主機的,但是通常您只能知道以手邊的主機為源地址到互聯網絡上任意一台在線的主機的路由連接質量以及數據傳輸效率的情況,而使用基於WEB的方式,只要一台主機安裝了特定的CGI程序,用戶就可以通過這台主機運行相關的程序,執行Traceroute的功能。這台主機我們把它叫做Traceroute網關。Traceroute網關可以幫助用戶了解網絡的物理與邏輯連接的拓撲情況以及數據傳輸的效率。如果這種網關足夠多,我們就可以方便地了解到各主機之間連接的情況了。
三、為什么要使用Traceroute?
1.幾乎每一個網上人(尤其是Webmaster)對他們的計算機(或其它設備)與Internet的連接,路由(徑),連通時間,速度等都很關心。使用由ChinaNetMap組織起來的各地區Webmaster提供的Traceroute網關的服務,將給你一個滿意的答案。從你的計算機到任何別的地方,ChinaNetMap(Traceroute)都能提供其間的每個設備(IP地址)及其連通時間。它可以讓你畫出通過網絡的路徑。
2.許多公司和單位都設有或正在設立自己的服務器-尤其是Web服務器。一旦有自己的Web服務器,隨着網民數量的日益增加(包括潛在的,沒法統計的網民),你一定很想知道是否他們都能與你連接。你的ISP如何與一個或多個NAP連接,以及他們的連接效率會直接影響到你的連接質量.
3.在選擇ISP,骨干網連接,你站點的主機時,大多數有見識的網民喜歡檢查該Site的連接性能及其它是怎樣精確的與誰連,連到哪兒。ChinaNetMap(Traceroute)將給你一個完美的答案。
四、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 *
五、Traceroute的命令參數:
Traceroute的用法為: Traceroute [options] <IP-address or domain-name> [data size]
[options]的內容有:
[-n]:顯示的地址是用數字表示而不是符號
[-v]:長輸出
[-p]:UDP端口設置(缺省為33434)
[-q]:設置TTL測試數目(缺省為3)
[-t]:設置測包的服務類型
[data size]:每次測試包的數據字節長度(缺省為38)
六、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