文档介绍:控制信息协议( ICMP ) 介绍在被称为 的系统中, IP协议被用作主机到主机的数据报服务。网络连接设备称为网关。这些网关通过网关到网关协议( GGP )相互交换用于控制的信息。通常,网关或目的主机将和源主机通信,例如, 为报告在数据报过程中的错误。为了这个目的才使用了 ICMP ,它使用 IP做于底层支持,好象它是一个高层协议,而实际上它是 IP的一部分,必须由其它 IP模块实现。 ICMP 消息在以下几种情况下发送:当数据报不能到达目的地时,当网关的已经失去缓存功能,当网关能够引导主机在更短路由上发送。 IP并非设计为设计为绝对可靠,这个协议的目的是为了当网络出现问题的时候返回控制信息,而不是使 IP 协议变得绝对可靠,并不保证数据报或控制信息能够返回。一些数据报仍将在没有任何报告的情况下丢失。上层协议必须使用自己的差错控制程序来判断通信是否正确。 ICMP 信息通常报告在处理数据报过程中的错误。若要避免信息无限制地返回,对于 ICMP 消息不会单独成包发送,而且 ICMP 信息只在处理数据报偏移量为 0时发送。消息格式 ICMP 消息以基本 IP头发送。数据的第一个字节是 ICMP 类型域;此域的值决定了了其余数据的格式。任何标记为“未使用”的域都是为以后的扩展保留的,在传送过程中必须全部是 0。除非在个别的格式之下,包头域如下格式: 版本: 4 IHL : 头长度大小以 32位字为单位。服务类型: 0总长度:包头长度和数据长度。段中所用标识,段偏移量:在段是使用。生存周期:以秒计,此域在每台机器处理数据报时减少,此值必须大于要传送它的网关所消耗的时间。协议: ICMP =1包头校验码: 16位数据反码和再取反而得。为计算校验码,此域应该为 0。在将来可以会取代这一域。源地址:创建 ICMP 信息的网关或主机地址,除非说明,它可以是任何网关地址。目的地址:信息要发送到的网关或主机地址。未达目的地信息图1 IP域:目的地址,发送原始数据报数据的网络地址 ICMP 域: 类型: 3 代码: 0=网络不可达; 1=主机不可达; 2=协议不可用; 3=端口不可达; 4=需要段和 DF 设置; 5=源路由失败; 校验码: 16位数据(从 ICMP 类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。 包头+源数据报: 包头加上源数据的头 64位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头 64个字节之中。说明: 相应于网关的路由表,如果在目的域中指定的网络不可达,如网络距离为无限远,网关会向发送源数据的主机发送目的不可达消息。而且,在一些网络中,网关有能力决定目的主机是否可达。如果目的地不可达, 它将向发送源数据的主机发送不可达信息。在目的主机,如果 IP模块因为指定的协议模块和进程端口不可用而不能提交数据报,目的主机将向发送源数据的主机发送不可达信息。另外一种情况是当数据报必须被分段传送,而“不可分段”位打开,在这种情况下,网关必须抛弃此数据报, 并向向发送源数据的主机发送不可达信息。代码 0,1,4和5由网关发送,而代码 2和3由主机发送。超时信息图2 IP域: 目的地址:从源数据报数据中得到。 ICMP 域: 类型: 11 代码: 0=传送超时; 1=分段级装超时。校验码: 16位数据(从 ICMP 类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。 包头+64 位源数据报数据: 包头加上源数据的头 64位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头 64个字节之中。说明: 如果网关在处理数据报时发现生存周期域为零,此数据报必须抛弃。网关同时必须通过超时信息通知源主机。如果主机在组装分段的数据报时因为丢失段未能在规定时间内组装数据,此数据报必须抛弃。网关发送超时信息。如果段零不可用则不用发送超时信息。代码 0由网关发送,代码 1由主机发送。参数问题消息图3 IP域: 目的地址:从源数据中得到。 ICMP 域: 类型: 12 代码: 0=指针指向错误。校验码: 16位数据(从 ICMP 类型开始)的反码和再取反而得。为计算校验码,校验码域应该为零。这些零在以后会被校验码取代。指针如果 code =0,指向有问题的字节。 包头+64 位源数据报数据: 包头+64 位源数据报数据: 包头加上源数据的头 64位而得。此数据用于主机匹配信息到相应的进程。如果高层协议使用端口号,应该假设其在源数据的头 64个字节之中。说明: 如果网并或主机在处理数据报时发现包头参数有错误以至不能完成工作,它必须抛弃此数据报。一个潜在的原因可以是变量的错误。网关或主机将通过参数问