traceroute

traceroute

traceroute (Windows 系統下是tracert) 命令利用ICMP 協定定位您的計算機和目標計算機之間的所有路由器。TTL 值可以反映數據包經過的路由器或網關的數量,通過操縱獨立ICMP 呼叫報文的TTL 值和觀察該報文被拋棄的返回信息,traceroute命令能夠遍歷到數據包傳輸路徑上的所有路由器。

原理

程式利用增加存活時間(TTL)值來實現其功能。每當數據包經過一個路由器,其存活時間就會減1。當其存活時間是0時,主機便取消數據包,並傳送一個ICMP TTL數據包給原數據包的發出者。

程式發出的首3個數據包TTL值是1,之後3個是2,如此類推,它便得到一連串數據包路徑。注意IP不保證每個數據包走的路徑都一樣。

定義

詳細解釋

它由遍布全球的幾萬區域網路和數百萬台計算機組成,並通過用於異構網路的TCP/IP協定進行網間通信。網際網路中,信息的傳送是通過網中許多段的傳輸介質和設備(路由器,交換機,伺服器,網關等等)從一端到達另一端。每一個連線在Internet上的設備,如主機、路由器、接入伺服器等一般情況下都會有一個獨立的IP位址。通過Traceroute我們可以知道信息從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次數據包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。UNIX系統中,我們稱之為Traceroute,MS Windows中為Tracert。 Traceroute通過傳送小的數據包到目的設備直到其返回,來測量其需要多長時間。一條路徑上的每個設備Traceroute要測3次。輸出結果中包括每次測試的時間(ms)和設備的名稱(如有的話)及其IP位址。

參數說明

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

參數

-d

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

-h maximum_hops

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

-j computer-list

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

-w timeout

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

target_name

目標計算機的名稱。

工作原理

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 有一個固定的時間等待回響(ICMP TTL到期訊息)。如果這個時間過了,它將列印出一系列的*號表明:在這個路徑上,這個設備不能在給定的時間內發出ICMP TTL到期訊息的回響。然後,Traceroute給TTL記數器加1,繼續進行。參見traceroute仿真動畫.

網關

一般使用Traceroute(或者是Tracert)是基於一台主機的,但是通常您只能知道以手邊的主機為源地址到網際網路上任意一台線上的主機的路由連線質量以及數據傳輸效率的情況,而使用基於WEB的方式,只要一台主機安裝了特定的CGI程式,用戶就可以通過這台主機運行相關的程式,執行Traceroute的功能。這台主機我們把它叫做Traceroute網關。Traceroute網關可以幫助用戶了解網路的物理與邏輯連線的拓撲情況以及數據傳輸的效率。如果這種網關足夠多,我們就可以方便地了解到各主機之間連線的情況了。

原理

1.幾乎每一個網上人(尤其是Webmaster)對他們的計算機(或其它設備)與Internet的連線,路由(徑),連通時間,速度等都很關心。使用由ChianNetMap組織起來的各地區Webmaster提供的Traceroute網關的服務,將給你一個滿意的答案。從你的計算機到任何別的地方,ChinaNetMap(Traceroute)都能提供其間的每個設備(IP位址)及其連通時間。它可以讓你畫出通過網路的路徑。

2.許多公司和單位都設有或正在設立自己的伺服器-尤其是Web伺服器。一旦有自己的Web伺服器,隨著網民數量的日益增加(包括潛在的,沒法統計的網民),你一定很想知道是否他們都能與你連線。你的ISP如何與一個或多個NAP連線,以及他們的連線效率會直接影響到你的連線質量.

3.在選擇ISP,骨幹網連線,你站點的主機時,大多數有見識的網民喜歡檢查該Site的連線性能及其它是怎樣精確的與誰連,連到哪兒。ChinaNetMap(Traceroute)將給你一個完美的答案。

功能

Traceroute最早是由Van Jacobson在1988寫出的小程式。當時主要是解決他自己碰到的一些網路的問題。Traceroute是一個正確理解IP網路並了解路由原理的重要工具。他們對負責網路工程技術與系統管理的Webmaster是一個使用方便的程式。

對ISP而言,設立Traceroute網關,將使網路服務提供商幫助用戶建立並維持對服務商服務質量的信心。服務質量高的ISP可以通過設立Traceroute網關,使用戶了解其與網路連線以及數據傳輸的效率。當然,基礎設施差,服務質量低的ISP是比較害怕提供這種服務。因為,這樣用戶可以使用這一工具了解服務商網路連線情況。

在一台主機安裝了相關的Traceroute的CGI程式後,您可以輸入相應的目的主機的IP位址或者名字,就可以得到相關的數據。

命令參數

Traceroute的用法為: Traceroute [options] <IP-address or domain-name> [data size]

[options]的內容有:

[-n]:顯示的地址是用數字表示而不是符號

[-v]:長輸出

[-p]:UDP連線埠設定(預設為33434)

[-q]:設定TTL測試數目(預設為3)

[-t]:設定測包的服務類型

[data size]:每次測試包的數據位元組長度(預設為38)

ICMP的套用

Traceroute是用來偵測主機到目的主機之間所經路由情況的重要工具,也是最便利的工具。前面說到,儘管ping工具也可以進行偵測,但是,因為ip頭的限制,ping不能完全的記錄下所經過的路由器。所以Traceroute正好就填補了這個缺憾。

Traceroute的原理是非常非常的有意思,它收到目的主機的IP後,首先給目的主機傳送一個TTL=1(還記得TTL是什麼嗎?)的UDP(後面就 知道UDP是什麼了)數據包,而經過的第一個路由器收到這個數據包以後,就自動把TTL減1,而TTL變為0以後,路由器就把這個包給拋棄了,並同時產生 一個主機不可達的ICMP數據報給主機。主機收到這個數據報以後再發一個TTL=2的UDP數據報給目的主機,然後刺激第二個路由器給主機發ICMP數據 報。如此往復直到到達目的主機。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭只能記錄有限路由IP的問題。

有人要問,我怎么知道UDP到沒到達目的主機呢?這就涉及一個技巧的問題,TCP和UDP協定有一個連線埠號定義,而普通的網路程式只監控少數的幾個號碼較 小的連線埠,比如說80,比如說23,等等。而traceroute傳送的是連線埠號>30000(真變態)的UDP報,所以到達目的主機的時候,目的 主機只能傳送一個連線埠不可達的ICMP數據報給主機。主機接到這個報告以後就知道,主機到了,所以,說Traceroute是一個騙子一點也不為過:)

Traceroute程式裡面提供了一些很有用的選項,甚至包含了IP選路的選項,請察看man文檔來了解這些,這裡就不贅述了。

相關詞條

相關搜尋

熱門詞條

聯絡我們