6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

一、捕获ICMP报文

  1. 打开Wireshark,选择网络接口并点击开始按钮。分组列表面板不断刷新抓渠道的数据包,为了过滤出我们所要分析的ICMP报文,我们在过滤框中输入icmp,为了生成icmp报文,我们需要运行系统自带的ping程序。

  2. 打开命令行,输入

    ping 192.168.184.2
    

    ping命令在运行过程中会发送多个ICMP的回应请求报文,如果目标主机可达,则ping程序会接收到多个响应的ICMP回应应答报文,如我们ping 192.168.184.2如图

    ping

    我们可以看到ping程序的返回结果,里面包含了四条目标主机的回复信息及一些统计信息,图中ping的IP地址是操作主机所在网络的网关地址。

  3. 回到Wireshark我们可以看到分组列表中过滤出了8个ICMP报文,这8个报文是由成对的请求和应答组成。

    如图

    Wireshark

    这些报文是否属于ping程序,我们来验证一下。

    第一个报文的目的地址是192.168.184.2,这正是刚才ping命令执行的目的IP地址。源地址是192.168.184.133如图

    IP地址

    我们可以看到本机的IP地址是192.168.184.133。这就说明第一条报文是由本机发出的。

    第二个ICMP报文图中我们看到它的目的IP地址和源地址与第一个ICMP报文恰恰相反,它是由网关发往本地主机的一个ICMP的应答报文,所以Wireshark捕获的这8个报文告诉我们ping程序是连续的发送了四个ICMP的请求,对方在可达可联通的情况下会回应相应的ICMP应答报文,所以利用ICMP报文的交互,就可以检测对方的可达性。

二、分析ICMP报文结构

点击第一个ICMP的回应请求报文,在分组详情面板中会以分层的形式显示数据包的具体结构如图

ICMP报文结构

  1. 第一层Frame点开,给出了数据帧的全局信息,显示了包括帧长74个字节,帧到达的时间,接口的编号和帧的类型。

    第一行

  2. 第二行显示了数据帧头部信息,可以看到以太帧头部包括的三个字段,目的MAC地址,源MAC地址、类型字段,类型字段取值为十六进制的0800,说明数据帧中包含的是一个IP分组。

    第二行

  3. 第三行显示了IP分组头部信息,包括版本号4,头部长度20字节,服务类型,数据报总长度,用于分片的标志字0,分片偏移字段0,说明这是一个完整的IP数据报。没有被分片。生存周期128,表示最多允许经过128跳路由器的转发。协议字段1,说明IP分组里面封装的是一个ICMP报文,头部校验、源IP地址,目的IP地址。我们可以对照以太网IP协议规范的报文格式(5.2.3 IP数据报(一)IP数据报的格式)来检查ICMP报文该字段是符合规范的。

    第三行

  4. 第四行是ICMP的协议报文,具体内容是类型8,Code:0表明这是一个 Echo (ping) request也就是一个回应请求报文,校验和字段,这三个字段是所有ICMP报文的通用首部,或称为固定首部,下面的标识字段(Identifier (BE): 1 (0x0001))和序号字段(Sequence Number (BE): 1 (0x0001)),都是用两种不同的字节序来显示的。标识代表的是当前运行的ping进程的标识,序号字段代表ping生成的ICMP报文的编号

    第四行

  5. 这里我们可以发现,在成对出现的ICMP的回应报文中标识字段和序号字段都是相同的

    在这里插入图片描述

  6. 最后的Data字段中,包含了32个字节的随机生成的数据

通过对Wireshark捕获到的ICMP报文的分析,我们能够更加清晰的了解到ICMP报文的结构并且更加深入的理解了ping命令的工作过程。

这里我们一起讨论如果在主机上同时运行两个ping程序对相同的目标地址进行检测,那么这两个ping程序发送或者接收到的ICMP报文之间的区别,这些区别的含义又是什么欢迎大家评论区讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(学习笔记-连接断开)TCP四次挥手

TCP四次挥手过程 TCP断开连接是通过四次挥手实现的,双方都可以主动断开连接,断开连接后主机中的资源将被释放,四次挥手的过程如下: 客户端打算关闭连接时,会发送一个TCP首部FIN标志位为1的报文,也就是FIN报…

C#中的抽象类(abstract)

C#中的抽象类(abstract)。 1:抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 2:抽象类不能被实例化 3:抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方…

OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化

文章目录 1、函数原型2、示例3、结论: OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化 在opencv中reshape函数,既可以改变矩阵的通道数,又可以对矩阵元素进行序列化 1、函数原型 Mat Mat::reshape(int cn, in…

SQLServer2022安装(Windows),已验证

二、安装可视化工具SSMS 接下来安装可视化工具SSMS,现在新版本默认都是没有可视化界面,需要单独安装 (1)地址:下载 SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn…

集合面试题--二叉树,红黑树,散列表

目录 二叉树 二叉搜索树 时间复杂度 总结 红黑树 红黑树特质 复杂度 总结 散列表 散列函数 哈希冲突 散列冲突-链表法(拉链) 时间复杂度 ​总结 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是…

jenkins发布使用邮件添加审批

首先安装好Email Extension Plugin插件并在 system下配置好邮件 然后配置流水线需要的参数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/418fc89bfa89429783a1eb37d3e4ee26.png#pic_center pipeline如下: def skipRemainingStages false //是否跳过生…

pdf转excel表格怎么做?分享效率超高的方法

PDF是我们在办公中常用的格式,它方便我们保存、查阅和传输文件。有时候我们可能会遇到需要将大量内容的PDF文档转换为Excel表格的情况,这时候一个好用的转换工具就能帮助我们省时高效地完成任务。下面将介绍几款可靠且实用的PDF转换器软件。 一、小圆象P…

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值

文章目录 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值 大家好,我是Maynor。相信…

通过迁移加速计划迁移到亚马逊云科技

公司出于许多不同的原因迁移到云。也许他们需要关闭一个老化的数据中心。或者,他们正在寻找太昂贵或太难在内部构建和维护的新功能。无论出于何种原因,在开始规划迁移之前,他们还有另一个问题需要回答:哪种云服务适合他们的需求&a…

gogs的自定义配置

在 GOGS 下载并安装后,在程序目录下建立一个custom/conf/app.ini的配置文件,内容如下: APP_NAME Gogs # APP名字 RUN_USER git # 启动用户,设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

.Net Core Restful Api 版本区分第一种

前言:在我们进行Web Api开发时,版本的区分,是必须要考虑的,涉及到我们的版本发布,切换等,如何从旧版本无缝的切换到新版本? 下面,我们通过使用[ApiVersion]特性,实现两个…