很多网络协议中,都有不稳定的因素。这里我们所说的不稳定因素,就是其中包括一些不可靠的协议。但是,我们通常会使用其他协议来进行弥补。这里我们就讲述一下ICMP协议进行IP协议的差错控制。下面我们来详细说明一下。
ICMP协议概述
IP协议是一种不可靠的协议,无法进行差错控制。但IP协议可以借助其他协议来实现这一功能,如ICMP。
ICMP(Internet Control Messages Protocol, 网间控制报文协议)允许主机或路由器报告差错情况和提供有关异常情况的报告。
一般来说,ICMP报文提供针对网络层的错误诊断、拥塞控制、路径控制和查询服务四项大的功能。如,当一个分组无法到达目的站点或TTL超时后,路由器就会丢弃此分组,并向源站点返回一个目的站点不可到达的ICMP报文。
ICMP报文类型
1 ICMP报文类型
ICMP报文大体可以分为两种类型,即ICMP差错报文和ICMP协议询问报文。但细分又可分为很多类型,如表1所示。
表1 ICMP报文类型
#p#
2 ICMP回射请求和应答报文头部格式
ICMP报文被封装在IP数据报内部传输。如图1所示,是ICMP协议回射请求和应答报文头部格式。
图1 ICMP回射请求和应答报文头部格式
各种ICMP报文的前32bits都一样,它们是:
8bits类型和8bits代码字段:一起决定了ICMP报文的类型。常见的有:
类型8、代码0:回射请求。
类型0、代码0:回射应答。
类型11、代码0:超时。
16bits校验和字段:包括数据在内的整个ICMP协议数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。
对于ICMP回射请求和应答报文来说,接下来是16bits标识符字段:用于标识本ICMP进程。
最后是16bits序列号字段:用于判断回射应答数据报。
3 ICMP目标不可达报文
如图2所示,是ICMP目标不可达报文头部格式。
图2 ICMP目标不可达报文头部格式
其中代码字段的不同值又代表不同的含义,如,0代表网络不可达、1代表主机不可达等,见表1。
4 ICMP超时报文头部格式
如图3所示,是ICMP超时报文头部格式。
图3 ICMP超时报文头部格式
其中:
类型11+代码0:表示传输期间生存时间为0。
类型11+代码1:表示数据报组装期间生存时间为0。
由于篇幅有限,这里不再分析其他类型ICMP协议数据包的格式。