什麼是TraceRoute?
TraceRoute命令利用ICMP協定定位您的電腦和目標電腦之間的所有路由器,其中TTL值可以反映封包經過的路由器或網關的數量,透過操縱獨立ICMP 呼叫封包的TTL 值並觀察該封包被拋棄的回傳訊息。
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 有一個固定的時間等待回應(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位址或名字,就可以得到相關的資料。
推薦教學:《PHP教學》
以上是什麼是TraceRoute?的詳細內容。更多資訊請關注PHP中文網其他相關文章!