(1)什么是ICMP协议?
ICMP(Internet Control Message Protocol)网际报文控制协议,是Internet协议族的核心协议之一,它主要用在网络计算机的操作系统中发送出错信息。例如:请求服务不可用,主机不可达。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。但是ICMP不是高层协议,而是IP层协议。
(2)学习ICMP的重要性?
ICMP协议因为其ping功能而著名,ping是用来检测一个设备主机的可连续性,我想大部分都可能用过ping命令的。但是ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器或者主机。例如,用户可以利用操作系统规定的ICMP数据包最大尺寸不超过64K这一规定,向主机发起ping OF Death(死亡之ping)攻击。这时候主机就会出现内存分配失败,导致主机崩溃,死机。此外,向主机长时间发送ICMP数据包,也会最终导致系统瘫痪,大量的ICMP数据包也会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理。
(3)ICMP首部格式
可以清晰的看到ICMP报文作为IP层数据报的数据,加上IP数据包的首部,组成IP数据报发送出去。上图是ICMP报文的格式
类型(Type): ICMP信息基于RFC规范的类型分类
代码(Code): ICMP信息基于RFC规范的子类型
检验和(CheckSum):用来保证ICMP数据的头部和数据部分的完整
数据部分:依赖于类型和代码域的部分
(4)ICMP的请求报文类型
(5)ICMP响应报文类型
(6)ICMP协议提供的诊断报文类型