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