ICMP is a helper protocol that supports IP by providing error reporting and simple queries. ICMP messages are encapsulated as IP datagrams with a 4 byte header containing the type, code, and checksum. Common ICMP error messages include Destination Unreachable (sent when a datagram cannot be forwarded), Redirect (informs about a better route), and Time Exceeded (sent when the TTL reaches zero).