Internet Control Message Protocol (ICMP) este un utilitar utilizat pentru raportarea erorilor și în scopuri de diagnosticare în rețelele de calculatoare. ICMP face parte din Internet Protocol (IP) Suite și constă din mesaje predefinite cu diferite scopuri. Cele mai multe aspecte ale protocolului Internet Control Message Protocol trec neobservate de utilizatorii finali, dar câteva instrumente de rețea, cum ar fi traceroute și ping, se bazează pe mesajele ICMP pentru funcționalitatea lor.
În centrul atât a Internetului, cât și a rețelelor de calculatoare mai mici se află o colecție de protocoale cunoscută sub numele de IP Suite. Aceste protocoale specifică formatele pentru mesajele schimbate între dispozitivele de rețea și stabilesc reguli pentru modul în care aceste mesaje sunt trimise și primite. Protocoalele sunt, de asemenea, stratificate, fiecare strat bazându-se pe cel de sub el. ICMP face parte din cel de-al doilea cel mai înalt nivel, stratul Internet. Acest nivel include binecunoscutul protocol Internet responsabil pentru transmiterea grupurilor individuale de date, numite pachete, printr-una sau mai multe rețele.
ICMP este folosit pentru a trimite mesaje de eroare sau informații de diagnosticare între dispozitive sau gazde, utilizând protocolul Internet. Mesajele ICMP sunt predefinite și pot fi menționate fie prin nume, fie prin număr de tip. Majoritatea acestor mesaje sunt pentru diferite tipuri de raportare a erorilor. De exemplu, atunci când o anumită gazdă nu poate fi atinsă, este adesea generat un mesaj ICMP care indică problema specifică care împiedică livrarea datelor. Alte tipuri de mesaje sunt trimise dacă pachetele devin corupte sau dacă un router sau o gazdă dintr-o rețea este aglomerată.
Dimensiunea maximă a unui pachet nu este predefinită, ci dictată de unitatea de transmisie maximă (MTU) a unei anumite legături de rețea. Diferite legături pot avea MTU-uri diferite, dar un pachet trebuie să fie mai mic decât cel mai mic MTU de-a lungul unei anumite căi pentru a-și finaliza călătoria. O tehnică cunoscută sub numele de Path MTU Discovery (PMTUD) utilizează mesaje ICMP pentru a notifica expeditorul atunci când pachetele sunt prea mari pentru un anumit segment de cale.
Un protocol înrudit, cunoscut sub numele de ICMP Router Discovery Protocol (IRDP) poate facilita configurarea automată a rețelei pentru gazdele care îl acceptă. IRDP utilizează două tipuri de mesaje Internet Control Message Protocol pentru a anunța și descoperi routerele din apropiere, adică gazde care conectează două sau mai multe rețele. Un router care acceptă IRDP va difuza periodic un mesaj publicitar de ruter ICMP care anunță prezența acestuia către gazde. Gazdele pot trimite, de asemenea, un mesaj de solicitare prin care solicită tuturor ruterelor din apropiere să se identifice.
Unele utilitare de rețea populare se bazează, de asemenea, pe Internet Control Message Protocol. Un instrument, traceroute, utilizează mesajul ICMP generat atunci când un pachet a expirat sau a depășit „timpul de viață” (TTL). Prin setarea intenționată a unei valori TTL scăzute pentru un pachet, traceroute va primi un mesaj ICMP Time Exceeded de la ultimul router la care pachetul a ajuns înainte de expirare. Repetarea acestui proces și creșterea valorii TTL va genera, teoretic, o listă cu toate pachetele gazde prin care călătoresc.
Un alt instrument numit ping se bazează pe mesajul ICMP Echo Request, la care se răspunde cu un mesaj ICMP Echo Reply. Din păcate, ping-ul poate fi abuzat și într-un așa-numit „atac smurf” atunci când un hacker trimite cereri de ecou cu informații falsificate ale expeditorului, la care apoi răspund multe alte mașini. Acest lucru poate congestiona o rețea până la punctul în care niciun pachet legitim nu poate trece, o situație cunoscută sub numele de refuzare a serviciului.