目录
一、报文结构
二、各种ICMP报文类型
2.1 查询报文
2.1.1 回显请求和应答
2.1.2 时间戳请求和应答
2.1.3 信息请求和应答
2.1.4 地址掩码和应答
2.2 差错报文
2.2.1 目的不可达
2.2.2 冷却报文
2.2.3 重定向
2.2.4 超时
2.2.5 参数错误
一、报文结构
ICMP(网络控制管理协议)报文是封装在IP报文内部传输的,也就是ICMP报文是IP报文的数据部分。
下图为ICMP报文格式:
其中 8位类型,有15种不同类型,部分协议还可以复用8位代码来扩展类型。
二、各种ICMP报文类型
可以总的将ICMP报文分为查询报文和差错报文。
2.1 查询报文
2.1.1 回显请求和应答
Ping就是用这种报文进行查询和回应。Type(8)是请求回显报文(Echo);Type(0)是回显应答报文(Echo Reply)。
2.1.2 时间戳请求和应答
时间戳报文是用来记录收发以及传输时间的报文。Originate Timestamp记录的是发送方发送报文的时刻;Receive Timestamp记录的是接收方收到报文的时刻;Transmit Timestamp表示回显这最后发送报文的时刻。Type(13) 是请求报文,Type(14)是应答报文
2.1.3 信息请求和应答
这种报文是用来找出一个主机所在的网络个数(一个主机可能会在多个网络中)。报文的IP消息头的目的地址会填为全0,表示this,源地址会填为源IP所在的网络IP。
2.1.4 地址掩码和应答
ICMP地址掩码请求用于无盘系统在引导过程中获取自己的子网掩码。
2.2 差错报文
2.2.1 目的不可达
目的不可达(type 为 3), code 不同代表不同的原因。
2.2.2 冷却报文
路由器在处理报文时会有一个缓存队列。如果超过最大缓存队列,将无法处理,从而丢弃报文。并向源发送方发一个ICMP源冷却报文(Type为4)
2.2.3 重定向
重定向报文(Type为5)给源发送方
2.2.4 超时
超时报文(Type为11),Code为0,表示传输过程中超时了。
一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。
2.2.5 参数错误
参数错误(type为12) IP首部错误code为0,缺少必须的选项code为1.