网络知识之ICMP
ICMP协议
一、基础知识
1、基本概念
ICMP协议是因特网控制报文协议(Internet Control Message Protocol),属于网络层协议,是一种网络探测与回馈机制,主要用于网络探测、路由跟踪以及错误反馈,在IP主机和路由器之间传递控制消息。比如常见的ping命令就是基于ICMP协议来工作的。
2、工作原理
当数据包处理过程出现差错时,ICMP向数据包的源端设备报告这个差错,它既不会纠正这个差错,也不会通知中间的网络设备(因为ICMP报文被封装在IP数据包的内部的),当源端收到差错报告后,它虽然不能判断差错是由中间哪个网络设备所引起的,但是却可以根据ICMP报文确定发生错误的类型,并确定如何才能更好地重复传递失败的数据包。
3、封装格式
ICMP头用来表明是哪种探测或者反馈机制,ICMP数据是填充报文,实际意义不大,ICMP头中有三个字段:类型、代码和校验和。
- 类型:用来表明是哪种探测或者回馈类型。其中,8代表ping请求,0代表ping应答,3代表主机不可达,11代表TTL超时。
- 代码:代码字段表示ICMP类型细分的子类型,例:当ICMP报文的类型为3时,表示主机不可达,而主机不可达有很多种原因,代码字段就说明了主机不可达的原因类型。
- 校验和:表示ICMP报文的校验和。
4、应用
最常见的应用是Ping命令和Tracert命令。
(1)Ping命令
(2)Tracert程序:用来查看数据包从源端到目的端的路径信息,进行路由跟踪。(
二、相关攻击
1、 ICMP泛洪攻击
ICMP泛洪攻击的原理实际就是攻击者使用多个设备向目标服务器发送大量的ICMP回显请求包,目标服务器想每个请求的IP地址发送回显回复包(回显请求和回显回复是用于Ping网络设备的),导致正常的网络活动被中断。
2、 Ping of Death
Ping of Death是利用一些尺寸超大的ICMP报文对系统进行的一种攻击。由于ip数据包的最大长度为65535字节。而ICMP报头位于数据报头之后,并与ip数据包封装在一起,因此ICMP数据包最大尺寸不超过65535字节。利用这一规定,可以向主机发动 ping of death 攻击。ping of death 攻击 是通过在最后分段中,改变其正确的偏移量和段长度的组合,使系统在接收到全部分段并重组报文时总的长度超过了65535字节,导致内存溢出,这时主机就会出现内存分配错误而导致TCP/IP堆栈崩溃,从而导致死机。
3、ICMP重定向攻击
ICMP重定向是用来提示主机改变自己的主机路由从而使路由路径最优化的一种ICMP报文。当一个主机收到ICMP重定向信息时,它就会根据这个信息来 更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送 ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。