天天看點

tracert和traceroute差別在哪?

轉載于:https://www.cnblogs.com/lisenlin/p/10763905.html

一、tracert和traceroute簡介

相同點:都是用來跟蹤路由,幫助排查問題,關注的是過程,而ping關注的是結果。

不同點:

  1. tracert請求是icmp echo封包。
  2. traceroute請求是UDP的封包,目标端口是30000以上随機端口。

二、tracert使用到三種封包

  1. icmp echo request #icmp Type8,用戶端發起封包,traceroute使用udp封包發起。
  2. icmp echo replay #icmp Type 0,到了目标位址,未禁ping,回複此封包。
  3. icmp time-exceeded #icmp Type11,經過的路由回複封包(到此路由ttl=1或0回複給用戶端)。

三、traceroute使用的三種封包

  1. UDP随機端口發起請求 #用戶端發起封包,traceroute使用udp封包發起。
  2. icmp time-exceeded #icmp Type11,經過的路由回複封包(到此路由ttl=1或0回複給用戶端) 。
  3. icmp unreachable #icmp Type3(Destination unreachable),到了目标位址,未禁ping,回複此封包。

四、tracert原理

  1. tracert送出一個TTL是1的ICMP echo request資料包a到目的地。
  2. 當路徑上的第一個路由器收到這個資料包a時,它将TTL減1。
  3. TTL變為0,該路由器會将此資料包丢掉,并送回一個「ICMP time exceeded」消息。
  4. tracert 收到這個消息後,再送出另一個TTL是2 的資料包,發現第2 個路由器。
  5. 當資料包到達目的地後,目标會送回一個icmp echo reply(前提是目标未禁ping)。

ps:

  1. tracert 有一個固定的時間等待響應(ICMP TTL到期消息)。如果這個時間過了,它将列印出一系列的*号,表明在這個路徑上,這個裝置不能在給定的時間内發出ICMP TTL到期消息的響應。
  2. 有些時候tracert都是打星号,但是抓包顯示icmp time-exceeded(即可知所經路由器),是以以抓包結果為準。

五、tracert工具使用

用法:

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

-d #不将位址解析成主機名。

-h maximum_hops #設定目标的最大躍點數。

-j host-list #與主機清單一起的松散源路由(僅适用于 IPv4)。

-w timeout #等待每個回複的逾時時間(以毫秒為機關)。

-R #跟蹤往返行程路徑(僅适用于 IPv6)。

-S srcaddr #要使用的源位址(僅适用于 IPv6)。

-4 #強制使用 IPv4。

-6 #強制使用 IPv6。

六、traceroute工具參數使用

traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,… ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]

-d #使用Socket層級的排錯功能。

-f first_ttl #設定第一個檢測資料包的存活數值TTL的大小。

-F #設定勿離斷位。

-g gate,… #設定來源路由網關,最多可設定8個。

-i device #使用指定的網絡接口送出資料包。

-I #使用ICMP echo request取代UDP請求,即類似使用tracert工具。

-T #使用TCP SYN取代UDP請求。

-m max_ttl #設定檢測資料包的最大存活數值TTL的大小。

-n #直接使用IP位址而非主機名稱。

-p port #設定UDP傳輸協定的通信端口,預設33434。

-r #忽略普通的Routing Table,直接将資料包送到遠端主機上。

-s src_addr #設定本地主機送出資料包的IP位址。

-t tos #設定檢測資料包的TOS數值。

-w waittime #設定等待遠端主機回應的時間,預設5s。

繼續閱讀