概述
ICMP( Internet Control Message Protocol)互联网控制消息协议,它用于TCP/IP 网络中发送控制消息,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。通过这些信息,网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。攻击者也可以利用控制消息发送恶意数据包实现对主机的控制。
ICMP协议分析
ICMP报文信息被封装在IP数据包内部,作为IP数据包的数据部分通过互联网传递。当IP报头中的Protocol(协议)字段值为1时,说明是一个ICMP报文。ICMP报文包含三个固定字段。Type字段表示ICMP消息的类型;Code字段表示ICMP消息类型细分的子类型;Checksum字段表示ICMP报文的校验值,检验报文传输过程中是否出现差错。Data字段是可选的,包含与ICMP消息相关的附加信息,明文传输。其内容取决于ICMP消息的类型和代码。长度可以为0,也可以是任意长度。不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况,不同类型的ICMP报文又分为差错报文和查询报文两种,如下表所示。
Type | Code | 描述 | 查询/差错 |
---|---|---|---|
0-Echo响应 | 0 | Echo响应报文 | 查询 |
3-目的不可达 | 0 | 目标网络不可达报文 | 差错 |
1 | 目标主机不可达报文 | 差错 | |
2 | 目标协议不可达报文 | 差错 | |
3 | 目标端口不可达报文 | 差错 | |
4 | 要求分段并设置DF flag标志报文 | 差错 | |
5 | 源路由失败报文 | 差错 | |
6 | 未知的目标网络报文 | 差错 | |
7 | 未知的目标主机报文 | 差错 | |
8 | 源主机隔离报文 | 差错 |