它的實現原理如下:
它發送壹份 TTL字段為1的IP數據報給目的主機。處理這份數據報的第壹個路由器將 T T L值減 1,丟棄該數據報,並發回壹份超時I C M P報文。這樣就得到了該路徑中的第壹個路由器的地址。然後 Tr a c e r o u t e程序發送壹份T T L值為2的數據報,這樣我們就可以得到第二個路由器的地址。繼續這個過程直至該數據報到達目的主機。但是目的主機哪怕接收到 T T L值為1的I P數據報,也不會丟棄該數據報並產生壹份超時 I C M P報文,這是因為數據報已經到達其最終目的地。那麽我們該如何判斷是否已經到達目的主機了呢?
Traceroute程序發送壹份 U D P數據報給目的主機,但它選擇壹個不可能的值作為 U D P端口號(大於 30 000),使目的主機的任何壹個應用程序都不可能使用該端口。因為,當該數據報到達時,將使目的主機的 U D P模塊產生壹份“端口不可達”錯誤(見 6 . 5節)的 I C M P報文。這樣, Tr a c e r o u t e程序所要做的就是區分接收到的 I C M P報文是超時還是端口不可達,以判斷什麽時候結束。
我們使用ping命令的R選項也可以打印出源主機到目的主機所經過的路由。但是它和traceroute有些不同,至於區別在哪裏?大家可以思考壹下