基于 Wireshark 分析 ICMP 协议

一、ICMP 协议

ICMP(Internet Control Message Protocol)即互联网控制报文协议,是TCP/IP协议簇的一个子协议。它主要用于在IP主机、路由器之间传递控制消息,这些消息涉及网络是否通畅、主机是否可达、路由是否可用等关于网络本身的信息。虽然ICMP报文并不传输用户数据,但对于用户数据的传递却起着至关重要的作用。

ICMP报文被封装在IP数据包内部,作为IP数据包的数据部分通过互联网传递。当数据包处理过程中出现差错时,ICMP会向数据包的源端设备报告这个差错,但并不会纠正这个差错,也不会通知中间的网络设备。这是因为ICMP报文只包含源端和最终的目的端的信息,并不记录报文在网络传递中的全部路径。

ICMP协议共有五种常用类型,包括回显请求(Echo Request)、回显应答(Echo Reply)、目标不可达(Destination Unreachable)、参数问题(Parameter Problem)和红牌。此外,还有时间戳、信息等较少使用的类型。

  • 回显请求报文用于测试网络的连通性和延迟。发送方发送一个回显请求报文到目标主机,目标主机收到请求后回复一个回显应答报文。
  • 回显应答报文是目标主机收到回显请求后产生的响应,用于确认网络连通性和延迟。
  • 当网络中的路由器或主机无法将数据包送达目标主机时,会发送目标不可达报文。
  • 当接收方发现数据包中的某个参数错误时,会发送参数问题报文。

ICMP报文格式分为两个部分:首部和数据部分。在数据部分中,前四个字节是统一的格式,第一个字节是类型,占8位;类型的右边是代码,也占8位;检验在最右边,占两个字节,即16位。第二行有4个字节,占32位。第四个字节取决于ICMP报文的类型。

总的来说,ICMP协议在网络通信中扮演着重要的角色,通过传递控制消息来确保数据的正确和有效传输。如需更多关于ICMP协议的详细信息,建议查阅计算机网络技术相关书籍或咨询该领域的专业人士。

二、ICMP 头

以下是ICMP头部结构的表格解析:

字段长度(字节)描述
类型(Type)1用于标识ICMP报文的作用及格式。例如,8表示回送请求(Echo),0表示回送应答(Echo Reply)。
代码(Code)1进一步划分ICMP报文的类型,标识错误的原因。如果一个类型中只有一种功能,代码域置为0。
校验和(Checksum)2用于差错校验,由ICMP头部和数据部分共同计算得出。校验和的计算方法和IP协议校验和算法是一样的。
标识符(Identifier)4如果是ICMP请求报文,该字段在Linux/macOS中用的是进程ID。对于回显请求和回显应答报文,标识符帮助匹配请求和应答。
序列号(Sequence Number)4对于回显请求和回显应答报文,序列号帮助匹配请求和应答,并用来确定回显请求报文的顺序。

需要注意的是,ICMP头部长度为8字节,这包括了上述的字段。后面紧跟的是ICMP报文的数据部分,其长度和内容取决于ICMP报文的类型。ICMP报文实际上还是通过IP层传输,ICMP头部和ICMP数据部分组成完整的报文,然后再添加IP协议头部报文,形成完整的IP报文,最后再通过数据链路层生成以太网帧进行传输。

此外,关于字节和数字的存储顺序,网络存储顺序是从左到右,依次从低位到高位,这与字节和数字的常规存储顺序(从右到左,依次从低位到高位)是相反的。

这个表格提供了一个关于ICMP头部结构的深入解析,有助于理解ICMP报文如何在网络中传输和处理。如需更多关于ICMP协议的详细信息,建议查阅计算机网络技术相关书籍或咨询该领域的专业人士。

三、ICMP 类型和消息

ICMP(Internet Control Message Protocol,互联网控制消息协议)的类型和消息是其核心组成部分,用于在网络中传递各种控制信息。下面我们将深入解析ICMP的类型和消息。

ICMP类型

ICMP类型字段占一字节,用于标识ICMP报文的类型。目前定义了14种类型,取值范围在1到255之间。根据类型值,ICMP报文可以分为差错报文(1~127)和信息报文(128以上)。常见的ICMP类型包括:

  • 回显请求(Echo Request):通常用于测试网络的连通性和延迟。发送方发送一个回显请求报文到目标主机,目标主机收到请求后回复一个回显应答报文。
  • 回显应答(Echo Reply):目标主机对回显请求报文的响应,用于确认网络连通性和延迟。
  • 目标不可达(Destination Unreachable):当路由器或主机无法将数据包送达目标主机时,会发送此报文。这可能是由于多种原因,如主机不可达、协议不可达、端口不可达等。
  • 超时(Time Exceeded):当数据包在传输过程中生存时间(TTL)超时,或在某个节点上停留时间过长时,会发送此报文。

此外,还有重定向、源站抑制、参数问题等其他类型。

ICMP消息

ICMP消息由消息类型、代码、校验和和数据字段组成。其中,消息类型和代码共同决定了ICMP消息的具体功能和用途,而数据字段根据不同的消息类型和代码而有所变化。

ICMP消息主要用于传递网络错误报告和诊断信息,以及支持一些网络工具和应用程序(如ping、traceroute)的正常运行。例如,当数据包无法到达目标主机时,路由器会发送一个目标不可达的ICMP消息,告知发送方错误的原因。这样,发送方就可以根据这些信息调整网络配置或采取其他措施。

总的来说,ICMP的类型和消息是网络通信中不可或缺的一部分,它们通过传递控制信息来确保数据的正确和有效传输。深入理解ICMP的类型和消息对于网络管理员和开发人员来说是非常重要的,有助于他们更好地管理和优化网络性能。

四、请求与响应

在ICMP(Internet Control Message Protocol)协议中,有一些常见的请求和响应类型,用于在网络中进行通信和故障排除。下面是ICMP协议中常见的请求和响应类型:

1. ICMP Echo请求和回应(Ping):ICMP Echo请求是一种常见的网络工具,用于测试主机的可达性和延迟。发送方发送一个Echo请求数据包到目标主机,目标主机接收到请求后,会发送一个Echo回应数据包作为响应。这种请求和响应用于网络诊断和测量网络延迟。

使用 Wireshark 抓包 Ping 命令

请求数据包的结构

响应包

2. ICMP Timestamp请求和回应:ICMP Timestamp请求用于获取目标主机的时间戳信息。发送方发送一个Timestamp请求数据包到目标主机,目标主机接收到请求后,会返回一个带有时间戳信息的Timestamp回应数据包。

3. ICMP Redirect请求和响应:ICMP Redirect用于向主机发送路由重定向信息。当一个主机发送数据包到错误的网关时,网关可以发送一个Redirect请求给主机,指示其将流量发送到更合适的网关。

4. ICMP Destination Unreachable(目的地不可达):当一个主机无法到达目标主机或端口时,目标主机会发送一个Destination Unreachable响应给发送方,通知其无法到达目标。

5. ICMP Time Exceeded(时间超过):当一个数据包在网络中被路由器丢弃或超过最大生存时间(TTL),路由器会发送一个Time Exceeded响应给发送方,通知其数据包的生存时间已过。

6. ICMP Parameter Problem(参数问题):当一个数据包的IP头或上层协议头部有问题时,接收方可以发送一个Parameter Problem响应给发送方,通知其存在参数错误。

这些ICMP请求和响应类型在网络中起着重要的作用,用于网络诊断、故障排除和通信确认。然而,攻击者也可以利用ICMP协议进行攻击,如ICMP洪水攻击(ICMP Flood)和ICMP回显请求攻击(Ping of Death)。为了保护网络免受这些攻击,建议使用防火墙、入侵检测/预防系统(IDS/IPS)和流量过滤等安全措施。

五、路由跟踪

ICMP中的路由跟踪主要通过Traceroute(路由追踪)工具实现。Traceroute利用ICMP报文和IP头部的TTL(Time-to-Live)字段来跟踪IP数据包在网络中的路径。

TTL字段指定了数据包在经过路由器转发时能够经过的最大网段数量。当源主机发送数据包时,会设置一个初始的TTL值。每经过一个路由器,TTL值就会减一。当TTL值减为零时,路由器会丢弃该数据包,并发送一个ICMP超时差错报文给源主机。

Traceroute发送的数据包中包含了特殊的ICMP报文(如超时差错控制报文),并逐渐增加数据包的TTL值。每当数据包经过一个路由器时,TTL值会减一,直到TTL值为零时,路由器会发送ICMP超时差错报文。通过收集这些ICMP报文,Traceroute可以确定数据包经过的路由路径,并显示每个路由器或网络节点的地址。

此外,Traceroute还可以用于分析网络性能,如响应时间、丢包率和响应时延等。它可以帮助网络管理员诊断网络问题,找出网络瓶颈或故障点,从而优化网络配置和性能。

需要注意的是,Traceroute的实现原理可能因不同的操作系统和网络环境而有所差异。一些系统可能不支持所有的Traceroute选项或功能。因此,在实际使用中,需要参考具体系统或工具的文档,并根据实际情况进行配置和使用。

总的来说,ICMP中的路由跟踪是一种强大的网络诊断工具,通过Traceroute等工具可以帮助我们深入了解数据包在网络中的传输路径和性能表现。

使用 Wireshark 抓包 tarcert 命令

TTL 值为 1 的数据包 

因为它的 TTL 值减 1 变为了 0,所以不能继续传输,因此目的不可达 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Quartz怎么简单创建一个定时执行的任务

1.安装Quartz包 2.编写Job任务 继承 IJob编辑自定义任务 3.调用job,以指定时间策略执行 定时600s执行一次 StdSchedulerFactory factory new StdSchedulerFactory(); IScheduler scheduler await factory.GetScheduler(); await scheduler.Start();// 定义…

2024年营销技术远景图发布:14,106种营销技术产品(同比增长27.8%)

每年五月的第一个星期二(美国东部时间),Scott Brinker设定为Martech Day,以此来庆祝营销技术行业和所有有才华的营销技术专家和营销运营专业人士的工作,「为你们在开拓这片荒野所做的一切而欢呼!」 同时&a…

解决硬盘灯不停的闪硬盘不停的读cpu占用率高的Microsoft Windows Search

可能你发现了,你的硬盘灯一直亮着,为什么??可能你发现了,你的CPU占用率一直居高不下,为什么?也许就是因为Microsoft Windows Search这个进程 一、windowsSearch的罪证 SearchIndexer和Search…

GWO-CNN|多输入回归预测|灰狼算法优化卷积神经网络|Matlab

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

vmware虚拟机内删除文件后宿主机空间不释放

问题描述 linux下,vmware内虚拟机删除文件,宿主机空间不释放,D盘快满了 解决方法 通过vmware-toolbox进行空间回收 安装 在虚拟机内操作 yum install -y open-vm-tools 清理 在虚拟机内操作 #查看磁盘的挂载点 sudo /usr/bin/vmware…

[C++核心编程-04]----C++类和对象之封装

目录 引言 正文 01-类和对象简介 02-封装简介 03-封装的意义 04-封装案例之设计学生类 05-封装的权限控制 06-struct和class的区别 07-成员属性设置为私有 08-封装案例1-设计立方体 09-封装案例2-判断点和圆的关系 总结 引言 在C中,…

力扣70 爬楼梯 C语言 动态规划 递归

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…

天诚人脸物联网锁+网约房管理系统为智慧酒店、民宿管理赋能

随着互联网技术的发展,“网约房”逐渐步入受众视野,在改变旅客入住模式和生活方式的同时,为旅客旅游住宿创造了新的选择,也为拥有冗余房间资源的房东提供了新的营收路径。但是,网约房的管理问题频发,需要数…

栈的2道面试题【有效的括号】【用栈实现队列】

栈的面试题: 1.有效的括号 题目: 有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合…

CAN报文中的信号解析

ECU发送的一帧CAN报文中是有多个信号的。信号在报文的数据域中,数据域中可以有多个信号。协议规范一帧CAN报文数据域最多有8个字节,企业中一般都设计为所有的CAN报文都是8字节。8个字节(B)换算成比特(bit)就…

内网穿透使用教程

什么是内网穿透 内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑&#xff0c…

一文让您了解离散制造中的制造执行系统 ​​(MES)

什么是制造执行系统 ​​(MES)? 制造执行系统(通常称为MES)是一种综合软件解决方案,旨在监视、控制和管理车间的制造运营。MES 充当企业级系统(如企业资源规划或 ERP)与制造环境中发生的实时流程之间的桥梁…

【设计模式】之观察者模式

系列文章目录 【设计模式】之装饰器模式【设计模式】之工厂模式(三种)【设计模式】之工厂模式(三种) 前言 今天给大家介绍另一种设计模式--观察者模式,有了解webscoket实现原理的小伙伴应该对这个设计模式不陌生。不清…

《视觉十四讲》例程运行记录(3)——运行ch6的例程中Ceres和g2o库的安装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、安装Ceres1. 安装依赖2. 编译安装 二、安装g2o1. 安装依赖项2. 编译安装3. 可能出现的报错(1) 报错一 一、安装Ceres 1. 安装依赖 终端输入: sud…

21 使用Hadoop Java API读取序列化文件

在上一个实验中我们筛选了竞赛网站日志数据中2021/1和2021/2的数据以序列化的形式写到了hdfs上。 接下来我们使用Java API 读取序列化的数据保存到磁盘中。 其他命令操作请参考:16 Java API操作HDFS-CSDN博客 1.我直接在上一个项目中test/java目录下创建com.maidu.s…

72207-80-8,Epoxide-PEG-Epoxide是一种具有两个环氧基团的线性双功能PEG(聚乙二醇)试剂

【试剂详情】 英文名称 Ep-PEG-Ep,Epoxide-PEG-Epoxide 中文名称 环氧基-聚乙二醇-环氧基,聚乙二醇二缩水甘油醚 CAS号 72207-80-8 外观性状 由分子量决定,固体或者液体。 分子量 0.4k,0.6k,1k,2k…

代码训练LeetCode(17)存在重复元素

代码训练(17)LeetCode之存在重复元素 Author: Once Day Date: 2024年5月7日 漫漫长路,才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: 219. 存在重复元素 II - 力扣(LeetCode)力扣 (LeetCode) 全球…

windows端口复用

1. 概述 使用 HTTP.sys 中的 Net.tcp Port Sharing 服务,配合 WinRM 实现端口复用。 优点: HTTP.sys 为 windows 原生机制, WinRM 为 windows 自带功能,动作较小,不易触发主 动防御。 需要管理员权限。 2. 原理 (…

3D点云处理的并行化

在我们的项目中,我们研究了数百万级 3D 点云上的空间局部计算,并提出了两种主要方法,可以提高 GPU 的速度/吞吐量,同时保持最终结果的性能准确性。 通过空间局部,我们的意思是每个像素独立地基于其局部邻域中的点执行…

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

步骤: 1、项目准备:创建数据库(之前已经创建则忽略),以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件,并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …