ICMP is short for Internet Control Message Protocol. It is an extension to the Internet Protocol (IP) defined by RFC 792. ICMP supports packets containing error, control, and informational messages. It is an error reporting protocol and is used by routers, hosts and network devices to generate error messages when there are problems delivering IP packets.
ICMP is Defined by RFC 792
RFC 792 defins the goals and specifications for ICMP. ICMP, uses the basic support of IP , however it is actually an integral part of IP, and must be implemented by every IP module. As defined by RFC 792;
“ICMP messages are sent in several situations: for example, when a datagram cannot reach its destination, when the gateway does not have the buffering capacity to forward a datagram, and when the gateway can direct the host to send traffic on a shorter route. The Internet Protocol is not designed to be absolutely reliable. The purpose of these control messages is to provide feedback about problems in the communication environment.” [source]
The Internet Control Message Protocol is used by routers, devices or hosts to communicate error information to other routers, devices, or hosts. An ICMP message contains TYPE, CODE and CHECKSUM fields. These fields identify the ICMP message, provide additional information about Type and provide a method for determining the integrity of the message.
The PING command, for example, uses ICMP to test an Internet connection.