壹、應用環境不同
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。
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數據報。
如若滿意,請點擊右側采納答案,如若還有問題,請點擊追問
希望我的回答對您有所幫助,望采納!
~ O(∩_∩)O~