您的位置:首页 > 其它

IMCP网际控制协议

2015-10-16 15:18 288 查看
IP协议是TCP/IP协议使用的在网络层传输机制,它是一种不可靠的无连接的数据报协议,但是IP协议假定了底层是不可靠的,因此,要尽最大的努力传输到目的地,但正因为如此,IP协议则没有了保证,也就是说,它并没有提供检验或跟踪机制。所以, ICMP设计的本意就是希望对IP包无法传输时提供报告,这些差错报告帮助了发送方了解为什么无法传递,网络发生了什么问题,确定应用程序后续操作。

ICMP就像一个更高层的协议那样使用IP(即,ICMP消息被封装在IP数据报中)。

然而,ICMP是IP的一个组成部分,并且所有IP模块都必须实现它。 ICMP用来报告错误,是一个差错报告机制。它为遇到差错的路由器提供了向最初源站报告差错的办法,源站必须把差错交给一个应用程序或采取其它措施来纠正问题。

对于被分段的数据报,ICMP消息只发送关于第一个分段中的错误。也就是说,ICMP消息永远不会引用一个具有非0片偏移量字段的IP数据报。 响应具有一个广播或组播目的地址的数据报时,永远不会发送ICMP消息,响应一个没有源主机IP地址的数据报时永远不会发送ICMP消息。这样就避免了广播风暴。

ICMP的两级封装 每个ICMP报文放在IP数据报的数据部分中通过互联网传递,而IP数据报本身放在帧的数据部分中通过物理网络传递。



ICMP报文有一个8字节的首部和一个可变长度的数据部分(IP数据报首部)。ICMP报文分为ICMP差错报告报文和ICMP询问报文。前4个字节对所有的类型都是共同的,第一个8比特字段是ICMP的类型,它定义了报文的类型。代码字段指明了发送此特定报文类型的原因。最后一个共同的字段是检验和字段。首部的其余部分对每一种报文类型都是特定的。 ICMP定义了五种常用差错报文和六种询问报文类型,以及用代码表达某类型下面不同情况的细分。

所有ICMP差错报告报文中的数据字段都具有同样的格式。将收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报告的数据字段。再加上相应的ICMP差错报告报文的前8个字节,就构成了ICMP差错报告报文。提取收到的数据报的数据字段的前8个字节是为了得到运输层的端口号(对于TCP和UDP)以及运输层报文的发送序号(对于TCP)









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: