1. ICMP消息类型和编码类型

ICMP协议_第1张图片


2. ICMP应用-ping

ICMP协议_第2张图片


2.1、-a 指定源IP地址ping目标IP地址
ICMP协议_第3张图片


2.2、-c指定ping请求包的个数,默认是5个
ICMP协议_第4张图片

3.ICMP应用-Tracert

Tracert的工作原理:Tracert使用IP包的TTL值和ICMP错误消息来判断主机达到目标地址中间经过的路由个数;
首先,Tracert发送一个UDP包的端口大于30000,TLL值为1,一次性发送3个包,因为UDP是不可靠的,所以发送3个包保证传输的可靠性,只要有一个包达到目标即可;
在路径上的第一个路由器收到包之后,TTL值减1,此时TTL值为0,路由器就会丢弃数据包,返回一个ICMP Replay包(包括发送方路由器的IP地址等);
Tracert收到ICMP Replay包之后,知道下一跳的IP地址是存在;
Tracert第二次发送一个和第一个数据包端口一样的,TTL值位2,当路径上第二台路由器收到数据包之后,TTL值减1,此时TTL值为0(每经过一个路由器,TTL值减1),这个重复的动作持续到数据包达到目的地;
当目的地收到这个数据包时,发现自己并没有这个端口号,就会返回一个端口不可达的ICMP Replay包,此时,tracert就知道到达目的地了。

1、默认已经配好IP地址 and 路由
ICMP协议_第5张图片
选中R2的Ethernet0/0/0端口进行抓包
2、在R1路由器 tracert 路由器R5的IP地址 1.1.4.2
ICMP协议_第6张图片
3、R1访问R5的端口30005,TTL值为1
ICMP协议_第7张图片
4、当R2路由器收到R1发送的数据包之后,发现TTL值为1,因转发一台路由器,TTL值减1,那么R2发现TTL值为0就不会再继续转发数据包,就会告诉R1,TTL值已超出,此时R1也就知道了他的下一跳的IP地址是1.1.1.2
ICMP协议_第8张图片
5、当数据包达到目的地后,R5发现没有30005这个端口,就告诉R1端口不可达。
ICMP协议_第9张图片