traceroute和tracert的區別_PHP教程

來源:互聯網
上載者:User

traceroute和tracert的區別


最近在看TCP/IP詳解卷1時被traceroute和tracert命令給小小的坑了一下,原來二個是有差別的。
我是在windows下面抓包的,結果死活抓不到udp包。。。。
也是給自己提了個醒看書要動腦啊!!!

二者都用於探測資料包從源到目的經過路由的IP,但兩者探測的方法卻有差別。
不同點:
一、應用環境不同
tracert是應用在windows下。
traceroute則是應用在linux/BSD/router/UNIX下。
tracert是Windows下常用的命令列工具,UNIX下的是traceroute。都是基於UDP協議的路由探測。
Tracert(跟蹤路由)是路由跟蹤公用程式,用於確定 IP 資料報訪問目標所採取的路徑。Tracert 命令用 IP 存留時間 (TTL) 欄位和 ICMP 錯誤訊息來確定從一個主機到網路上其他主機的路由。
工作原理和過程:
通過向目標發送不同 IP 存留時間 (TTL) 值的“網際網路控制訊息通訊協定 (ICMP) (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,繼續進行。
二、探測方法及探測的資料類型不同
預設情況下,tracert是向目的地址發出ICMP請求回顯資料包,而traceroute是向目的地址的某個連接埠(大於30000)發送UDP資料報。
相同點:
一、兩者都用於探測資料包從源到目的經過路由的IP。
二、兩者都是通過設定發送包的TTL的值從1開始、逐次增1的方法來探測。

最後,tcptracetroute是向80連接埠發送TCP SYN包到目標,穿透更強。

http://www.bkjia.com/PHPjc/1117251.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1117251.htmlTechArticletraceroute和tracert的區別 最近在看TCP/IP詳解卷1時被traceroute和tracert命令給小小的坑了一下,原來二個是有差別的。 我是在windows下面抓包的,...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.