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

ICMP 初步理解

ICMP 初步理解

在这篇文章中,我主要想理清楚下述问题:

  • 什么是ICMP协议?
  • 它是为了解决什么问题?应对什么场景?
  • 具体应用在哪里?
  • ICMP优缺点。
  • ICMP在网络安全层面有什么攻击与防御?

定义与产生

ICMP(Internet Control Message Protocol)是:

  • 互联网控制消息协议
  • 是TCP/IP协议族中的一种网络层协议

在IP通信中,经常会存在有数据包到达不了对方的情况。产生这中情况的原因可能是:

  • 通信途中的某个路由器无法对数据包处理而丢弃。
  • 到达对方,但是端口不匹配而失效。

到达不了,又没有信息反馈的话,就难以构建通信链路。所以为了解决在通信中缺乏错误报告和反馈机制的问题,就此设计了ICMP协议。

ICMP的设计目的:

  • 提供关于通信环境问题的反馈
  • 提供数据处理过程中出现的错误

消息类型

ICMP报文主要分为差错报告报文 (Error Reporting)查询/信息报文 (Query/Informational)

差错与控制消息

这些消息通常由网关(路由器)或目标主机在处理数据包出错时产生,用于告诉源主机“发生了什么问题”。

Type (类型) English Name (英文名称) Chinese Name (中文名称) 产生场景与详细说明
3 Destination Unreachable 目的不可达 场景: 数据包无法成功交付给目的地。这是最复杂的类型,需结合 Code (代码) 细分场景:
Code 0 (Net Unreachable): 网关找不到目标网络的路由路径。
Code 1 (Host Unreachable): 网关能到网络,但无法解析目标主机的物理地址(如ARP失败)。
Code 2 (Protocol Unreachable): 目标主机收到数据包,但其 IP 层发现上层协议(如 TCP/UDP)未激活或不支持。
Code 3 (Port Unreachable): 目标主机收到数据包,但对应的端口没有进程在监听(常用于 UDP 端口扫描判定)。
Code 4 (Fragmentation Needed): 数据包大于链路 MTU,且 IP 头设置了“不分片(DF)”位,网关被迫丢弃并报错(用于 PMTU 发现)。
Code 5 (Source Route Failed): 源路由选项处理失败。
4 Source Quench 源抑制 场景: 网关或目标主机的缓冲区已满(拥塞),无法处理到达的数据包。
• 这是一个流量控制机制,要求源主机降低发送速率。
注:在现代网络中已很少使用,因为 TCP 本身有更高效的拥塞控制。
5 Redirect 重定向 场景: 网关发现源主机选择的路由不是最优路径,且有更好的下一跳网关在同一局域网内。 • Code 0: 对整个网络的重定向。
Code 1: 对特定主机的重定向。
Code 2/3: 基于服务类型 (TOS) 的重定向。
作用: 帮助主机自动更新路由表,优化传输路径。
11 Time Exceeded 超时 场景: 数据包生命周期结束或重组失败。
Code 0 (TTL Exceeded): 数据包在传输过程中 TTL(生存时间)减为 0。通常意味着发生了路由环路,或者用于 Traceroute 探测路径。 • Code 1 (Reassembly Time Exceeded): 目标主机在进行 IP 分片重组时,未在规定时间内收齐所有分片,丢弃已收到的分片并报错。
12 Parameter Problem 参数问题 场景: 网关或主机在处理 IP 数据包头部时,发现存在语义错误或非法参数,导致无法继续处理。
Code 0: 指针指向错误的字节位置。

查询与诊断消息

这些消息通常成对出现(请求与应答),用于网络探测。

Type (类型) English Name (英文名称) Chinese Name (中文名称) 产生场景与详细说明
8 Echo 回显请求 场景: 主动向目标发送探测包,用于检查连通性(即 Ping 命令的发送包)。
0 Echo Reply 回显应答 场景: 目标主机收到 Type 8 的请求后,将数据原样返回(即 Ping 命令收到的回复)。
13 Timestamp 时间戳请求 场景: 请求目标主机返回当前的时间戳,用于时间同步或测量网络延迟。
14 Timestamp Reply 时间戳应答 场景: 对 Type 13 的回复,包含接收时间戳和发送时间戳。

其他消息

Type (类型) English Name (英文名称) Chinese Name (中文名称) 产生场景与详细说明
15 Information Request 信息请求 场景: 主机启动时想知道自己所在的网络号(在 RARP/DHCP 普及前用于自举)。
16 Information Reply 信息应答 场景: 对 Type 15 的回复。

具体应用

虽然 ICMP 是一个底层控制协议,但它是许多网络诊断和管理工具的基础:

  • Ping 工具: 利用 Echo (Type 8)Echo Reply (Type 0) 消息。通过发送 Echo 请求并等待回复,用户可以验证目标主机的可达性以及往返时间(RTT)。
  • Traceroute (路由追踪): Traceroute工具的核心实现原理是:利用IP包头中的TTL字段和ICMP的 Time Exceeded (Type 11) 消息。Traceroute 通过发送 TTL 值递增(1, 2, 3...)的数据包,让沿途的每一个网关在丢弃数据包时返回 Time Exceeded 消息,从而描绘出到达目标的路径。
  • 路径 MTU 发现 (Path MTU Discovery): 利用 Destination Unreachable (Type 3, Code 4) 即“需要分片但设置了 DF 位”。这允许主机确定路径上允许的最大数据包大小,避免分片带来的性能损耗。
  • 动态路由更新: 主机利用 Redirect (Type 5) 消息来动态更新其路由表,确何使用最佳网关发送数据。

ICMP 协议的优缺点

优点

  • 网络诊断能力:提供了 Ping 和 Traceroute 等工具的基础,使网络管理员能够快速定位连接故障。
  • 错误反馈:填补了 IP 协议“尽力而为”传输中的信息真空,告知源主机数据丢失的原因(如端口不可达、TTL 耗尽)。
  • 路由效率:通过 Redirect 消息,帮助主机自动发现更优的下一跳网关,减少网络跳数。
  • 流量控制:通过 Source Quench 消息提供了一种基本的拥塞控制反馈机制。

缺点

  • 不可靠性:ICMP 本身也是基于 IP 传输的,因此它不保证控制消息一定能送达。为了避免无限循环,对于 ICMP 差错报文本身产生的错误,不会再发送 ICMP 报文。
  • 开销问题:在网络极度拥塞时,网关产生大量的 Source Quench 消息可能会进一步加剧网络拥堵(虽然其目的是为了减少拥堵)。
  • 安全隐患:ICMP 的控制特性容易被恶意利用

安全层面

ICMP协议在安全领域,常被用于侦察和攻击。

潜在攻击 (基于协议特性的分析)

  1. ICMP 洪水攻击 (ICMP Flood / Ping Flood)
    • 原理:攻击者发送大量的 Echo Request (Type 8),迫使目标主机消耗 CPU 和带宽去处理并发送 Echo Reply,导致拒绝服务 (DoS)。
    • 大白话:一个讨厌鬼,用100个大喇叭对着你家窗户,一刻不停地喊“喂!喂!喂!”。你和你家人就得不停探出头来回应“哎!哎!哎!”,结果正事全干不了,耳朵也被吵聋了。
  2. 网络侦察与扫描 (Reconnaissance)
    • 原理:攻击者发送 Echo Request (Ping Sweep) 探测存活主机。利用 Destination Unreachable (Type 3) 的不同 Code (如端口不可达) 来探测开放的 UDP 端口或识别操作系统指纹。
    • 大白话:小偷想踩点,他会挨家挨户敲门(Ping扫射),有人应答(主机存活)的他就记下来。他甚至会试试你家的后门、窗户(不同端口),看哪个没关严。
  3. ICMP 重定向攻击 (ICMP Redirect Attack)
    • 原理:攻击者伪装成网关发送 Redirect (Type 5) 消息,欺骗受害主机修改路由表,将流量发送到攻击者的机器,从而实施中间人攻击 (MITM) 或导致断网。
    • 大白话:你开车去商场,路上有个假交警拦住你说:“前面堵死了,我告诉你一条更快的路”,结果把你指到了他的黑店里。
  4. ICMP 隧道 (ICMP Tunneling)
    • 原理:RFC 提到 Echo 消息中的数据必须在 Reply 中返回。攻击者可以将恶意数据或命令隐藏在 Echo Request 的数据载荷中,穿透防火墙进行隐蔽通信。
    • 大白话:你们公司规定上班不准传纸条。但你和同事约定好,把想说的话写在“每日健康打卡表”(看似合规的ICMP Echo包)的备注栏里,检查的人只看表格是否提交,不细看备注,你们的“秘密通信”就成功了。

防御措施

  1. 防火墙过滤
    • 在网络边界(防火墙)上仅允许必要的 ICMP 类型通过(如允许出站 Ping 的 Reply,但拦截入站的 Echo Request)。
    • 拦截高风险类型:通常建议在边界拦截 Redirect (Type 5)Timestamp (Type 13/14)Information Request (Type 15/16),因为这些在现代网络中很少用于合法用途且存在侦察风险。
  2. 速率限制 (Rate Limiting)
    • 配置网络设备对 ICMP 报文进行速率限制,防止 ICMP 洪水攻击消耗全部带宽。
  3. 主机加固
    • 操作系统通常允许配置忽略 ICMP Redirect 消息(防止路由表被篡改)。
    • 配置服务器不响应广播地址的 ICMP 请求(防止 Smurf 攻击)。

总结

ICMP协议是一个网络层协议,是为了在通信中提供反馈。ICMP报文类型也主要分为两种:查询报文和差错报文。总的来说,ICMP是一个重要的网络运维工具,当网络出问题时用以排查,同时这个工具也可能被滥用,进行刺探与攻击等行为。

理解不深入且可能有误,提供些我参考的文章:

  • ICMP协议
  • 完全理解icmp协议
  • ICMP 协议 | 菜鸟教程
http://www.jsqmd.com/news/342339/

相关文章:

  • docker部署vaultwarden+Caddy+FRP(TCP)+CF tunnel(HTTP)的记录
  • 传统礼簿收礼小工具:记了么,解决纸质收礼记账痛点
  • 海外短剧新引擎,JAVA源码一键出海
  • 【毕业设计】基于nodejs的计算机c语音自学交流平台(源码+文档+远程调试,全bao定制等)
  • 二次元影像测量仪厂家哪家口碑好?认准基恩士 IM-X 系列 - 速递信息
  • JAVA代泊车系统,接机送机一键无忧
  • PHP计算机毕设之基于php+vue的篮球馆智慧管理系统篮球球衣周边销售管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • PHP毕设选题推荐:基于php+vue的篮球馆智慧管理系统场地信息管理、预约【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 纳滤膜哪个厂家好?国产品牌排行靠前的是谁?膜通量和截留率达标吗? - 品牌推荐大师
  • Nodejs计算机毕设之基于nodejs+vue知识交流平台的实现与设计基于nodejs的计算机c语音自学交流平台(完整前后端代码+说明文档+LW,调试定制等)
  • 完整教程:物联网卡为什么要支持双栈
  • 【计算机毕业设计案例】基于nodejs的计算机c语音自学交流平台基于nodejs+vue知识交流平台的实现与设计(程序+文档+讲解+定制)
  • 千问模型接入指南
  • 计算机PHP毕设实战-基于php+vue的篮球馆智慧管理运营系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 2026年抗衰老美容仪器优质推荐榜:可俪塑腰腹塑形减肥仪器/丽可缇去皱紧致美容设备/丽可缇抗衰老美容仪器/丽可缇法令纹改善美容设备/选择指南 - 优质品牌商家
  • OpenClaw Cron 深度解读:让 AI Agent 学会自主定时工作
  • 【课程设计/毕业设计】基于php的篮球馆球衣管理系统场馆预定系统【附源码、数据库、万字文档】
  • HTTP 服务器项目学习笔记 - 详解
  • 2026小额借贷平台哪家好?综合对比与选择建议 - 品牌排行榜
  • 从跟单到AI量化:交易所开发者的“财富密码“藏在哪些技术细节里?
  • Blender 本地渲染还是云渲染农场?优缺点对比与效率提升方案解析
  • 2026年2月敏感肌护肤品终极测评:反复泛红、停用复发?4大核心品牌精准破局 - 速递信息
  • 21.Android系统源码-libxml2 技术全景 - W3C 标准 XML 解析引擎完整解析
  • 创业初期,用 XinServer 节省了大量开发成本
  • 基于单片机智能温控流水灯
  • 基于51单片机的手持式激光+测距仪设计与实现
  • 导师推荐9个降AI率网站,千笔帮你轻松应对降AIGC难题
  • 2026电饭煲什么牌子的好用质量好?口碑之选推荐 - 品牌排行榜
  • 22.Android系统源码-HarfBuzz 实战 - 复杂文本整形引擎核心技术
  • > 基于大数据技术的医辽数据分析与研究-(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码spark+djanpython3.8+spark+django+spider+