traceroute和tracert的区别

traceroute和tracert的区别  

二者都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别。

不同点:

一、应用环境不同

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,继续进行。

二、探测方法及探测的数据类型不同

默认情况下,tracert是向目的地址发出ICMP请求回显数据包,而traceroute是向目的地址的某个端口(大于30000)发送UDP数据报。

相同点:

一、两者都用于探测数据包从源到目的经过路由的IP。

二、两者都是通过设置发送包的TTL的值从1开始、逐次增1的方法来探测。

更多相关文章
  • 一.概述:    默认情况下,ASA不会回应TTL Exceeded的包,因此traceroute/tracert看不到ASA设备:另外,由于防火墙策略限制,traceroute/tracert也无法穿越防火墙.二.基本思路:    根据traceroute/tracert不同处理方式,确定为什么无 ...
  • traceroute的原理:1.traceroute主机向被trace主机发送UDP的数据包,目的端口是编号较大的端口(比如33434端口)2.首包TTL=1,Dport=33434:以后的数据包TTL值和端口号以此加13.如何判断已经到达目的地,一般目的地不会在UDP33434这么大的端口开启什么 ...
  • 前日看书,发现Ping命令中的一个参数(Win的-r和Linux中的-R)可以显示路由路径,而用tracert也可以显示路由路径,遂有疑问,区别是什么?一凡在网上查证,发现原来二者分别显示的是路由路径的出口和入口:ping显示每一个节点的出口:Pinging 163.xdwscache.glb0.l ...
  • 2.路由分析诊断命令traceroute/tracert通过向目的网络设备发送具有不同生存时间的ICMP回应报文,路由分析诊断命令 tracert可以确定至目的网络设备的路由,即tracert命令可以用来跟踪一个报文从一台计算机到另一台计算机所经过的网络路径.当希望知道自己的计算机如何访问网络上的某 ...
  • 网上很多文章都混淆了tracert和traceroute的工作方式原理,有必要说明下 tracert和traceroute默认是有区别的:    首先win下的tracert是采用的icmp报文,发送的是echo request请求报文,最终目的服务器回应的是echo reply报文.    而tr ...
  • tracert和traceroute都是用来探测数据包经过网络路径的工具.原理:共同点:IP数据包头部TTL字段每经过一个路由设备都会减1,当IP数据包TTL为0且未达到数据包目的IP主机时,当前路由设备会返回一个ICMP time extend(表明TTL为0)包.IP包中的TTL字段从第一个包的 ...
  • 二者分别显示的是路由路径的出口和入口:ping显示每一个节点的出口:Pinging 163.xdwscache.glb0.lxdns.com [114.80.143.196] with 32 bytes of data:Reply from 114.80.143.196: bytes=32 time ...
  • 对于ping,发送的是一个echo request包,类型为 8 0,当被ping者接到相关icmp包的时候,根据实际情况,逻辑是,就发回 reply 0 0,逻辑否,则根据具体情况发出一些其他的信息,总结起来的说,是看目的是否能及时的把icmp reply包送回到源,一当路径上的某个节点把repl ...
一周排行