還是用的ICMP協議,因為ICMP是IP的上層協議,而IP里有TTL字段,trace主要就是用來查路由信息的。原理大概是這樣:
你輸入tracert命令后,它會先發一個TTL為1的數據包出去,到了第一個路由器,TTL減1變成0,路由器就把這個包丟掉,并返回一個超時信息,這樣就知道第一個路由器的地址和延遲時間了;接著發TTL為2的包,就會卡在第二個路由器,同樣也能拿到時間和地址……以此類推,直到數據包到達目標主機。這時候主機會回一個端口不可達的信息,tracert就根據這個算出總耗時。整個過程走下來,中間經過的每個路由器都會被顯示出來。
你輸入tracert命令后,它會先發一個TTL為1的數據包出去,到了第一個路由器,TTL減1變成0,路由器就把這個包丟掉,并返回一個超時信息,這樣就知道第一個路由器的地址和延遲時間了;接著發TTL為2的包,就會卡在第二個路由器,同樣也能拿到時間和地址……以此類推,直到數據包到達目標主機。這時候主機會回一個端口不可達的信息,tracert就根據這個算出總耗時。整個過程走下來,中間經過的每個路由器都會被顯示出來。