traceroute

traceroute

系統指令
traceroute (Windows 系統下是tracert)命令利用ICMP協議定位您的計算機和目标計算機之間的所有路由器。它可顯示數據包在IP網絡經過的路由器的IP地址。TTL值可以反映數據包經過的路由器或網關的數量,通過操縱獨立ICMP呼叫報文的TTL值和觀察該報文被抛棄的返回信息。
  • 中文名:路由追蹤
  • 外文名:traceroute
  • 所屬學科:
  • 作用:定位到目标主機之間的所有路由器
  • 實現方案:基于UDP實現和基于ICMP實現
  • 途 徑:通過用于異構網絡的TCP/IP協議進行網間通信
  • 基本用法:traceroute hostname

原理

程序利用增加存活時間(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地址。

參數說明

1

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

該診斷實用程序通過向目的地發送具有不同生存時間(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(或者是Tracert)是基于一台主機的,但是通常您隻能知道以手邊的主機為源地址到互聯網絡上任意一台在線的主機的路由連接質量以及數據傳輸效率的情況,而使用基于WEB的方式,隻要一台主機安裝了特定的CGI程序,用戶就可以通過這台主機運行相關的程序,執行Traceroute的功能。這台主機我們把它叫做Traceroute網關。Traceroute網關可以幫助用戶了解網絡的物理與邏輯連接的拓撲情況以及數據傳輸的效率。如果這種網關足夠多,我們就可以方便地了解到各主機之間連接的情況了。

功能

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

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

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

命令參數

Traceroute的用法為: Traceroute [options] [data size]

[options]的内容有:

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

[-v]:長輸出

[-p]:UDP端口設置(缺省為33434)

[-q]:設置TTL測試數目(缺省為3)

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

[data size]:每次測試包的數據字節長度(缺省為38)

應用

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

Traceroute收到目的主機的IP後,首先給目的主機發送一個TTL=1的UDP數據包,而經過的第一個路由器收到這個數據包以後,就自動把TTL減1,而TTL變為0以後,路由器就把這個包給抛棄了,并同時産生一個主機不可達的ICMP數據報給主機。主機收到這個數據報以後再發一個TTL=2的UDP數據報給目的主機,然後刺激第二個路由器給主機發ICMP數據報。如此往複直到到達目的主機。這樣,traceroute就拿到了所有的路由器ip。從而避開了ip頭隻能記錄有限路由IP的問題。

相關詞條

相關搜索

其它詞條