Wireshark协议分析之ICMP

发布时间:2024年01月20日

Wireshark协议分析之ICMP

一:ICMP头

ICMP是TCP/IP协议簇中的一个功能协议,负责提供在TCP/IP网络上的设备、服务以及路由器可用性的消息

大多数网络检修技巧和工具都是基于常用的ICMP消息类型

类型(Type):ICMP消息基于RFC规范的类型或分类

代码(Code):ICMP消息基于RFC规范的子类型

校验和(Checksum):用来保证ICMP头和数据在抵达目的地时的完整性

可变域(Variable):依赖于 Type 和 Code

二:ICMP类型和消息

ICMP数据部分的结构取决于由Type和Code域中的值所定义的用途

ICMP类型域可以作为数据包的分类,Code域作为它的子类。Type域的值为3?意味着“目标不可达”。但只有这个信息可能不足以发现问题,当数据包在Code域中指明值为3,也就是“端口不可达”时,可以知道是通信端口的问题

三:Echo的请求与响应

ICMP因为ping工具而广为人知,ping用来检测一个设备的可连接性

ping命令每次向一个设备发送一个数据包,并等待回复,ping命令只包含两步,请求与响应

echo和ping经常混用:ping是一个工具的名字,ping工具用来发送ICMP的echo请求数据包

可以看出上图是192.168.100.138给192.168.100.1发出的echo请求,这是一个简单的ICMP数据包,包含了很少的数据。

Sequence?number用来匹配请求和响应

在ICMP数据包可变域还有一串随机文本字符?

第二个数据包是echo响应数据包,对应上一个请求包,Sequence?number一致,当这个数据包被192.168.100.138成功接收到之后,ping就会报告成功

还可以使用ping的选项来增加它的数据填充,这样在检测不同类型的网络时,就可以强制将数据包分片,在检测具有较小分片大小的网络时会用到。

四:路由跟踪

路由跟踪功能用来识别一个设备都另一个设备的通路。在一个简单的网络中,这个通路可能只经过一个路由器,甚至一个不经过。在复杂的网络中可能要经过数十个路由器才能到达目的地。确定数据包从一个目的地到另一个目的地的实际路径,对于通信检修非常重要。

通过使用ICMP,路由跟踪可以画出数据包的路径

上图中的TTL设置为1,这个数据包再遇到第一个路由器会被丢弃掉。因为目标地址为4.2.2.1 ,故源设备和目的设备之间至少会有一个路由器,所以这个数据包不会到达目的地。

上图是第一个数据包的响应的数据包,类型11?代码为0?指数据包TTL在传输过程中超时,因此目的不可达

这个ICMP响应数据包有时候被叫做双头包,因为这个ICMP的结尾部分还包含了原先echo请求的IP头和ICMP数据副本,在网络检修是十分有用?

上图中的TTL设置为2,?一直持续TTL长到9得到了响应

上图的src来自 4.2.2.1 ,type为0?code?为0? ,根据每一次的src即可得到传输路径

文章来源:https://blog.csdn.net/mmxhappy/article/details/135694471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。