欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

ICMP控制报文协议

程序员文章站 2022-04-22 18:34:36
ICMP控制报文协议      IP层的主要控制功能包括差错控制、拥塞控制和路由控制。若在IP报文传输过程中出现错误,IP协议本身并没有一种内在的机制获取差错...

ICMP控制报文协议

 

   IP层的主要控制功能包括差错控制、拥塞控制和路由控制。若在IP报文传输过程中出现错误,IP协议本身并没有一种内在的机制获取差错信息并进行差错控制。比如以下问题IP协议本身是不能解答的:(1)数据报是否正确地到达了接收端?(2)若数据报不能到达接收方,那么这是什么原因造成的?

        为此,在TCP/IP中设计了ICMP协议来处理报文传输过程中出现的错误,ICMP是IP层的一个组成部分。具体如下:

      (1)当中间路由器或目标主机发现数据报文在传输过程中出现错误,不能到达接收端时,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文向信源机报告出错情况。

      (2)在实际应用中,ICMP不但用来传输报告差错的报文,它还用来传输控制报文。

      (3)ICMP并不能提高IP协议的可靠性,只是当IP数据报不能到达接收端时,用来向发送端的IP层通知数据报因何原因没有到达接收端,以便发送端的IP层能够进行差错控制和差错处理。

      (4)目前的ICMP已成为用于IP层差错和控制报文传输的专用协议。

 

什么情况下不发送ICMP报文

     (1)ICMP差错报文(ICMP查询报文可能会产生ICMP差错报文)

      (2)目的地址是广播地址或多播地址的IP数据报

      (3)作为链路层广播的数据报

      (4)不是IP分片的第一片

      (5)源地址不是单个主机的数据报  

      (6)具有特殊地址(如127.0.0.0或0.0.0.0)的数据报

 

ICMP应用

     (1)源主机消亡:源主机接收到源主机消亡(抑制)报文后,必须将此信息交给高层进程处理。

     (2)超时

     (3)参数问题

     (4)重定向

     (5)回送请求和回送应答是一对查询报文,用于测试两个机器(主机或路由器)之间能否实现通信。

     (6)时间戳请求和时间戳应答一对查询报文,用于确定IP数据报在源端和目的端之间往返所需要的时间,也可用作源端和目的端机器的时钟同步。

     (7)地址掩码请求和地址掩码应答是一对查询报文,用于获得一个主机所在网络的子网掩码。

     (8)路由器通告和路由器请求是一对查询报文,用于主机与路由器之间交换信息。 

     (9)信息请求和信息应答是一对查询报文,用于主机查找所连接网络的地址。

     (10)路由跟踪

ICMP的封装

       ICMP封装在IP报进行传输。ICMP报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。在IP数据报报头中的协议(Protocol)字段设置成1,表示该数据是ICMP报文。      

 

ICMP控制报文协议

    

       其中,ICMP报文包含:ICMP首部(8字节)+产生差错的数据报IP首部+IP首部后的8个字节。具体如下图:

 

ICMP控制报文协议

 

       IP包首部要被传回的原因,因为IP首部中包含了协议字段,使得ICMP可以知道如何解释后面的8个字节。而IP首部后面的8字节(UDP的首部或者TCP首部,UDP和TCP首部的8个字节分别包含了16位的目的端口号和源端口号),根据源端口号就可以把差错报文与某个特定的用户进程关联。

 

ICMP报文的报头

       ICMP报文包括8个字节的报头和长度可变的数据部分。对于不同的报文类型,报头的格式一般是不相同的,但是前3个字段(4个字节)对所有的ICMP报文都是相同的。

 

ICMP控制报文协议

 

     (1)类型(Type)字段,长度是1字节,用于定义报文类型。

     (2)代码(Code)字段,长度是1字节,表示发送这个特定报文类型的原因。

     (3)校验和(Checksum)字段,长度是2字节,用于数据报传输过程中的差错控制。与IP报头校验和的计算方法类似,不同的是其是对整个ICMP报文进行校验。

     (4)报头的其余部分,其内容因不同的报文而不同。

     (5)数据字段,其内容因不同的报文而不同。对于差错报告报文类型,数据字段包括ICMP差错信息和触发ICMP的整个原始数据报,其长度不超过576字节。

 

总结

   (1)IP协议是一种不可靠的、无连接的协议,不具备差错报告和差错纠正机制,它必须依赖于ICMP协议来报告处理一个IP数据报传输过程中的错误并提供管理和状态信息

    (2)ICMP即网际控制报文协议,是IP协议的一部分。当数据报在传输过程中发生错误时,主机或者路由器的ICMP模块将被触发,并产生一个ICMP报文

    (3)ICMP报文有两大类:差错报告报文和查询报文。其中,差错报告报文包括:目的不可达、源主机消亡、超时、参数问题、重定向。查询报文包括:回应请求和应答、信息请求和应答(已弃用)、时间戳和时间戳应答、地址掩码请求和应答、路由器通告和请求

    (4)ICMP报文封装成IP数据报的形式传送。ICMP报文包括1字节的类型字段、1字节的代码字段、2字节的校验和字段和长度可变的数据字段