网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

互联网控制消息协议(ICMP)

更新时间:2026年03月27日   作者:spoto   标签(Tag):

互联网控制消息协议(ICMP)是一种网络层协议,被各种网络设备如路由器、网关和主机广泛使用,用于发送错误信息和操作相关的信息。由于互联网协议本身并没有内置的错误报告或纠正机制,因此ICMP作为IP协议套件中的辅助协议,能够帮助报告错误并发送诊断信息。它主要用于以下目的:

  • 错误报告当数据包由于无法到达目标地址、超时或数据破碎等问题而无法到达目的地时。
  • 操作型查询例如,像 ping 这样的工具中使用的回显请求和回复。

注意:如果没有ICMP协议,设备就无法向发送方报告传输失败、网络拥塞或路由错误等问题。这样一来,网络故障的排查就几乎变得不可能了。

ICMP的用途

错误报告

  • 如果消息无法传递,ICMP会向发送方报告这一失败情况。
  • 例如,如果某个数据包的大小超过了允许的范围,导致无法被转发,那么接收方就会丢弃该数据包,并向发送方发送一个ICMP错误消息。

网络诊断

  • Traceroute用于确定数据包在路由器之间传输时所经过的路径,从而最终到达目的地。
  • 该工具会发送回音请求和回音回复消息,以测量往返时间并测试连接性。

ICMP的工作原理

  • ICMP是一种无连接式的通信方式(与TCP不同),因此不需要进行握手过程。
  • 消息被封装在IP数据报中,其结构包括一个IP头部,接着是ICMP头部以及数据内容。
  • 当遇到诸如无法访问的主机、已过期的生存时间或路由问题等错误时,这些设备会发送ICMP数据包。

ICMP数据包格式

ICMP头部位于IPv4和IPv6数据包头部之后。在ICMP数据包的格式中,数据包的前32位包含了三个字段:

ICMPv4数据包格式
  • 类型(8位):数据包中的前8位用于标识消息的类型。这一信息有助于接收方网络了解所接收到的消息类型,从而知道该如何处理该消息。常见的消息类型包括以下几种:

类型0 – 回声回复
类型3 – 无法到达的目的地
类型5 – 重定向消息
类型8 – 回声请求
类型11——时间已耗尽
类型12——参数问题

  • 代码(8位):“Code”字段是ICMP数据包格式中的接下来的8位数据。这个字段包含了关于错误信息和错误类型的额外信息。
  • 校验和(16位):最后16位用于ICMP数据包头中的校验和字段。校验和该工具用于检查完整消息的位数,从而确保ICMP工具能够成功传输完整的数据。
  • ICMP报头的接下来的32位是一个扩展头,它的作用就是指出IP消息中的问题所在。这些字节的位置是通过指针来确定的,这样,发送问题信息的设备以及接收问题的设备都可以根据指针找到问题所在的位置。
  • ICMP数据包的最后一部分是数据或负载部分,其长度可以是不同的。在IPv4协议中,这部分数据的长度为576字节;而在IPv6协议中,其长度为1280字节。

DDoS攻击中的ICMP机制

In 分布式DOS攻击攻击者会向目标系统发送大量的额外流量,从而使得目标系统无法继续为用户提供服务。攻击者实施这些攻击的方式有很多,下面将会详细介绍这些方法。

“Ping of Death攻击”

  • 每当攻击者发送的ping数据包的大小超过允许的最大尺寸时,这些过大的数据包就会被分割成更小的部分。
  • 当发送者重新组装它时,其尺寸超出了规定的限制,这就导致了问题。缓冲区溢出这样一来,机器就会停止运转了。
  • 这简单地被称为“……”。“死亡之击”攻击较新的设备具有抵御这种攻击的能力,而较旧的设备则没有这种保护功能。

2. ICMP洪水攻击

  • 每当发送方发送的ping次数过多时,目标设备就无法处理这些回传请求了。
  • 这种攻击方式被称为……ICMP洪水攻击这种攻击也被称为“ping洪水攻击”。
  • 它会占用目标计算机的资源,从而导致目标计算机出现服务中断的情况。

3. 蓝洞攻击

  • “Smurf攻击”是一种攻击方式,攻击者会发送带有伪造源IP地址的ICMP数据包来进行攻击。
  • 这类攻击通常针对的是较老的设备,比如“死亡之ping”攻击。

ICMP消息的类型

输入/打字代码/编码描述/说明
0 – 回声回复0回声回复
3 – 无法到达的目标0目标网络无法访问
1目标主机无法访问。
2目标协议无法访问。
3目标端口无法访问
4需要实现碎片化处理,同时设置DF标志。
5源路由失败
5. 重定向消息0将数据报重定向到网络中的其他位置。
1为该主机重定向数据报
2将数据报的传输方向调整为适合服务类型以及网络环境的模式。
3为服务和主机重定向数据报
8 – 回声请求0回声请求
9 – 路由器公告信息0用于查找正在运行的路由器的地址。
10 – 路由器请求0
11 – 时间已超出0在传输过程中,存活的时间超出了预期。
1碎片重组的时间超过了允许的范围。
12个参数的问题0指针指示了存在错误。
1缺少必需的选项
2糟糕的长度
13 – 时间戳0用于时间同步
14 – 时间戳回复0回复带有时间戳的消息

来源:Quench消息

  • “源端流量降低请求”是指一种要求降低发送到目标主机的消息的传输速率的请求。
  • 或者,当接收主机检测到发送给它的数据包传输速率过快时,它会向发送方发送“源中断”消息,以减缓数据传输的速度,从而避免任何数据包的丢失。
来源信息/消息内容
  • ICMP会从被丢弃的数据包中提取出源IP地址,然后通过发送“源中断”消息来通知源主机。这样,源主机就会降低传输速度,从而让路由器不再出现拥塞情况。
来源:Quench消息,但传输速度有所降低

注意:当拥塞路由器距离源节点较远时,ICMP会发送逐跳的源中断消息,这样每个路由器都会降低传输速度。

2. 参数问题

参数问题
  • 每当数据包到达路由器时,都需要检查计算出的头部校验和是否与接收到的头部校验和相等。只有在这种情况下,路由器才会接受该数据包。
  • 如果存在不匹配的情况,那么数据包将被路由器丢弃。
  • ICMP会从被丢弃的数据包中提取出源IP地址,然后通过发送一个“参数错误”的消息来通知源主机。

3. 时间已超出提示信息

时间已超出提示信息
  • 带有“时间已超出”主题的通知,通常是由路由器或网关生成的。
  • 为了完全理解这条ICMP消息的内容,你需要了解数据包中的IP头部结构。
  • 关于IP协议的结构,有详细的说明,这些内容都可以在我们为读者提供的相关章节中找到。

4. 无法到达的目的地

无法到达的目的地消息
  • 该目的地是无法到达的。这是由主机或其入站网关生成的消息,用来告知客户端:由于某种原因,该目的地无法被访问。
  • 无论网络中出现哪种类型的故障(如链路故障、硬件故障、端口故障等),只要目标主机发送了 ICMP 错误消息,路由器就一定会返回相应的错误信息。因此,不存在这样的必要条件,即只有路由器才会在目标主机发送 ICMP 错误消息时才会返回错误信息。

5. 重定向消息

  • 重定向请求时,数据包会被发送到另一条路径上。这条消息会通知主机更新其路由信息,使其能够将数据包发送到另一条路径上。
  • 例如:如果主机试图通过路由器R1来发送数据,而路由器R1又将数据转发到路由器R2上,那么从主机到R2之间应该存在直接的连接路径。
  • 然后,R1会发送一个重定向消息,告知主机:通过R2可以直接到达目的地。之后,主机会将数据包直接发送到R2。
重定向消息
  • 路由器R2会将原始的数据包发送到预定的目的地。
  • 但是,如果数据报中包含路由信息的话,那么即使有更合适的路由可供选择,也不会发送这条消息。因为重定向消息应该由网关来发送,而不应由互联网上的主机来发送。
  • 每当数据包被错误地转发到错误的方向时,它会被重新定向到正确的方向。此时,ICMP会发送一条关于重定向的消息。

相关文章/帖子

ICMP(互联网控制消息协议)消息的类型.

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

上一篇: 网络拓扑结构的类型

下一篇: 漏桶算法

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料