当前位置: 首页 > news >正文

Wireshark抓包分析ICMP协议

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

分析目的:分析ICMP协议的数据格式、报文类型及作用。
操作系统:Windows 10 企业版
抓包工具:Wireshark 4.0.8

  • 第一步:捕获ICMP数据包
  • 第二步:分析报文类型
  • 第三步:分析数据报格式

第一步:捕获ICMP数据包

ping 命令底层使用了ICMP协议,使用 ping 命令,就可以观察到ICMP的「工作流程」

1)Wireshark「开启抓包」后, ping 一下我们的网关,触发ICMP协议。

  • cmd中执行命令:ping 192.168.2.1 -n 1

在这里插入图片描述

2)Wireshark的「显示过滤器」中过滤 icmp

  • 抓到了两个包:上面是ICMP「请求包」,下面是ICMP「响应包」
  • 因为我只Ping了一次,所有只抓了一对包,这样分析起来比较方便。

在这里插入图片描述


3)找到ICMP的数据包

  • 从上往下分别是这个数据包中,物理层、数据链路层、网络层、应用层使用的协议
  • 最下面的 Internet Control Message Protocol「首字母」连起来是ICMP,就是我们要找的ICMP协议,其他协议也是这种形式。

在这里插入图片描述


第二步:分析报文类型

ICMP协议通过的 Type Code 两个字段来表示「报文类型」,接收方根据报文类型执行对应的操作,以此来达到「控制」的效果。

因此,这里我们先看 Type Code 这两个字段。

1)先看第一个包,重点看我圈中的字段:

  • Type字段,标明了报文的类型, request 表示这是一个「请求」报文。
  • Code字段,标明了报文的代码。
  • Type=8,Code=0,表示这是一个回显请求(Ping请求)

在这里插入图片描述


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

  • Type字段,标明了报文的类型, reply 表示这是一个「响应」报文。
  • Code字段,标明了报文的代码。
  • Type=0,Code=0,表示这是一个回显应答(Ping应答)

在这里插入图片描述

第三步:分析数据报格式

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

在这里插入图片描述

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

  • Checksum Status = Good,表示校验状态是良好的,报文无误

在这里插入图片描述

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

在这里插入图片描述


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

在这里插入图片描述


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

  • 请求和响应中,这四个字段都是一样的,用来标识这次请求。比如我给你发个1,你给我回个1,我就知道我们俩是同一个请求;如果你给我会个2,我就知道我们不是同一个请求,你是回给别人的,你不是会给我的。

在这里插入图片描述

平时使用,我们主要看Type 和 Code 这两个字段,知道ICMP的报文类型即可。

ICMP的报文类型有很多,详情可以参考我的另一篇文章:ICMP协议的功能及实现原理,ICMP协议报文类型

相关文章:

Wireshark抓包分析ICMP协议

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 分析目的:分析ICMP协议的数据格式、报文…...

C++——安装环境、工具

一、进入官网下载 Visual Studio 下载地址:https://visualstudio.microsoft.com/zh-hans/ 二、安装 三、安装完后如果出现window SDK 下载失败,可自行下载,如果没有请跳过这一步 Window SDK 官方地址:https://developer.microsoft…...

征稿啦!第 18 届「中国 Linux 内核开发者大会」重磅启动

第十八届中国 Linux 内核开发者大会(CLK )如期而至。CLK 以“自由、协作、创新”为理念,以开源技术的推广和普及为使命,旨在促进 Linux 内核开发爱好者相互交流,共同进步。 经过组委会公开征集承办单位和各意向承办单…...

JDBC8.0+

首先创建工程,导入jar包 1.注册驱动 //注册驱动//利用反射,较为灵活Class.forName("com.mysql.cj.jdbc.Driver");/**问题:会注册俩次驱动* 解决方案:只触发静态代码块* 触发静态代码块:* 类加载机制&…...

聊聊常见的IO模型 BIO/NIO/AIO 、DIO、多路复用等IO模型

文章目录 一、前言1. 什么是IO模型2. 为什么需要IO模型 二、常见的IO模型1. 同步阻塞IO(Blocking IO,BIO)2. 同步非阻塞IO(Non-blocking IO,NIO)3. 异步非阻塞IO(Asynchronous IO,AI…...

Linux- 网络编程初探

原始套接字(Raw Socket) 原始套接字(Raw Socket)是一种提供较低级别网络访问的套接字。通过使用原始套接字,应用程序可以直接发送或接收网络层如IP的数据包,或者传输层如TCP、UDP的段,而无需通…...

AVLoadingIndicatorView - 一个很好的Android加载动画集合

官网 GitHub - HarlonWang/AVLoadingIndicatorView: DEPRECATED 项目简介 AVLoadingIndicatorView is a collection of nice loading animations for Android. You can also find iOS version of this here. Now AVLoadingIndicatorView was updated version to 2.X , If …...

我想设计一套游戏的奖励系统,有什么值得注意的?

游戏上: 游戏成就系统的价值 游戏中的成就可以延长游戏时间,让玩家不仅仅是将游戏通关,而是必须完成游戏内所有挑战及发现秘密,这些成就可以与游戏本身的目标一致,也可以独立于游戏的主要或次要目标之外,…...

精通git,没用过git cherry-pick?

前言 git cherry-pick是git中非常有用的一个命令,cherry是樱桃的意思,cherry-pick就是挑樱桃,从一堆樱桃中挑选自己喜欢的樱桃,在git中就是多次commit中挑选一个或者几个commit出来,也可以理解为把特定的commit复制到…...

QT5|C++|通过创建子线程方式实现进度条更新

背景: 一开始是通过在主线程中写一个for循环,每次加1后睡眠1s进行进度条更新。但这样写的结果是 --> 无法动态显示进度条进度。后通过上一篇文章 [ QT5|C|通过信号槽机制实现进度条更新 ] 中的写信号槽机制实现。实现后 考虑了下有没有其他方式实现&a…...

基于mediasoup的webrtc server,性能压测时发现带宽利用率偏低(40%)

基于mediasoup的webrtc server,进行性能压测时发现,在1gbps的网络条件下,带宽利用率在40%(400Mbps)时,就会出现过高丢包率的(packet loss > 10%)的情况。这个结果是合理的吗?如果不合理,要如何提升性能&…...

Ubuntu Redis开机自启动服务

1. 建立service文件 sudo vim /etc/systemd/system/redis-server.service2. redis service文件 [Unit] DescriptionAdvanced key-value store Afternetwork.target Documentationhttp://redis.io/documentation, man:redis-server(1)[Service] Typenotify ExecStart/usr/bin/…...

Stm32_标准库_呼吸灯_按键控制

Stm32按键和输出差不多 PA1为LED供给正电,PB5放置按键,按键一端接PB5,另一端接负极 void Key_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //APB2总线连接着GPIOBGPIO_InitStructur.GPIO_Mode GPIO_Mode_IPU;GPIO_InitStructur.…...

MySQL作业:索引、视图、存储、函数

学生表:Student (Sno, Sname, Sex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score) …...

漫谈:C语言 C++ 所有编程语言 =和==的麻烦

这次不只是C语言很麻拐,是所有编程语言都很麻拐了。 赋值和比较是编程语言最基本的操作之二,C和所有类C语言都使用“”和“”来分别表示赋值和比较。 数学上等号“”是个单一的概念,含义是“相等”,左右两边是等价的,很…...

十五、异常(1)

本章概要 异常概念基本异常 异常参数 异常捕获 try 语句块异常处理程序终止与恢复 Java 的基本理念是“结构不佳的代码不能运行”。 改进的错误恢复机制是提高代码健壮性的最强有力的方式。错误恢复在我们所编写的每一个程序中都是基本的要素,但是在 Java 中它显得…...

Redis 哨兵模式搭建教程

一、介绍 本文实战搭建一主两从三哨兵,通过使用哨兵模式,可以有效避免某台服务器的 Redis 挂掉出现的不可用问题,保障系统的高可用。 本文通过虚拟机搭建的三台 Centos7 服务器进行测试,使用的 Redis 版本为 6.25。 二、准备环…...

【C++】gnustl_static 与 c++_shared 的区别

参考:GNU与cSTL的区别与联系-爱代码爱编程​ gnustl_static 与 c_shared 的区别: 不同版本的 STL TSL是一个与STL兼容的多线程支持库。 STLport是一个可移植、高度兼容的STL实现。 SGI STL是最早的STL实现之一,对STL的发展起到了重要的作用…...

怎样选择第三方检测机构获取功能测试报告?

数字化时代,软件给人们的生活带来了越来越多的便利,产品功能测试也成为了软件开发方在研发时的重要环节,这关系到用户使用产品的体验感。所以做好软件功能测试对把控产品质量有着很大影响,通过有效的功能测试能够发现系统潜在的问…...

【@PostConstruct、 @Autowired与构造函数的执行顺序】

PostConstruct、 Autowired与构造函数的执行顺序 一、PostConstruct介绍二、Spring框架中在bean初始化和销毁时候执行实现方式三、项目验证1.MyServiceImpl2.测试结果3. 项目源码 最近对同事代码进行codeReview时候发现用PostConstruct注解,特地对此注解执行顺序进行…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...