[b] traceroute指令讓你追蹤網絡數據包的路由途徑,預設數據包大小是40Bytes。[/b][b] (1)用法:[/b]
[b] 用法: traceroute [參數] [主機][/b] [b] (2)功能:[/b]
[b] 功能: 通過traceroute可以知道信息從計算機到互聯網另一端的主機是走的什麼路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。traceroute通過發送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其ip地址。
[/b]
[b] (3)選項參數:[/b] 1) -m 設置檢測數據包的最大存活數值TTL的大小。
2) -n 直接使用IP地址而非主機名稱。 3) -w<超時秒數> 設置等待遠端主機回報的時間
4) -r 忽略普通的Routing Table,直接將數據包送到遠端主機上。 5) -q 設置發送探測包的個數
[b] (4)實例:[/b] 1)[root@localhost sunjimeng]# traceroute www.baidu.com 查詢到百度的站點經過的路徑
[root@localhost sunjimeng]# traceroute www.baidu.com traceroute to www.baidu.com (14.215.177.37), 30 hops max, 60 byte packets 1 192.168.142.2 (192.168.142.2) 0.116 ms 0.071 ms 0.132 ms 2 * * * 3 * * * 4 * * * 5 * * * ...... 30 * * *注意:
有時我們traceroute一台主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回信息,所以我們得不到什麼相關的數據包返回數據。 2)[root@localhost sunjimeng]# traceroute -q 4 www.baidu.com 把探測包的個數設置為值4(默認是三次)
[root@localhost sunjimeng]# traceroute -q 4 www.baidu.com traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets 1 192.168.142.2 (192.168.142.2) 0.114 ms 0.143 ms 0.103 ms 0.135 ms 2 * * * * 3 * * * * 4 * * * * 5 * * * * ...... 30 * * * *3)[root@localhost sunjimeng]# traceroute -n www.baidu.com 顯示IP地址,不查主機名
[root@localhost sunjimeng]# traceroute -n www.baidu.com traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets 1 192.168.142.2 0.151 ms 0.107 ms 0.060 ms 2 * * * 3 * * * 4 * * * 5 * * * ...... 30 * * *注意:
有時我們在某一網關處延時比較長,有可能是某台網關比較阻塞,也可能是物理設備本身的原因。當然如果某台DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n參數來避免DNS解析,以IP格式輸出數據。 4)[root@localhost sunjimeng]# traceroute -m 5 www.baidu.com 設置跳數
[root@localhost sunjimeng]# traceroute -m 5 www.baidu.com traceroute to www.baidu.com (14.215.177.38), 5 hops max, 60 byte packets 1 192.168.142.2 (192.168.142.2) 0.100 ms 0.130 ms 0.052 ms 2 * * * 3 * * * 4 * * * 5 * * * [root@localhost sunjimeng]#5)[root@localhost sunjimeng]# traceroute -r www.baidu.com 繞過正常的路由表,直接發送到與當前主機相連的IP地址
[root@localhost sunjimeng]# traceroute -r www.baidu.com traceroute to www.baidu.com (14.215.177.38), 30 hops max, 60 byte packets connect: 網絡不可達 [root@localhost sunjimeng]# traceroute -r 0.0.0.0 traceroute to 0.0.0.0 (0.0.0.0), 30 hops max, 60 byte packets 1 localhost (127.0.0.1) 0.104 ms 0.012 ms 0.009 ms[b] (5)其他:[/b]
traceroute的工作原理:
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:
在大多數情況下,我們會在linux主機系統下,直接執行命令行: traceroute hostname。 而在Windows系統下是執行tracert的命令: tracert hostname。