ICMP (Internet Control Message Protocol) este un protocol utilizat pentru a semnala diverse conditii de eroare sau de stare ale comunicatiei in Internet. Aplicatii care utilizeaza ICMP sunt ping si traceroute.
Desi aplicatia ping publica are numeroase optiuni, o aplicatie simplificata transmite un mesaje ICMP de tip echo request si asteapta sosirea de mesaje de tip echo reply.
Header-ul ICMP are formatul prezent in figura de mai jos:
Campurile type si code sunt utilizate pentru a identifica tipul de mesaj. checksum este suma de control (CRC). Regulile ICMP specifica faptul ca celelalte doua campuri (identifier si sequence number) sa fie intoarse in mesajul de reply.
Campul optional data permite adaugarea de informatii suplimentare, utile aplicatiei. In cazul ping aici se poate stoca timestamp-ul transmiterii pachetului pentru a putea calcula timpul dupa care s-a primit raspunsul.
Figura de mai jos arata modul in care sunt organizate informatiile in header-ul IP si ICMP: