ICMP Internet控制信息协议

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

推荐阅读