close

引用 http://sls.weco.net/taxonomy/term/712/0


 1.什麼是Traceroute
可以得知封包(Packet)從你的電腦到網路另一端的電腦所走的路徑。
當然每次封包從相同的出發點(source)傳送到相同的目的地(destination)所走的路徑都有所不同,但大致上來說絕大部分所走的路徑是相同的。

送出的封包抵到目的設備後,一直到其返回,來測量其所需的時間。一條路徑上的每個設備Traceroute 測試 3 次。
輸出結果中包含每次測試的時間(ms)和設備的名稱(如有的話)及IP Address。

2.Traceroute 工作原理:

Traceroute 程式的設計是利用ICMP及IP header的TTL(TimeTo Live)欄位(field)。
首先,traceroute會送出一個TTL為1的IP datagram(其實,每次送出的是 3個 40bytes 的 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 都顯示出一串數據,包含所經過的路由設備名稱及 IP Address ,三個封包每次來回所花的時間。

router name            router address         三個封包每次來回所花的時間
1 TKU-MOE.tku.edu.tw (163.13.1.254)   0.752 ms 0.619 ms 0.627 ms

Traceroute有一個固定的時間等待響應(ICMP TTL到期訊息)。如果這個時間超過,它將顯示出一系列的 * 號註明(簡單的說 就是時間到了沒有回應就顯示*也有可能是封包loss掉了)

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

 

arrow
arrow
    全站熱搜

    slinbody 發表在 痞客邦 留言(0) 人氣()