当前位置:文档之家› tracert和ping的原理总结.doc

tracert和ping的原理总结.doc

今天仔细的看了下PING和TRACERT的原理,然后又请教了一下高手并且自己和同事做了一下实验,总结如下: 1、PING命令主要作用是测试2台设备网络层之间是否。

其工作原理:假设A路由器PING B路由器,A路由器会先发一个ICMP ECHO报文(TYPE=8,CODE=0),如果2台设备之间路由是可达的,B收到后会回一个ICMP REPLY的报文(TYPE=0,CODE=0)。

ping命令也可以显示经过的跳数,这样也可以通过PING命令查看我经过了哪几跳,每一跳的IP地址,命令参数是-R。

但不是所有的路由器均支持该命令,并且IP首部中留给选项的空间有限,不能存放太多的路径,一般最多就只能存放9个IP地址。

2、TRACERT命令主要作用和PING -R的作用一样,是测试2台设备之间经过的跳数和每一跳的IP地址。

其工作原理分2种情况说明:
1)假设A是一台PC机,由A来TRACERT B,A首先会发送一个ICMP ECHO的报文(TYPE=8,CODE=0),并且该报文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP超时的报文(TYPE=11,CODE=0),然后A会在发送一个ICMP ECHO的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。

当报文到达B后,B会回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)。

2)假设A是一台路由器,由A来TRACERT B,A首先会发送一个UDP报文,并且UDP的端口号大于30000以保证这个端口号在B上未被占用,该报文的TTL=1,第一个路由器收到后会丢弃该报文不转发,并返回一个ICMP 超时的报文(TYPE=11,CODE=0),然后A会在发送一个UDP的报文,这时TTL=2,下一个路由器收到后又回一个ICMP超时报文。

当报文到达B后,B会回给A一个ICMP端口不可达的报文(TYPE=3,CODE=3)。

PS:A发送出第一个报文后不需要等到收到应答包后才发第二个报文,我们在抓包的时候先收到了B发过来的ICMP端口不可达的包,后收到ICMP超时的包。

但在另一台电脑上抓包就是先收到ICMP超时的包,后收到ICMP端口不可达的包。

总结:我们在实际应用中可以针对ICMP的类型做限制,完全可以做到能PING通不能TRACERT通、能TRACERT 通不能PING通、PC能TRACERT通路由器而路由器不能TRACERT通PC。

相关主题