ICMP (Internet Control Message Protocol) is a network layer protocol that reports errors and provides information related to IP packet processing. ICMP is used by network devices to send error messages indicating, for example, that a requested service is not available or that a host isn’t reachable.
ICMP is commonly used by network tools such as ping or traceroute.
The ICMP echo request and TCP ACK ping is a good all-purpose ping. This ping will obtain a response from all devices if the path is clear for ICMP, and it will get a response from a remote device if port 80 is not filtered. Since most packet filters allow port 80, there's a good possibility that this packet will get through.