1.ICMP报文类型
ICMP报文有两大类:差错报告报文和查询报文。差错报告报文反映了IP数据报在处理时产生的错误信息;查询报文要成对使用,反映从一个主机或路由器得到的特定的信息。例如:主机能检测到在其网络上一些路由器的情况,而一些路由器能帮助一个结点改变报文的路由。表5-8给出各种类型的ICMP报文。
表5-8 ICMP报文的类型
2.ICMP报文的格式
ICMP报文包括8B的报头和长度可变的数据部分。对不同的报文类型,其报头的格式一般都不相同,但前3个字段对所有的ICMP报文都一样。图5-14给出ICMP报文格式。
图5-14 ICMP报文的格式
第1字段:类型(Type)字段,长度是1B,用于定义报文类型。
第2字段:代码(Code)字段,长度是1B,表示发送这个特定报文类型的原因。
第3字段:校验和(Checksum)字段,长度是2B,用于数据报传输过程中的差错控制。ICMP的校验和计算与IP报头的校验和类似,都是采用反码算术运算。
第4字段:报头的其余部分,其内容因不同报文类型而不同。如标识了“Unused”,则此字段必须为0,保留为以后使用。(www.xing528.com)
第5字段:数据字段,其内容因不同报文类型而不同,提供了ICMP差错和状态报告信息。根据RFC1812的规定,对于差错报告报文类型,数据字段必须同时包括ICMP差错信息和触发ICMP的整个原始数据报,其长度不能超过576B。在RFC792中,允许数据字段仅包括ICMP差错信息、原始数据报的IP报头以及前8B的数据,因为数据的前8字节提供关于端口号(UDP和TCP)和序号(TCP)的信息。
ICMP报文以IP数据报形式传送,报文本身被封装在IP数据报的数据区中,对于携带ICMP报文的IP数据报,其报头主要设置如下:
Version:值为4,表示是IPv4的版本。
IHL:参考IP数据报格式。
Service Type:通常TOS的值都设为0。
Total Length、Identification、Flags、Fragment Offset:参考IP数据报格式。
TTL:参考IP数据报格式,通常由路由器预先设定一恰当初值。
Protocol:值为1,表示是ICMP报文。
Header Checksum:参考IP数据报格式。
Source Address:发现错误的主机或路由器的IP地址。
Destination Address:接收ICMP报文的主机或路由器的IP地址。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。