ICMP报文:
8位类型+8位代码+16位检验和+选项内容
类型为0,代码为0,是ping程序应答
类型为8,代码为0,是ping程序请求
类型为5,代码0:对网络重定向,代码1:对主机重定向,代码2:对服务类型和网络重定向,代码3:对服务类型和主机重定向
类型为13,代码0,是时间戳请求
类型为14,代码0,是时间戳应答
类型为17,代码0,是地址掩码请求
类型为18,代码0,是地址掩码应答
类型为11,代码为0,是传输期间生存时间为0(TTL为0)
类型为11,代码为1,在数据报组装期间生存时间为0
类型为3,代码为0:网络不可达,代码为1:主机不可达,代码为2:协议不可达,代码为3:端口不可达,代码为4:需要设置切片但设置了不分片比特,代码为5:源站选路失败,代码为11:由于TOS,网络不可达,代码为12:由于TOS,主机不可达
ICMP的一个规则就是:ICMP差错报文必须包括生成该差错报文端数据报IP首部,还必须至少包括跟在该IP首部后面的前8个字节(比如UDP/TCP首部)
ICMP中UDP端口不可达的报文为ICMP首部(8字节)+产生差错报文端数据报IP首部(20字节)+UDP首部(8字节)
ICMP重定向报文格式:类型5(1字节)+代码0~3(1字节)+检验和(2字节)+应该使用的路由器IP地址(4字节)+IP首部(包括选项)+原始IP数据报中的数据报8字节
重定向报文只由路由器生成,是使用于主机上
ICMP重定向报文的接收者必须查看三个IP地址:(1)导致重定向的IP地址(返回重定向报文的IP首部中),
(2)发送重定向报文的路由器的IP地址(包含重定向信息的IP数据报的源地址),
(3)应该采用的路由器IP地址(在ICMP报文的4~7字节中)
ICMP不可达差错(需要分片,未设置分片)格式:
类型3(1字节)+代码4(1字节)+检验和(2字节)+未用全为0(2字节)+下一站路由的MTU(2字节)+IP首部(包括选项)+原始IP数据报中的数据报8字节
ICMP源站抑制差错格式:当系统处理报文的速度低于接收报文的速度
类型4(1字节)+代码0(1字节)+检验和(2字节)+未用全为0(4字节)+IP首部(包括选项)+原始IP数据报中的数据报8字节