「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》
分析目的:分析ICMP协议的数据格式、报文类型及作用。
操作系统:Windows 10 企业版
抓包工具:Wireshark 4.0.8
ping 命令底层使用了ICMP协议,使用 ping 命令,就可以观察到ICMP的「工作流程」。
1)Wireshark「开启抓包」后, ping 一下我们的网关,触发ICMP协议。
ping 192.168.2.1 -n 1
2)Wireshark的「显示过滤器」中过滤 icmp

3)找到ICMP的数据包
Internet Control Message Protocol,「首字母」连起来是ICMP,就是我们要找的ICMP协议,其他协议也是这种形式。
ICMP协议通过的 Type 和 Code 两个字段来表示「报文类型」,接收方根据报文类型执行对应的操作,以此来达到「控制」的效果。
因此,这里我们先看 Type 和 Code 这两个字段。
1)先看第一个包,重点看我圈中的字段:

2)再看第二个包,重点看我圈中的字段

接下来看看ICMP的报文数据格式,除了刚才讲的类型(Type)和代码(Code),还有其他字段。

1)「校验和」是 Checksum 字段,用来验证报文是否有误

2)ICMP的响应中,会携带「响应时间」(Response time ),Ping命令返回的响应时间,就是从这里获取的

3)发送了多少「字节」,也可以在Data字段看到

4)BE 和 LE 这四个字段用来对应请求和响应的关系。

平时使用,我们主要看Type 和 Code 这两个字段,知道ICMP的报文类型即可。
ICMP的报文类型有很多,详情可以参考我的另一篇文章:ICMP协议的功能及实现原理,ICMP协议报文类型