tracert traceroute

兩者都用於探測數據包從源到目的通過路由的IP,但二者探測的方法卻有差異。
不一樣點:
1、應用環境不一樣
tracert是應用在windows下。
traceroute則是應用在linux/BSD/router/UNIX下。 
tracert是Windows下經常使用的命令行工具,UNIX下的是traceroute。都是基於UDP協議的路由探測。
Tracert(跟蹤路由)是路由跟蹤實用程序,用於肯定 IP 數據報訪問目標所採起的路徑。Tracert 命令用 IP 生存時間 (TTL) 字段和 ICMP 錯誤消息來肯定從一個主機到網絡上其餘主機的路由。
工做原理和過程:
經過向目標發送不一樣 IP 生存時間 (TTL) 值的「Internet 控制消息協議 (ICMP)」迴應數據包,Tracert 診斷程序肯定到目標所採起的路由。要求路徑上的每一個路由器在轉發數據包以前至少將數據包上的 TTL 遞減 1。數據包上的 TTL 減爲 0 時,路由器應該將「ICMP 已超時」的消息發回源系統。 
  Tracert 先發送 TTL 爲 1 的迴應數據包,並在隨後的每次發送過程將 TTL 遞增 1,直到目標響應或 TTL 達到最大值,從而肯定路由。經過檢查中間路由器發回的「ICMP 已超時」的消息肯定路由。某些路由器不經詢問直接丟棄 TTL 過時的數據包,這在 Tracert 實用程序中看不到。 
  Tracert 命令按順序打印出返回「ICMP 已超時」消息的路徑中的近端路由器接口列表。若是使用 -d 選項,則 Tracert 實用程序不在每一個 IP 地址上查詢 DNS。 
  在下例中,數據包必須經過兩個路由器(10.0.0.1 和 192.168.0.1)才能到達主機 172.16.0.99。主機的默認網關是 10.0.0.1,192.168.0.0 網絡上的路由器的 IP 地址是 192.168.0.1。 
  C:\>tracert 172.16.0.99 -d 
  Tracing route to 172.16.0.99 over a maximum of 30 hops 
  1 2s 3s 2s 10,0.0,1 
  2 75 ms 83 ms 88 ms 192.168.0.1 
  3 73 ms 79 ms 93 ms 172.16.0.99 
  Trace complete.
Traceroute程序的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1的IP datagram(其實,每次送出的爲3個40字節的包,包括源地址,目的地址和包發出的時間標籤)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變爲0了,因此該路由器會將此datagram丟掉,並送回一個「ICMP time exceeded」消息(包括髮IP包的源地址,IP包的全部內容及路由器的IP地址),traceroute 收到這個消息後,便知道這個路由器存在於這個路徑上,接着traceroute 再送出另外一個TTL是2 的datagram,發現第2 個路由器...... traceroute 每次將送出的datagram的TTL 加1來發現另外一個路由器,這個重複的動做一直持續到某個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地址並做域名解析。每次 ,Traceroute都打印出一系列數據,包括所通過的路由設備的域名及 IP地址,三個包每次來回所花時間。
Traceroute 有一個固定的時間等待響應(ICMP TTL到期消息)。若是這個時間過了,它將打印出一系列的*號代表:在這個路徑上,這個設備不能在給定的時間內發出ICMP TTL到期消息的響應。而後,Traceroute給TTL記數器加1,繼續進行。
2、探測方法及探測的數據類型不一樣
默認狀況下,tracert是向目的地址發出ICMP請求回顯數據包,而traceroute是向目的地址的某個端口(大於30000)發送UDP數據報。
相同點:
1、二者都用於探測數據包從源到目的通過路由的IP。
2、二者都是經過設置發送包的TTL的值從1開始、逐次增1的方法來探測。

最後,tcptracetroute是向80端口發送TCP SYN包到目標,穿透更強。linux

相關文章
相關標籤/搜索