Traceroute 的功能介紹

一、What's Traceroute ?
每個連接在 Internet 上的設備,如 Webserver、Router、

Client...等一般情形下都會有一組獨立的IP Address。透過

Traceroute 我們可以得知封包(Packet)從你的電腦到網路另一端的

電腦所走的路徑。當然每次封包從相同的出發點(source)傳送到相同

的目的地(destination)所走的路徑都有所不同,但大致上來說絕大

部分所走的路徑是相同的。在 Linux 系統中,我們稱為

Traceroute, 在Microsoft Windows中稱為 Tracert。 Traceroute

送出的封包抵到目的設備後,一直到其返回,來測量其所需的時間。

一條路徑上的每個設備Traceroute 測試 3 次。輸出結果中包含每次

測試的時間(ms)和設備的名稱(如有的話)及IP Address。

於 C:\>tracert http://www.pczone.com.tw [Enter]

Tracing route to reality.pczone.com.tw [209.66.124.61]
over a maximum of 30 hops:

1 40 ms 40 ms 40 ms 61-216-192-254.HINET-IP.hinet.net [61.216.192.254]
2 41 ms 50 ms 50 ms kh-b-c6r1.router.hinet.net [168.95.227.62]
3 40 ms 50 ms 50 ms kh-b-c12r1.router.hinet.net [168.95.207.201]
4 40 ms 50 ms 40 ms kh-b-c12r31.router.hinet.net [168.95.19.25]
5 50 ms 50 ms 41 ms pa-c12r1.USA-PaloAlto.router.hinet.net [202.39.91.5]
6 71 ms 70 ms 70 ms sj-c7r1.USA-SanJose.router.hinet.net [202.39.83.9]
7 91 ms 92 ms 92 ms abovenet-hinet-fe.sjc.above.net [209.249.0.185]
8 111 ms 110 ms 101 ms core5-core2-oc3.sjc1.above.net [216.200.0.118]
9 110 ms 110 ms 110 ms core3-sjc1-oc48.sjc2.above.net [208.184.102.206]
10 111 ms 100 ms 110 ms main1colo8-core3-oc12.sjc2.above.net [208.184.102.226]
11 111 ms 120 ms 110 ms ymca.com.tw [209.66.124.61]

Trace complete.

參數說明:

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 逾時(Time Exceeded)訊息,以

確定路由器。注意,有些路由器會“安靜”的丟棄生存時間(TLS)過

期的封包並且對 tracert 指令無效。


參數
-d 指定不對網域名稱解析地址。

-h maximum_hops 指定尋找目標的跳躍最大數量。

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

-w timeout 等待由 timeout 對每個回應指定的毫秒數。

target_name 目的電腦的名稱。

二、What's Traceroute Gateway ?

使用 Traceroute(或Tracert)是基於一台電腦的,但是通常你只

能知道以本身的電腦為來源位址到網路上任意一台線上的電腦的路由

連接品質及數據傳輸效率的情況,而使用基於 WEB 的方式,只要一

台電腦安裝了特定的CGI 程序,用戶就可以通過這台電腦運行相關的

程序,執行 Traceroute 的功能。這台電腦稱為 Traceroute

Gateway。Traceroute 閘道可以幫助用戶了解網路的物理與邏輯連接

的拓樸情形及數據傳輸效率。這種閘道如果夠多的話,我們就可清楚

的了解連線到各電腦之間的情形。


三、What's use Traceroute?

1.幾乎每個上網的人對於本身的電腦與網路的連接,路徑,連接速

度,品質...等都很在意。使用由 Hinet 組織起來的各地區 Router

所提供的 Traceroute 閘道服務,將會給你滿意的答案。從你的電腦

到任何其他的電腦,Hinet(Traceroute)能提供其中間的每個 Router

(IP Address)及連接時間。它可以讓你畫出通過網路的路徑。


2.目前許多公司和公家機關都設有自己的伺服器-尤其是 Web

server。一但擁有自己的 Web server,隨著登入的

人數增加,你一定很想知道是否他們都能與你連接。你的 ISP 如何

與一個或多個 NAP 連接,以及他們的連接效率會直接影響到你的連接

品質.

3.在選擇ISP方面,骨幹頻寬及對國外頻寬是大多數的網友喜歡檢查

該 Site 的連接性能及與誰連接,連接到哪裡。NetMap

(Traceroute)將給你一個完美的答案。

四、Traceroute的功能介紹:

Traceroute最早是由 Van Jacobson 在 1988年寫出的程式。當

時主要是解決他本身所碰到的一些網路問題。Traceroute 是一個正

確理解 IP 網路並了解路由原理的重要工具。這對負責網路工程技術

與 MIS 是一個不錯的程式。對 ISP 而言,設立 Traceroute

Gateway,提高用戶對 ISP QoS。High QoS ISP 通常會設立

Traceroute Gateway,讓用戶明解他們與網路連接時的傳輸效率。當

然,基本設備差,Low Qos ISP 是非常害怕提供這項服務。因為,如

此用戶就可透過這項工具了解 ISP 目前的網路連接品質。

在一台電腦安裝相關的 Traceroute 的 CGI 程式後,你就可以

輸入相對應的目的電腦的IP Address 或者 Domain name ,就可得到

相關的數據:

五、Traceroute的命令參數:

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

[options]的內容有:

[-n]:顯示位址是用 IP表示而非 Domain name

[-v]:長輸出

[-p]:UDP 阜口設定(初設值33434)

[-q]:設定 TTL測試數量(初設值3)

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

[data size]:每次測試封包的數據字元長度(初設值38)

六、Traceroute 工作原理:

Traceroute最簡單的基本用法是:traceroute hostname

tarski:~traceroute to pczone.com.tw (209.66.124.61), 30 hops max, 40 byte packets
1 TKU-MOE.tku.edu.tw (163.13.1.254) 0.752 ms 0.619 ms 0.627 ms
2 140.111.255.25 (140.111.255.25) 1.358 ms 2.004 ms 1.865 ms
3 TANet-defaultgateway.edu.tw (203.72.38.101) 6.5 ms 11.673 ms 8.175 ms
4 * TANet-Internet.edu.tw (210.70.55.38) 95.83 ms *
5 * 12.124.35.17 (12.124.35.17) 185.175 ms 183.056 ms
6 gbr5-p80.sffca.ip.att.net (12.123.13.150) 212.853 ms 218.853 ms 211.15 ms
7 gbr4-p100.sffca.ip.att.net (12.122.5.146) 231.717 ms 235.807 ms *
8 ggr1-p370.sffca.ip.att.net (12.123.13.69) 239.347 ms * 240.052 ms
9 * above-att-oc3.sjc2.above.net (216.200.254.157) 254.362 ms 258.62 ms
10 * sjc2-gige-core1.sjc2.above.net (208.184.102.97) 257.209 ms 252.991 ms
11 core4-core1-oc48.sjc2.above.net (208.184.102.202) 270.475 ms 268.473 ms s
12 sjc2-gige-main2.colo8.sjc2.above.net (208.185.175.38) 273.827 ms 269.929 s
13 ymca.com.tw (209.66.124.61) 262.796 ms 265.22 ms 269.965 ms

Traceroute 程式的設計是利用ICMP及IP header的TTL(Time

To Live)欄位(field)。首先,traceroute

會送出一個TTL為1的IP datagram(其實,每次送出的是 3個 40

bytes 的 Packet,內容為來源地址,目的地址

和封包發送的時間標籤)到目的地,當路徑上的第一個路由器

(Router)收到這個 datagram 時,會將 TTL減1。

此時,TTL變為0了,所以該Router會將此 datagram丟棄,並送回一

個「ICMP time exceeded」訊息(包括發送

IP封包的來源地址,IP封包的所有內容及 Router IP Address),

Traceroute 收到這個訊息後,便得知此

Router 存在於這個路徑上,接著 Traceroute 會再送出另一個 TTL

為 2 的datagram,當發現第 2個 Router

...... traceroute 每次將送出的 datagram 的 TTL 加1來發現另一

個 Router,這個重複的動作會一直持續到某

個 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 Address 並作

網域解析。每次 Traceroute 都顯示出一串數據,包含所經過的路由

設備名稱及 IP Address ,三個封包每次來回所花的時間。

Traceroute face="宋体" 有一個固定的時間等待響應(ICMP TTL

到期訊息)。如果這個時間超過,它將顯示出一系列的 * 號註明:在

這個路徑上,此設備不能在規定的時間內發出ICMP TTL 到期訊息的

回應。之後,Traceroute 將 TTL 記數器加 1,然後繼續進行。