Habár maga az IP nem megbízható protokoll, a TCP/IP protokollcsalád tartalmaz olyan üzeneteket, amelyek bizonyos hibák előfordulása esetén küldhetők. Ezeket az üzeneteket.az ICMP protokoll szolgáltatásaival küldik el. A céljuk nem az, hogy megbízhatóvá tegyék az IP protokollt, inkább az IP csomagok feldolgozása során felmerült jelenségekről küldenek visszajelzést bizonyos esetekben. Az ICMP üzenetek nem szükségesek, bizonyos hálózatokon belül biztonsági okokból sokszor nem is engedélyezettek.

Az ICMP IPv4 és IPv6 esetén egyaránt rendelkezésre áll. Az IPv4 üzenetküldő protokollja az ICMPv4. Az ICMPv6 ugyanezeket a szolgáltatásokat nyújtja az IPv6 felé, de további funkciókat is tartalmaz. Ha ebben a kurzusban az ICMP kifejezést használjuk, akkor azt egyaránt értjük az ICMPv4-re és az ICMPv6-ra is.

Az ICMP üzenetek száma és az ok, ami miatt kiküldik őket, nagyon kiterjedt. Most csak a leggyakoribbak egy részét tárgyaljuk.

Az ICMPv4 és ICMPv6 közös ICMP üzenetei például:

Állomás megerősítés

Az ICMP visszhang kérés üzenetet annak a megállapítására használhatjuk, hogy egy állomás üzemel-e. A helyi gép ICMP visszhang kérés üzenetet küld az állomásnak. Ha az állomás elérhető, visszhang válasz üzenettel válaszol. Játsszuk le az ábra animációját az ICMP visszhang kérés/visszhang válasz üzenetek megtekintéséhez. Az ICMP visszhang üzenetei képezik a ping segédprogram alapját is.

Cél vagy szolgáltatás nem elérhető (Destination vagy Service Unreachable)

Ha egy állomás vagy átjáró olyan csomagot kap, amelyiket nem tud kézbesíteni, az ICMP cél nem elérhető üzenetét használhatja arra, hogy a küldőt értesítse a cél vagy a szolgáltatás elérhetetlenségéről. Az üzenet tartalmaz egy kódot, amely leírja, hogy a csomagot miért nem sikerült kézbesíteni.

Az ICMPv4 cél nem elérhető üzenetének néhány kódja és jelentésük:

Megjegyzés: Az ICMPv6 hasonló, de kissé más kódokat használ a cél nem elérhető üzenetekben.

Időtúllépés

Az ICMPv4 időtúllépés üzenetet forgalomirányítók használják akkor, ha a csomagot nem továbbíthatják, mert az élettartam (Time To Live, TTL) mezőjének értéke nullára csökkent. Ha egy forgalomirányító elfogad egy csomagot, és a TTL érték csökkentése után az új érték nulla lesz, eldobja a csomagot, majd időtúllépés üzenetet küld a küldőnek.

Az ICMPv6 szintén időtúllépés üzenetet küld, ha a forgalomirányító nem tudja továbbítani az IPv6 csomagot, mert az élettartama lejárt. Az IPv6-nál nem TTL mezőt használnak, hanem az ugrás korlát (hop limit, ugrás limit) nevű mező jelzi, ha a csomag élettartama lejárt.

Útvonal átirányítás

Ha egy bizonyos cél felé egy jobb útvonal is elérhető a forgalomirányító az ICMP átirányítás üzenetét használhatja arra, hogy a hálózat állomásait értesítse erről. Ezt az üzenetet csak akkor használják, ha a küldő állomás ugyanazon a fizikai állomáson van, mint a két átjáró.

Az ICMPv4 és ICMPv6 egyaránt használ útvonal átirányítás üzeneteket.