ICMP stands for Internet Control Message Protocol. ICMP is used to perform network error reporting and status. ICMP works at the transport layer. The errors reported by ICMP are generally related to datagram processing. ICMP only reports errors involving fragment 0 of any fragmented datagrams. The IP, UDP or TCP layer will usually take action based on ICMP messages.
RFC 792 and RFC 1122 describe ICMP.
For more information about ICMP see Internet Control Message Protocol.