🎬 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协议重要性

实际应用示例


img

ICMP协议详解

什么是ICMP?

ICMP(Internet Control Message Protocol),即因特网控制报文协议,是TCP/IP协议族的网络层协议,用于在IP主机与路由器之间传递控制信息。ICMP实际上是IP的一个组成部分,必须由每个IP模块实现,而不是一个更高级别的协议。

ICMP的主要作用

  • 在主机与路由器之间传递控制信息
  • 报告错误、交换受限控制和状态信息
  • 实现网络可达性检测(如ping命令)
  • 实现路径追踪(如traceroute命令)
  • 用于网络诊断和故障排查

ICMP的工作原理

ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据包。

ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。

ICMP典型应用

  1. Ping命令:使用ICMP回显请求(Type=8)和回显应答(Type=0)报文

    • 检测远程主机是否可达
    • 测量网络延迟
  2. 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的安全问题

  1. ICMP Flood攻击:攻击者短时间内向目标设备发送大量ICMP请求报文,使目标设备忙于回复,造成系统负担过重

    • 1999年海信集团防火墙测试中,ICMP攻击占比达90%以上
  2. Ping of Death(死亡之Ping):发送超过64KB的ICMP数据包,导致目标系统内存分配错误,崩溃

  3. ICMP Redirect攻击:伪造ICMP重定向报文,修改路由表,导致数据被重定向到攻击者控制的路径

  4. ICMP Time Exceeded攻击:利用TTL超时报文进行网络探测

ICMP安全防御措施

基础防御措施

  1. 配置ICMP泛洪攻击防范

    system-view
    anti-attack icmp-flood enable
    anti-attack icmp-flood car cir 155000000  # 限制ICMP报文接收速率
    
  2. 去使能不必要的ICMP报文接收

    undo icmp all receive  # 不接收任何ICMP报文
    undo icmp name host-unreachable receive  # 不接收主机不可达报文
    
  3. 限制ICMP报文类型

    undo icmp type 3 code 1 receive  # 不接收目标不可到达类型3代码1的报文
    

高级防御措施

  1. 防火墙过滤:设置防火墙规则,只允许必要的ICMP报文通过,阻止恶意ICMP报文

  2. IDS/IPS部署:部署入侵检测系统或入侵预防系统,监控网络中的ICMP流量

  3. 配置ICMP属性(华为设备示例):

    • icmp-reply fast:使能ping快回功能
    • icmp ttl-exceeded drop:丢弃TTL=1的ICMP报文
    • icmp with-options drop:丢弃带IP选项的ICMP报文
  4. 修改系统配置:限制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命令原理

  1. 源端发送TTL=1的IP数据包
  2. 第一跳设备返回TTL超时ICMP报文
  3. 源端发送TTL=2的IP数据包
  4. 第二跳设备返回TTL超时ICMP报文
  5. 重复以上过程,直到到达目的端,返回端口不可达报文

通过ICMP协议,网络管理员可以有效地诊断网络问题,确保网络的正常运行。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐