Internet控制报文协议(Internet Control Message Protocol, ICMP)是Internet协议族的一个子协议。主要用于在IP主机、路由器之间传递控制消息。ICMP层一般被堆在IP层(即第三层)之上,在TCP和UDP等传输层之下。
ICMP主要提供了网络错误报告、网络拥塞报告和网络诊断等功能,可以将IP层的差错报告和控制信息传递到源主机,使其能够了解网络状况,从而采取相应的措施。
ICMP常常被用作IP层的一种差错报告方式,当路由器或目的主机接收到无法处理的报文时,会通过ICMP发送一条差错报文给源主机,通知其发送的IP数据报文存在问题。这种方式不仅可以告知源主机产生的错误,也能够告知源主机通信的异常中间节点,使其能够及时采取纠正措施。
ICMP还提供了网络拥塞报告功能,当网络拥塞时,ICMP会将相关信息发送给主机,告知网络负载过重,需要采取控制措施。
ICMP协议也被用于网络诊断,通常与ping工具结合使用,可以测试主机的可达性、网络链路时延和丢包率等信息,同时也能诊断网络故障原因。
ICMP报文主要由报文头和报文体两部分组成。其中,报文头长度为8个字节,包含类型、代码、检验和等字段;报文体长度不定,根据不同的类型和代码而不同。
ICMP报文头具体格式如下:
ICMP协议是基于IP协议的补充,一般位于IP层之上,UDP、TCP等协议之下。当IP层需要传递信息且无法完成时,ICMP协议才被调用。然而,ICMP本身也可以使用IP协议进行传输,就像其他协议一样。