traceroute、tracert是基于何种协议,还是本身就是一个独立的协议?
1个回答
展开全部
就是基于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开始端口都是可以调整的。
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开始端口都是可以调整的。
晓网科技
2024-10-17 广告
2024-10-17 广告
ZigBee协议适应无线传感器的低花费、低能量、高容错性等的要求。ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标...
点击进入详情页
本回答由晓网科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询