什么是互联网控制消息协议(ICMP)?

互联网控制消息协议 (ICMP) 用于诊断互联网上的网络问题。

学习目标

阅读本文后,您将能够:

  • 定义ICMP
  • 描述ping和traceroute的工作原理
  • 了解 ICMP 协议如何用于 DDoS 攻击

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是互联网控制消息协议(ICMP)?

互联网控制消息协议 (ICMP) 是网络设备用来诊断网络通信问题的网络层协议。ICMP 主要用于确定数据是否及时到达其预期目的地。通常,ICMP 协议用于网络设备,例如路由器。ICMP 是进行错误报告和测试的关键,但它也可以用于分布式拒绝服务 (DDoS) 攻击

注册
任何 Cloudflare 计划均可提供安全性和速度

ICMP 的用途是什么?

ICMP 的主要目的是报告错误。当两个设备通过互联网连接时,ICMP 会生成错误以与发送设备共享,以防任何数据未到达其预期目的地。例如,如果数据对于路由器来说太大,路由器将丢弃该数据包并将 ICMP 消息发送回数据的原始源。

ICMP 协议的第二个用途是执行网络诊断;常用的终端实用程序 traceroute 和 ping 都使用 ICMP 运行。Traceroute 实用程序用于显示两个互联网设备之间的路由路径。路由路径是请求到达目的地之前必须经过的连接路由器的实际物理路径。一个路由器与另一个路由器之间的旅程称为“跃点”,跟踪路由还报告沿途每个跃点所需的时间。这对于确定网络延迟来源可能很有用。

ping 实用程序是 traceroute 的简化版本。ping 将测试两个设备之间的连接速度,并准确报告数据包到达其目的地并返回发送者设备所需的时间。尽管 ping 不提供有关路由或跃点的数据,但它仍然是衡量两个设备之间延迟的有用指标。ICMP 回显请求和回显回复消息通常用于执行 ping。

不幸的是,网络攻击可以利用这个过程,制造破坏手段,例如 ICMP 洪水攻击死亡之 ping 攻击。

白皮书
制定网络现代化战略

ICMP 如何运作?

互联网协议 (IP) 不同,ICMP 不与 TCPUDP 等传输层协议相关联。这使得 ICMP 成为无连接协议:一个设备在发送 ICMP 消息之前不需要打开与另一个设备的连接。正常的 IP 流量使用 TCP 发送,这意味着任何两个交换数据的设备都将首先执行 TCP 握手,以确保两个设备都准备好接收数据。ICMP 不会以这种方式打开连接。 ICMP 协议也不允许针对设备上的特定端口。

什么是 ICMP 数据包?

ICMP 数据包是使用 ICMP 协议的数据包。ICMP 数据包在正常的 IP 头之后包括一个 ICMP 头。当路由器或服务器需要发送错误信息时,ICMP 数据包主体或数据部分总是包含一份导致错误的数据包的 IP 头的副本。

在 DDoS 攻击中如何使用 ICMP?

ICMP 洪水攻击

ping 洪水攻击或 ICMP 洪水攻击是指攻击者试图用 ICMP 回显请求数据包淹没目标设备。目标必须处理和响应每个数据包,这会消耗其计算资源,最终导致合法用户无法接收服务。

ICMP 洪水攻击:

ICMP 洪水攻击,几个回显请求和回显回复

死亡之 Ping 攻击

死亡之 Ping 攻击是指攻击者向目标机器发送大于数据包最大允许大小的 ping,导致机器死机或崩溃。数据包在到达其目标的途中被分段,但当目标将数据包重新组装成其超出最大值的原始大小时,数据包的大小会导致缓冲区溢出。

如今,死亡之 Ping 攻击基本上已成过去。但是,较旧的网络设备仍然可能受到它的影响。

Smurf 攻击

Smurf 攻击中,攻击者发送带有欺骗性源 IP 地址的 ICMP 数据包。网络设备回复数据包,将回复发送到欺骗性 IP 并用多余的 ICMP 数据包淹没受害者。就像“死亡之 Ping”一样,如今的 Smurf 攻击只能针对旧设备。

ICMP 不是第 3 层 DDoS 攻击中使用的唯一网络层协议。例如,攻击者过去也使用过 GRE 数据包。

通常,网络层 DDoS 攻击针对网络设备和基础设施,而应用程序层 DDoS 攻击则针对 Web 资产。Cloudflare Magic Transit 是防御网络层 DDoS 攻击的一种方法。