🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
《C语言》 | 本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
《网络协议》 | 本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
《docker容器精解篇》 | 全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
《linux系列》 | 本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
《python 系列》 | 本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
《试题库》 | 本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
⛳️ 推荐
专栏介绍
ICMP协议详解
什么是ICMP?
ICMP的主要作用
ICMP的工作原理
ICMP典型应用
ICMP报文格式
常见ICMP消息类型
ICMP的安全问题
ICMP安全防御措施
基础防御措施
高级防御措施
ICMP协议重要性
实际应用示例
ICMP协议详解
什么是ICMP?
ICMP(Internet Control Message Protocol),即因特网控制报文协议,是TCP/IP协议族的网络层协议,用于在IP主机与路由器之间传递控制信息。ICMP实际上是IP的一个组成部分,必须由每个IP模块实现,而不是一个更高级别的协议。
ICMP的主要作用
- 在主机与路由器之间传递控制信息
- 报告错误、交换受限控制和状态信息
- 实现网络可达性检测(如ping命令)
- 实现路径追踪(如traceroute命令)
- 用于网络诊断和故障排查
ICMP的工作原理
ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。
ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。
ICMP典型应用
Ping命令:使用ICMP回显请求(Type=8)和回显应答(Type=0)报文
- 检测远程主机是否可达
- 测量网络延迟
Tracert/Traceroute命令:基于ICMP TTL超时报文
- 显示数据包到达目的主机所经过的路径
- 用于网络故障诊断
ICMP报文格式
ICMP报文包含在IP数据报中,一个ICMP报文包括:
- IP头部(Protocol值为1)
- ICMP头部(包含Type、Code、Checksum)
- ICMP报文数据
ICMP头部包含:
- 类型(Type):8位,说明ICMP报文的作用及格式
- 代码(Code):8位,详细说明某种ICMP报文的类型
- 校验和(Checksum):16位,用于数据完整性验证
常见ICMP消息类型
| 类型 | 代码 | 说明 | 应用场景 |
|---|---|---|---|
| 0 | 0 | 回显应答 | Ping命令响应 |
| 8 | 0 | 回显请求 | Ping命令请求 |
| 3 | 0 | 网络不可到达 | 目标网络不可达 |
| 3 | 1 | 主机不可到达 | 目标主机不可达 |
| 3 | 3 | 端口不可到达 | 目标端口不可达 |
| 4 | 0 | 源抑制 | 流量控制,要求发送方减缓发送速率 |
| 11 | 0 | TTL超时 | Traceroute命令 |
| 12 | 0 | 参数问题 | IP报文参数错误 |
ICMP的安全问题
ICMP Flood攻击:攻击者短时间内向目标设备发送大量ICMP请求报文,使目标设备忙于回复,造成系统负担过重
- 1999年海信集团防火墙测试中,ICMP攻击占比达90%以上
Ping of Death(死亡之Ping):发送超过64KB的ICMP数据包,导致目标系统内存分配错误,崩溃
ICMP Redirect攻击:伪造ICMP重定向报文,修改路由表,导致数据被重定向到攻击者控制的路径
ICMP Time Exceeded攻击:利用TTL超时报文进行网络探测
ICMP安全防御措施
基础防御措施
配置ICMP泛洪攻击防范:
system-view anti-attack icmp-flood enable anti-attack icmp-flood car cir 155000000 # 限制ICMP报文接收速率去使能不必要的ICMP报文接收:
undo icmp all receive # 不接收任何ICMP报文 undo icmp name host-unreachable receive # 不接收主机不可达报文限制ICMP报文类型:
undo icmp type 3 code 1 receive # 不接收目标不可到达类型3代码1的报文
高级防御措施
防火墙过滤:设置防火墙规则,只允许必要的ICMP报文通过,阻止恶意ICMP报文
IDS/IPS部署:部署入侵检测系统或入侵预防系统,监控网络中的ICMP流量
配置ICMP属性(华为设备示例):
icmp-reply fast:使能ping快回功能icmp ttl-exceeded drop:丢弃TTL=1的ICMP报文icmp with-options drop:丢弃带IP选项的ICMP报文
修改系统配置:限制ICMP数据包最大尺寸,防范Ping of Death攻击
ICMP协议重要性
ICMP是网络通信中不可或缺的协议,它对于网络安全具有极其重要的意义。在1999年8月海信集团"悬赏"50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!这充分说明了ICMP协议在网络安全中的重要地位。
实际应用示例
Ping命令示例:
<DeviceA> ping 1.1.2.2 Ping 1.1.2.2 (1.1.2.2): 56 data bytes, press CTRL_C to break 56 bytes from 1.1.2.2: icmp_seq=0 ttl=254 time=2.137 ms 56 bytes from 1.1.2.2: icmp_seq=1 ttl=254 time=2.051 ms ...Tracert命令原理:
- 源端发送TTL=1的IP数据包
- 第一跳设备返回TTL超时ICMP报文
- 源端发送TTL=2的IP数据包
- 第二跳设备返回TTL超时ICMP报文
- 重复以上过程,直到到达目的端,返回端口不可达报文
通过ICMP协议,网络管理员可以有效地诊断网络问题,确保网络的正常运行。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙