文档介绍:(ICMP)ICMP协议设计的最初目的主要是用于IP层的差错报告,由路由器或信宿以一对一的模式向信源报告传输错误的原因。随着网络的发展,检测和控制功能逐渐被引入到ICMP协议中,使得ICMP协议不仅用于传输差错报告,而且大量用于传输控制报文。ICMP与IP协议位于同一个层次(IP层),但ICMP报文是封装在IP数据报的数据部分进行传输的。ICMP协议是IP协议的补充,用于IP层的差错报告、拥塞控制、路径控制以及路由器或主机信息的获取。。首部为定长的8个字节,前4个字节是通用部分,后4个字节随报文类型的不同有所差异。ICMP报文的一般格式如图所示。ICMP报文虽然细分为很多类,但总的来看可以分为如图所示的三大类:差错报告、控制报文和请求应答报文。,这些信息有助于信源或管理人员发现错误原因。ICMP差错报告具有以下特点:1)只报告差错,但不负责纠正错误,纠错工作留给高层协议去处理。2)发现出错的设备只向信源报告差错。3)差错报告作为一般数据传输,不享受特别优先权和可靠性。4)产生ICMP差错报告的同时,会丢弃出错的IP数据报。形成ICMP差错报告时有以下例外:1)ICMP差错报文本身不会再产生ICMP差错报告。2)分片报文的非第一个分片不会产生ICMP差错报告。3)组播地址报文不会产生ICMP差错报告。4)。,将丢弃当前的数据报,并产生信宿不可达差错报告,向信源报告出错。信宿不可达报文如图所示。信宿不可达报文可能由路由器产生,也可能由信宿机产生。产生信宿不可达报文的原因的16种可能:类型报文代码描述3信宿不可达0网络不可达1主机不可达2协议不可达3端口不可达4数据报无法分片5源路由失败6信宿网络未知7信宿主机未知8源主机被隔离9与信宿网络的通信被禁止10与信宿主机的通信被禁止11对特定的服务类型(TOS)网络不可达12对特定的服务类型(TOS),首部的TTL值用于防止数据报因路由表的问题而无休止地在网络中传输。当TTL值为0时,路由器会丢弃当前的数据报,并产生一个ICMP数据报超时报告。另外。在信宿进行分片重组时会启动重组定时器,一旦重组定时器超时,信宿就会丢弃当前正在重组的数据报,然后产生一个ICMP数据报超时报告,并向信源发送该超时报告。数据报超时报告的报文格式与信宿不可达报告的报文格式相同,只是类型和代码值不同。数据报超时报告的类型和代码的含义如表所示。类型值11表示是数据报超时报文,代码“0”表示TTL超时,代码“1”表示分片重组超时。类型报文代码描述11超时0路由TTL超时1分片重组超时