下图蓝绿色背景为常用报文类型
TYPE | CODE | Description | Query | Error |
---|---|---|---|---|
0 | 0 | Echo Reply——回显应答(Ping应答) | x | |
3 | 0 | Network Unreachable——网络不可达 | x | |
3 | 1 | Host Unreachable——主机不可达 | x | |
3 | 2 | Protocol Unreachable——协议不可达 | x | |
3 | 3 | Port Unreachable——端口不可达 | x | |
3 | 4 | Fragmentation needed but no frag. bit set——需要进行分片但设置不分片比特 | x | |
3 | 5 | Source routing failed——源站选路失败 | x | |
3 | 6 | Destination network unknown——目的网络未知 | x | |
3 | 7 | Destination host unknown——目的主机未知 | x | |
3 | 8 | Source host isolated (obsolete)——源主机被隔离(作废不用) | x | |
3 | 9 | Destination network administratively prohibited——目的网络被强制禁止 | x | |
3 | 10 | Destination host administratively prohibited——目的主机被强制禁止 | x | |
3 | 11 | Network unreachable for TOS——由于服务类型TOS,网络不可达 | x | |
3 | 12 | Host unreachable for TOS——由于服务类型TOS,主机不可达 | x | |
3 | 13 | Communication administratively prohibited by filtering——由于过滤,通信被强制禁止 | x | |
3 | 14 | Host precedence violation——主机越权 | x | |
3 | 15 | Precedence cutoff in effect——优先中止生效 | x | |
4 | 0 | Source quench——源端被关闭(基本流控制) | ||
5 | 0 | Redirect for network——对网络重定向 | ||
5 | 1 | Redirect for host——对主机重定向 | ||
5 | 2 | Redirect for TOS and network——对服务类型和网络重定向 | ||
5 | 3 | Redirect for TOS and host——对服务类型和主机重定向 | ||
8 | 0 | Echo request——回显请求(Ping请求) | x | |
9 | 0 | Router advertisement——路由器通告 | ||
10 | 0 | Route solicitation——路由器请求 | ||
11 | 0 | TTL equals 0 during transit——传输期间生存时间为0 | x | |
11 | 1 | TTL equals 0 during reassembly——在数据报组装期间生存时间为0 | x | |
12 | 0 | IP header bad (catchall error)——坏的IP首部(包括各种差错) | x | |
12 | 1 | Required options missing——缺少必需的选项 | x | |
13 | 0 | Timestamp request (obsolete)——时间戳请求(作废不用) | x | |
14 | Timestamp reply (obsolete)——时间戳应答(作废不用) | x | ||
15 | 0 | Information request (obsolete)——信息请求(作废不用) | x | |
16 | 0 | Information reply (obsolete)——信息应答(作废不用) | x | |
17 | 0 | Address mask request——地址掩码请求 | x | |
18 | 0 | Address mask reply——地址掩码应答 | x |
概述:
Internet控制信息协议(ICMP)是一个工作于网络层的简单的TCP/IP协议,IP协议也工作于这一层。IP协议的主要功能是使网络可以发送和连接数据包,而ICMP协议与之相比则功能有限,主要包括:
- 测试与远程主机的TCP/IP连接以确保他们处于活跃状态(用ping命令)
- 对路由器和其他主机发出简单的控制请求
- 从路由器和其他主机报告错误情况
实际上,ICMP协议通过为IP协议提供控制信息和错误报告来弥补IP协议的不足,ICMP在RFC 792和1700中定义。
体系结构:
ICMP信息封装在IP数据包中在网络上进行传输。ICMP数据包是面向无连接的,不提供传输保证。ICMP支持广播,但与TCP和UDP不同,它们都是工作于更高的Internet层上的,ICMP也不使用端口号。
ICMP信息的功能由它的信息头的前两个字节决定,通常的几种ICMP数据包类型有:
- 回复应答(ICMP类型0):ping命令用到该类型的数据包以测试TCP/IP连接;
- 目标不可达 (ICMP类型3):用以知识目标网络、主机或者端口不可达;
- 源站抑制 (ICMP类型4):当路由器处理IP数据的速度不够快时,会发送此类的消息。它的意思是让发送方降低发送数据的速率。Microsoft Windows NT或Windows 2000主机可以通过降低数据传输率来响应这种类型的消息;
- 重定向消息 (ICMP类型5):用于将主机重新定向到一个不同的网络路径,该消息告诉路由器对于该数据包可以忽略它内部的路由表项;
- 回复请求(ICMP类型8):ping命令用该类型的数据包测试TCP/IP连接;
- 路由器通告 (ICMP类型9):以随机的时间间隔发送该数据包以响应ICMP路由器请求数据包;
- 路由器请求 (ICMP类型10):路由器发送该数据包来请求路由器通告的更新;
- 超时 (ICMP类型11):指示数据包由于通过了太多的网段,其的生存时间(TTL)已经过期,Tracert命令用此消息来测试本地和远程主机之间的多个路由器;
- 参数问题 (ICMP类型12):用以指示处理IP数据包头时出错。
问题:
因为ICMP的广播特性,他很容易遭受到网络***的***,许多类型的拒绝服务(DoS)***就是基于ICMP的,包括Smurf***、TFN***、Loki***和WinFreeze***。例如,ICMP的重定向数据包会更该路由器的路由表,因此有时***就会发送伪造的ICMP重定向报文以扰乱路由器的正常工作,从而实现DoS***。一下的所有情况都发生时,路由器通常会发送ICMP重定向报文:
- 路由器被配置为发送ICMP重定向报文
- 路由器输入数据包的接口与输出路由器的接口相同
- 数据源子网的IP地址与下一网段的IP地址相同
- IP数据包不是由数据源发送的
参考文献: