1. ICMP 是啥?
ICMP,全称是 Internet Control Message Protocol,即互联网控制报文协议,所谓控制,就是通过下发指令来感知和控制网络环境,所以它一定是配合一个无法感知网络环境的协议来工作的,这个协议就是 IP(包括 IPv4 和 IPv6)。
所以,ICMP 通常被认为是 IP 协议的一部分,它封装在 IP 层中,使用 IP 协议进行传输。因此,严格来说,ICMP 既不是一个网络层协议,也不是一个传输层协议,而是介于两者之间的一个协议。
它的主要功能是传输网络诊断信息,信息主要包括两类:
一类是 查询类报文 :主要用于信息的查询和采集,比如采集传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等等。
另一类是 差错诊断类报文 :主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等等。
2. 为啥需要 ICMP?
我们都知道,IP 协议是一个不可靠协议,如果 IP 包在传输过程中出现错误,比如 checksum 对不上,拥塞,超时等等,那么 IP 包是会直接被丢弃的,之后也不会有进一步的努力来修正。
这是 IP 协议的一个设计准则决定的,也就是 best effort,尽力而为,这样的好处是让 IP 协议尽量保持简单的形态,只负责有效率的数据传输,而更多的质量控制交给高层的协议去处理(比如 TCP)。
但高层能提供质量控制的协议毕竟在少数,所以就需要在下层有协议来辅助 IP 完成必要的网络质量管理。ICMP 协议自然就被提出来了。
通过 ICMP 协议,当 IP 包发生错误的时候,上层发送 IP 包的主机或路由器并不知道下层发生了错误,这个时候,下层的主机或路由器就可以通过发送 ICMP 包,将错误信息汇报给上层,从而让上层的主机或路由器进行调整。
不过需要注意的是,ICMP 仅仅只能提供某些特定类型的错误信息汇报,并不能帮助 IP 协议成为可靠的协议。它能做的事还是有限,但用于基本的网络质量管理是足够了。
3. ICMP对
DDoS攻击有什么作用?
ICMP 可防止 DDoS 攻击和其他安全漏洞。但是,它有一些主要特性可以检测此类问题。但是,它对防止三种主要类型的DDoS 攻击特别有用。以下是对其中每一项的简要说明:
Ping of Death 攻击: Ping of death 是指攻击或病毒不断向网络发送大数据包。这可能会导致机器崩溃或死机,因为数据包的文件大小超过机器接受的大小。
Smurf 攻击: smurf 攻击是指欺骗性 IP 地址向特定网络发送大型 ICMP 数据包。然而,现代硬件几乎不可能进行这种攻击,因为它需要旧硬件。
ICMP 泛洪攻击: ICMP 泛洪攻击是在回声请求数据包的帮助下进行的,这将破坏具有 ICMP 数据包泛洪的设备。因此,导致它崩溃或网速极慢。
再一次,由于 ICMP 是用于错误报告和数据目的地的协议,它允许网络层防止这三种类型的 DDoS 攻击。此外,它还可用于通过识别攻击源来防止 DDoS 攻击。