Internet控制信息协议(ICMP)
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
代码:
0 = 传送超时;
1 = 分段级装超时。
校验码:16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的过程。如果高层协议利用端口号,应当假设其在源数据的头64个字节之中。
阐明:
如果网关在处理数据报时创造生存周期域为零,此数据报必须抛弃。网关同时必须通过超时信息通知源主机。
如果主机在组装分段的数据报时因为丧失段未能在规定时间内组装数据,此数据报必须抛弃。网关发送超时信息。
如果段零不可用则不用发送超时信息。
代码0由网关发送,代码1由主机发送。
参数问题消息
图3
IP域:
目标地址:从源数据中得到。
ICMP域:
类型:12
代码:
0 = 指针指向弊病。
校验码: 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
指针
如果code = 0,指向有问题的字节。
Internet包头+64位源数据报数据:Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的过程。如果高层协议利用端口号,应当假设其在源数据的头64个字节之中。
阐明:
如果网并或主机在处理数据报时创造包头参数有弊病以至不能完成工作,它必须抛弃此数据报。一个潜在的原因可以是变量的弊病。网关或主机将通过参数问题消息通知源主机,此消息只有在消息被抛弃时才被发送。指针指向创造弊病的数据报包头字节。
代码: 从主机或网关吸收0。
源拥塞消息
图4
IP域:
目标地址:源数据报数据的地址和源网络。
ICMP域:
类型:4
代码: 0
校验码: 16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
Internet包头+64位源数据报数据: Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的过程。如果高层协议利用端口号,应当假设其在源数据的头64个字节之中。
阐明:
如果没有缓冲容纳,网关会抛弃数据报,如果网关这样做了,它会发送源拥塞消息给发送主机。如果吸收的数据报太多无法处理,目标主机也会发送相应的消息给发送主机。此消息恳求发送发减少发送速率,网关会给每个抛弃的消息返回源拥塞消息,在接到此消息后,发送主机应当减少发送速率,直到不再吸收到网关发送的源拥塞消息为止。在此之后,源主机可以再增长发送速率,直到吸收到目标主机的源拥塞消息为止。
网关或主机不会等到已经超过限度后再发送此消息,而是接近自己的处理极限时就发送此消息,这意味着,引发源拥塞消息的数据报仍然可以处理。代码: 从主机或网关吸收0。
重定向消息
图5
IP域:
目标地址:源数据报数据的地址和源网络。
ICMP域:
类型: 5
代码:
0 = 重定向网络的数据报;
1 = 重定向主机的数据报;
2 = 重定向网络和服务类型的数据报;
3 = 重定向网络和主机类型的数据报。
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
网关Internet地址:
应当发送网关地址(其在源数据报数据的internet目标网络域中指定)。
Internet包头+64位源数据报数据:
Internet包头+64位源数据报数据:Internet包头加上源数据的头64位而得。此数据用于主机匹配信息到相应的过程。如果高层协议利用端口号,应当假设其在源数据的头64个字节之中。
阐明:
网关在下面情况下发送重定向消息。网关(G1)从网关相连的网络上吸收到数据报,它检查路由表获得下一个网关(G2)的地址(X)。如果G2和指定的吸收主机在同一网络上,重定向消息发出,此消息建议发送主机直接将数据报发向网关G2,因为这更近,同时网关G1向前持续发送此数据报。
因为在数据报中的IP源路由和目标地址域是可选的,所以即使有更好的路由有时也无法创造。代码:网关发送0,1,2和3。
回送或回送响应消息
图6
IP域:
地址:
回送消息的源地址是回送响应消息的目标地址。若要形成一个回送响应消息,应当将源和目标地址交换,将类型代码更改为0,重新电脑校验码。
IP域:
类型:
8代表回送消息;
0代表回送响应消息。
代码:0
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
标识符:如果代码=0,援助匹配回送和回送响应的代码可认为0。
序列码:如果代码=0,援助匹配回送和回送响应的序列码可认为0。
阐明:
回送消息中吸收到的消息应当在回送响应消息中返回。标识符和序列码由回送发送者利用援助匹配回送恳求的响应。代码: 从主机或网关吸收0。
时间戳和时间戳响应消息
图7
IP域:
地址:
时间戳消息的源地址是时间戳响应消息的目标地址。若要形成一个时间戳响应消息,应当将源和目标地址交换,将类型代码更改为14,重新电脑校验码。
IP域:
类型:
13代表时间戳消息;
14代表时间戳响应消息。
代码:0
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
标识符:如果代码=0,援助匹配时间戳和时间戳响应的代码可认为0。
序列码:如果代码=0,援助匹配时间戳和时间戳响应的代码可认为0。
阐明:
吸收到的时间戳附加在响应里返回,时间是以百万分之一称为单位计算,并以标准时午夜开始计时。原时间戳是发送方发送前的时间。吸收时间戳是回送者吸收到的时间,传送时间是回送者发送的时间。
如果时间以百万分之一秒计无效,或者不能以标准时供给,可以在时间戳的高字节填充入数据以表现这不是标准数据。标识符和序列码由发送者匹配恳求的响应。代码: 从主机或网关吸收0。
信息恳求或信息响应消息
图8
IP域:
地址:
信息恳求消息的源地址是信息响应消息的目标地址。若要形成一个信息响应消息,应当将源和目标地址交换,将类型代码更改为16,重新电脑校验码。
IP域:
类型:
15代表信息恳求消息;
16 代表信息响应消息。
代码: 0
校验码:
16位数据(从ICMP类型开始)的反码和再取反而得。为计算校验码,校验码域应当为零。这些零在以后会被校验码代替。
标识符:如果代码=0,援助匹配信息恳求和信息响应的代码可认为0。
序列码:如果代码=0,援助匹配信息恳求和信息响应的代码可认为0。
阐明:
此消息可以在IP包头中以源网络地址发送,但同时目标地址域为0(这表现此网络内)。响应IP模块应当发送完整指定地址的响应。发送此消息是主机寻找到自己所在网络号码的一种方法。标识符和序列码由发送者匹配恳求的响应。代码: 从主机或网关吸收0。
消息类型总结
0 回送响应
3 目标不可达
4 源拥塞
5 重定向
8 回送
11 超时
12 参数问题
13 时间戳
14 时间戳响应
15 信息恳求
16 信息响应