Wireshark-ICMP协议学习
一、ICMP简介及报文格式
1、ICMP简介
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
2、ICMP报文格式,如下图所示,ICMP包有一个8字节长的包头,其中前4个字节是固定的格式,包含8位类型字段,8位代码字段和16位的校验和;后4个字节根据ICMP包的类型而取不同的值。
类型:一个8位类型字段,表示ICMP数据包类型;
代码:一个8位代码域,表示指定类型中的一个功能,如果一个类型中只有一种功能,代码域置为0;
检验和:数据包中ICMP部分上的一个16位检验和。
类型和代码如下图所示:
二、Wireshark抓包分析
ICMP报文的类型和代码组合起来有很多种,用Wireshark找几个常见的来学习一下。
1、下图是一个PING百度包,从中可以看到类型为8,代码为0,代表一个PING请求。
2、下图是一个PING百度包,从中可以看到类型为0,代码为0,代表一个应答PING。
3、下图是一个tracert百度包,从中可以看到类型为11,代码为0,代表超时(从IP协议可以看到源地址为192.168.1.1,目的地址为192.168.1.106,应该是tracer www.baidu.com后返回的应答消息,为什么会超时,目前没想明白)。
4、下图是一个tracert百度包,从中可以看到类型为3,代码为3,代表端口不可达(应该是tracer www.baidu.com后返回的应答消息,为什么会端口不可达,目前没想明白)。
三、小结
协议这个东西不学的时候,自己感觉还懂一点点,再学就发现自己毛都不会。
路漫漫其修远啊。