traceroute、tracert是基于何种协议?,traceroute、tracert是基于何种协议,还是本身就是一个独立的协议?,traceroute和tracert的区别,traceroute和tracert有什么区别...
traceroute、tracert是基于何种协议?
就是基于ICMP的。TCP/IP协议详解卷1的8.2节中曾经说过,路由追踪时发送UDP数据报给目标主机,而且设置的端口值很高,一般大于30000,以避免端口号被使用。原文如下: “Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口 号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报 到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见 6 . 5节)的ICMP报文。 这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断 什么时候结束。” 中间的路由器是因为TTL=0以后返回ICMP 类型11,代码0的超时消息。目的IP到了以后,拆包分析UDP内容,发现端口不可达,返回ICMP类型3,代码3(目标端口不可达)实现。 在windws主机里面的tracert和TCP/IP详解的表述有点出入。windows主机的tracert是直接是用ping来实现的,但是这个ping的TTL值在3个包后增大1,不可达或者超时后返回星号,继续下一个TTL的包的发送,一直到达默认设置的30跳。一般在路由器和交换机上的traceroute都是UDP的方式,每个TTL发的包的个数和最大跳数、UDP开始端口都是可以调整的。
traceroute、tracert是基于何种协议,还是本身就是一个独立的协议?
就是基于ICMP的。
TCP/IP协议详解卷1的8.2节中曾经说过,路由追踪时发送UDP数据报给目标主机,而且设置的端口值很高,一般大于30000,以避免端口号被使用。原文如下:
“Traceroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为UDP端口
号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报
到达时,将使目的主机的UDP模块产生一份“端口不可达”错误(见 6 . 5节)的ICMP报文。
这样,Traceroute程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断
什么时候结束。”
中间的路由器是因为TTL=0以后返回ICMP 类型11,代码0的超时消息。
目的IP到了以后,拆包分析UDP内容,发现端口不可达,返回ICMP类型3,代码3(目标端口不可达)实现。
在windws主机里面的tracert和TCP/IP详解的表述有点出入。windows主机的tracert是直接是用ping来实现的,但是这个ping的TTL值在3个包后增大1,不可达或者超时后返回星号,继续下一个TTL的包的发送,一直到达默认设置的30跳。一般在路由器和交换机上的traceroute都是UDP的方式,每个TTL发的包的个数和最大跳数、UDP开始端口都是可以调整的。
traceroute和tracert的区别
您好,很高兴为您解答。
一、应用环境不同
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~
traceroute和tracert有什么区别
windows下的tracert和linux/BSD/router下的traceroute都用于探测数据包从源到目的经过路由的IP,但两者探测的方法却有差别。
默认情况下,tracert是向目的地址发出ICMP请求回显数据包,而traceroute是向目的地址的某个端口(大于30000)发送UDP数据报。两者用于探测的数据类型不同。但他们也有一个共同点:都是通过设置发送包的TTL的值从1开始、逐次增1的方法来探测。
下一篇:没有了