what
ICMP(Internet Control Message Protocol 因特网控制报文协议)是一个差错报告机制,是工作在网络层的TCP/IP协议簇中的一个重要子协议。主要用于在IP主机和路由器之间传递控制消息,于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。
why
在数据传输中IP协议负责将数据从源主机传输到目的主机,由于IP的不可靠性与无连接性,它并不对目的主机是否收到数据包进行验证,以此产生的错误在所难免。通过icmp协议当网络中数据包传输出现问题时,主机或设备就会向上层协议报告差错情况和提供有关异常情况的报告,使得上层协议能够通过自己的差错控制程序来判断通信是否正确,以进行流量控制和差错控制,从而保证服务质量。
how
当数据包传输时出现错误时,ICMP向数据包的源端设备报告这个差错。
因为ICMP报文被封装在IP数据包内部,其中并没有记录报文在网络传递中的全部路径,因此无法中途通知或判别哪个设备出错,更没有纠错能力,只能向源端发送差错报告,源端格局报文就能推断错误。
example:
ping命令通常用于测试主机之间的连通性。运行ping命令并指定目标主机的IP地址,系统会发送一个ICMP Echo请求消息到目标主机。如果目标主机正常响应,会发送一个ICMP Echo回应消息回来。实现网络故障排除、检测延迟和网络性能测试。
攻击利用
ICMP泛洪攻击
攻击者在短时间内向目标设备发送大量的ICMP虚假报文,导致目标设备忙于应付无用报文,而无法为用户提供正常服务
准备:kali(攻击)+win10(被攻击);网络设置为桥接模式
hping3 --icmp --rand-source --flood <被攻击主机IP>
hping 是 面向命令行的用于生成和解析TCP/IP协议数据包汇编/分析的开源工具
--rand-source
:指示hping3
使用随机的源IP地址发送数据包
结果就是win10虚拟机直接黑屏