什么是ICMP协议,如何防护ICMP攻击

news2025/1/11 21:46:39

一.什么是ICMP 

ICMP(Internet  Control Message  Protocol)是互联网控制报文协议,是TCP/IP协议族的一个子协议。它主要用于在IP网络中传递控制信息和错误消息,是IP协议的补充。ICMP协议是一种无连接协议,它不需要建立连接,也不需要维护状态,只需要发送报文和接收报文。

ICMP协议常用于网络故障诊断、网络管理和网络控制等方面,可以用来检测网络是否可达、计算延迟、跟踪网络路径、控制流量等。ICMP协议的报文分为两种:差错报文和询问报文。差错报文用于通知发送端有错误发生,询问报文用于向目的主机发出请求,获取网络状态和信息。

常见的ICMP报文包括ping请求和ping响应报文、traceroute报文、路由器通告报文、源站选路报文、重定向报文等。在网络通信中,ICMP协议通常与其他协议一起使用,如ping命令使用ICMP协议来测试网络是否可达,traceroute命令使用ICMP协议来追踪网络路径。

 二.IDMP的工作原理

 ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

在网络中经常会使用到ICMP协议,比如经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。 

 

 

 三.如何在网络故障排除中使用ICMP

1.使用Ping测试连通性

Ping是一种基于ICMP的网络诊断工具,通过发送ICMP回显请求(Echo Request)报文并等待回显应答(Echo Reply)报文来检测两个网络节点之间的连通性。Ping可以帮助您确定网络节点是否在线,以及网络延迟(往返时间,RTT)。

2.使用Traceroute诊断路径问题

Traceroute是另一种基于ICMP的网络诊断工具,通过发送一系列具有递增生存时间(TTL)的ICMP报文来确定数据包在网络中的传输路径。Traceroute可以帮助您识别网络中的路由问题、循环和延迟瓶颈。

3.分析ICMP错误报文

在网络故障排除过程中,关注ICMP错误报文(如目的不可达、超时、重定向等)可以帮助您发现网络问题的根源。例如,目的不可达报文可能表明路由问题或防火墙阻止了数据包的传输。

4.使用ICMP路由器发现

ICMP路由器发现报文可以帮助您了解网络中的路由器配置和拓扑。这对于诊断路由问题和优化网络性能非常有用。

5.监控ICMP流量

通过监控网络中的ICMP流量,您可以发现异常行为(如ICMP洪水攻击)和潜在的网络问题。例如,大量的ICMP源抑制报文可能表明网络存在拥塞问题。

6.使用专业的网络分析工具

许多网络分析工具(如Wireshark)支持ICMP报文的捕获和分析。这些工具可以帮助您更深入地了解网络中的ICMP通信,从而更有效地进行故障排除。

四.ICMP的攻击方式

1.ICMP转向连接攻击

攻击者主要是使用ICMP【时间超出】或【目标地址无法连接】的消息。这两种ICMP消息都会导致一台主机迅速放弃连接。攻击只需伪造这些ICMP消息中的一条,并发送给通信中的两台主机或其中的一台,就可以利用这种攻击,接着通信连接就会被切断。

当其中一台主机错误地认为信息的目标地址不在本地网络中的时候,网关通常会使用ICMP转向消息。如果攻击者伪造出一条转向消息,它就可以导致另外一台主机经过攻击者主机向特定连接发送数据包。

2.ICMP数据包放大

攻击者向安全薄弱网络所广插的地址发送伪造的ICMP响应数据包,然后都向受害主机系统发送ICMP响应的答复信息,占用了目标系统的可用带宽并导致合法通信的服务拒绝。

3.死Ping攻击

由于早期路由器对包的最大尺寸都有限制,许多操作系统对 TCP/IP的实现在ICMP包上都是规定64KB,并且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区,当产生尺寸超过ICMP上限的包,也就是加载的尺寸超过64KB上限时,就会出现内存分配错误,导致 TCP/IP崩溃,致使接收方宕机。

4.ICMP Ping淹没攻击

大量的Ping信息广播淹没了目标主机的系统,使得它不能够对合法的通信作出响应。

5.ICMP nuke攻击

nuke发送出目标主机的操作系统无法处理的信息数据包,从而导致该系统宕机。

6.通过ICMP进行攻击信息收集

通过Ping命令来检查目标主机是否存活,依照返回的TTL值判断目标主机操作系统。

五.ICMP攻击的防御方式

1.对ICMP数据包进行过滤

虽然很多主机防火墙可以对ICMP数据包进行过滤,但对于没有安装防火墙的主机,可以使用系统自带的防火墙和安全策略对ICMP进行过滤。

2.修改TTL值

许多入侵者会通过Ping目标主机,用目标返回TTL值来判断对方操作系统。既然入侵者相信T TL值所反映出来的结果,那么只要修改TTL值,入侵者就无法得知目标主机操作系统了。

六.选择专业的高防防护团队

德迅云安全高防服务器:德迅云安全部署的T级别数据中心,具备完善的机房设施,核心骨干网络有效保证高品质的网络环境和丰富的带宽资源。搭载赠送:自主化管理平台、德迅卫士(主机安全防火墙)、WEB云防护(一站式网站安全加速)、1V1专家技术支撑,竭诚为您提供安全、可靠、稳定、高效的服务体验。

1.海量DDoS清洗:大防护带宽,平均延迟小于50ms,从容应对大流量攻击.

2.全方位防护全面:支持SYN Flood、ACK Flood、ICMP Flood、UDP Flood、NTP Flood、DNS Flood、HTTP Flood、CC攻击等常见攻击类型的防护。

3.全业务支持:支持TCP、UDP、HTTP/HTTPS等协议,满足游戏、APP、网站、金融等各种类型的业务需求。

4.指纹式防御算法:指纹式防御算法

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SambaNova 芯片:深入解析其架构和高性能秘诀

SambaNova——一家总部位于帕洛阿尔托的公司已经筹集了超过10亿美元的风险投资,不会直接向公司出售芯片。相反,它出售其定制技术堆栈的访问权限,该堆栈具有专门为运行最大的人工智能模型而设计的专有硬件和软件。 最近,SambaNova…

MySQL - 基础三

11、事务管理 CURD不加控制,会有什么问题? 当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库时,客户端B检查了票数,发现大于0,于是又卖了一次票。然后A将票数更新回数据库。这是就出现…

面经分享(Flask,轻量级Web框架)

1. Flask的核心特点 a. 轻量级:核心简洁,只提供了基本的功能,其他高级功能可以通过插件或扩展来添加。 b. 灵活性:允许开发者选择适合自己项目的组件和工具,没有强制的项目结构和设计模式。 c. 易于扩展:提…

OPPO VPC 实践探索

01 概述 一年前(20年6月),OPPO云网络技术底座开始支持VPC方案,解决了用户担心的云上安全和虚拟实例的性能问题。我们称这个版本为VPC1.0,其采用了先进的智能网卡加速和VXLAN隧道隔离技术,实现了VPC从无到有的突破。 然而由于业务快…

FreeRtos入门-3 信号量(计数值、二进制、互斥量、递归锁)

信号量 计数量 二进制 互斥量 递归锁 创建 xSemCalc xSemaphoreCreateCounting(10, 0);//计数最大值10,初始值0 xSemUart xSemaphoreCreateBinary(); xSemUART xSemaphoreCreateMutex(); xSemUART xSemaphoreCreateRecursiveMutex(); 释放 xSemaphore…

mysql 判断一张表是否存在的方法

查询表是否存在 使用 SHOW TABLES SHOW TABLES LIKE %tbl_tabl%;结果: 查询 INFORMATION_SCHEMA // like 匹配 SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA test AND TABLE_NAME like %tbl%; // 完全匹配 SELECT TABLE_NAME FROM INFORMATION_SC…

JVM基础二——类的生命周期

加载阶段 : 连接阶段: 初始化阶段: 总结:

C++ | Leetcode C++题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {int m s.size();int n p.size();auto matches [&](int i, int j) {if (i 0) {return false;}if (p[j - 1] .) {return true;}return s[i - 1] p[j - 1];};vector<…

计算机网络——数据链路层(流量传输与可靠传输机制)

计算机网络——数据链路层&#xff08;流量传输与可靠传输机制&#xff09; 流量传输与可靠传输机制流量控制可靠传输机制 停止-等待协议无差错情况接收并检测到差错状态确认丢失或迟到状态 停等协议的效率分析后退N帧协议&#xff08;Go-Back-N&#xff0c;简称GBN&#xff09…

KnowLog:基于知识增强的日志预训练语言模型|顶会ICSE 2024论文

徐波 东华大学副教授 东华大学计算机学院信息技术系副系主任&#xff0c;复旦大学知识工场实验室副主任&#xff0c;智能运维方向负责人。入选“上海市青年科技英才扬帆计划”。研究成果发表在IJCAI、ICDE、ICSE、ISSRE、ICWS、CIKM、COLING等国际会议上&#xff0c;曾获中国数…

Linux 内核优化简笔 - 高并发的系统

简介 Linux 服务器在高并发场景下&#xff0c;默认的内核参数无法利用现有硬件&#xff0c;造成软件崩溃、卡顿、性能瓶颈。 当然&#xff0c;修改参数只是让Linux更好软件的去利用已有的硬件资源&#xff0c;如果硬件资源不够也无法解决问题的。而且当硬件资源不足的时候&am…

小红的平滑值插值【牛客周赛38】

题目描述&#xff1a; 小红定义一个数组的“平滑值”为&#xff1a;相邻两数差的绝对值的最大值。 具体的&#xff0c;数组a的平滑值定义为 现在小红拿到了一个数组。她每次操作可以在两个元素之间添加一个整数&#xff08;不能添加在第一项前面或者最后一项后面&#xff09;。…

鸿蒙开发第一课-工具与HelloWorld

武汉数字人才实训基地 一、初始HarmonyOS以及DevEco Studio 2023年8月4日&#xff0c;HarmonyOS 4.0操作系统正式发布。华为鸿蒙Next&#xff08;HarmonyOS Next&#xff09;操作系统开发者预览版(Developer Preview)发布。超过7亿台设备搭载了HarmonyOS 系统 2024年&#xf…

时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测

时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测 目录 时序预测 | Matlab基于CFBP级联前向BP神经网络时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab基于CFBP级联前向BP神经网络时序预测&#xff08;完整源码和数据)&#xff1b; 2.数据集为excel…

提灯定损的建模-UMLChina建模知识竞赛第5赛季第9轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题&#xff0c;即可获得本轮优胜。 如果有第4题&#xff0c;第4题为附加题&am…

阿里 对象存储OSS 云存储服务

1.简介 对象存储服务(Object Storage Service ,OSS) 是一种 海量、安全、低成本、高可靠的云存储服务&#xff0c;适合存放任意类型的文件。容量和处理能力弹性扩展&#xff0c;多种存储类型供选择&#xff0c;全面优化存储成本。 2.如何使用。参考文档 看文档&#xff0c;说的…

LeNet卷积神经网络

文章目录 简介conv2d网络层的结构 简介 它是最早发布的卷积神经网络之一 conv2d 这个卷积成的参数先进行介绍一下&#xff1a; self.conv1 nn.Conv2d(in_channels3, out_channels10, kernel_size3, stride1, padding1)先看一下in_channels 输入的通道数&#xff0c;out_cha…

Kotlin学习日志(一)TextView、Button、Toast的使用(1)

android:layout_width“wrap_content” android:layout_height“wrap_content”/> import kotlinx.android.synthetic.main.activity_main.* 这句话的意思是引进Kotlin的的控件变量自动映射功能&#xff0c;接下来只要是这个activity_main.xml文件中的控件&#xff0c;我…

Xshell Plus 详细安装教程以及附带使用图文教程

一、下载 Xshell Plus 6 完成后&#xff0c;请按照下面教程操作 1、下载 Xshell Plus 6 完成后&#xff0c;并解压 zip 包: 2、进入解压后的文件夹后&#xff0c;如果你之前安装了 Xshell&#xff0c; 先点击 !卸载.bat 卸载 xshell&#xff0c; 然后再点击 !绿化.bat; 如果是…

Pygame基础10-物理模拟

PyMunk PyMunk是一个模拟物理的库。 注意&#xff0c;PyMunk只是进行物理模拟&#xff0c;不包含可视化的功能。如果需要可视化&#xff0c;可使用pygame等库。 可用pip安装pymunk pip install pymunk pymunk中的概念&#xff1a; space&#xff1a; 物理空间。 包含gravity 模…