This protocol is necessary for ensuring that data has been successfully received by the recipient node. ICMP reports to the sender on successful or unsuccessful data delivery. It indicates reason for data delivery failure like:
TTL (Time To Live) expiry
Data destination reach failure
Network congestion
ICMP provides failure information, that might be very useful for problem troubleshooting, but it does not solve any errors or failures in the network.
This protocol is used for the IPv4. In the IPv6 network, the ICMPv6 is implemented. It is performing functions of ICMP,ARP, and IGMP from IPv4. It performs network node discovery, manages multicasting (required for IPTV services), and detects and reports transmission errors.