The ICMP is an extension to the Internet Protocol which is used to communicate between a gateway and a source host, to manage errors and generate control messages. The Internet Protocol (IP) is not designed to be absolutely reliable.
The purpose of control messages (ICMP) is to provide feedback about problems in the communication environment, not to make IP reliable. There are still no guarantees that a datagram will be delivered or a control message will be returned. Some datagrams may still be undelivered without any report of their loss.
The higher-level protocols that use TCP/IP must implement their own reliability procedures if reliable communication is required. IP is an unreliable protocol that has no mechanisms for error checking or error control. ICMP was designed to compensate for this IP deficiency. However, ICMP does not correct errors, simply reports them.
ICMP uses the source IP address to send the error message to the source of the datagram. ICMP messages consist of error-reporting messages and query messages. The error-reporting messages report problems that a router or a destination host may encounter when it processes an IP packet.
In addition to error reporting, ICMP can diagnose some network problems through the query messages. The query messages (in pairs) give a host or a network manager specific information from a router or another host.