Internet Control Message Protocol
Internet Control Message Protocol (abreviat ICMP) este un protocol din suita TCP/IP care folosește la semnalizarea și diagnosticarea problemelor din rețea. Protocolul este definit in RFC792. Mesajele ICMP sunt încapsulate în interiorul pachetelor IP. Versiunea ICMP ptr IPv4 este adesea cunoscuta ca ICMPv4; in schimb IPv6 dispune de un protocol similar cunoscut sub abrevierea ICMPv6.
Exemple de utilizare
Probabil cele mai utilizate programe care se bazează pe ICMP sunt ping și traceroute.
Ping trimite mesaje ICMP de tip echo request ("cerere de ecou") către calculatorul țintă și așteaptă de la acesta mesaje ICMP de tip echo reply ("răspuns de tip ecou"). Dacă acestea nu sunt primite, se poate presupune că ceva este în neregulă cu conexiunea dintre cele două calculatoare.
Toate pachetele IP au în antet un câmp special numit TTL (Time To Live). Acest câmp este decrementat de fiecare dată când trece printr-un ruter. Pentru a evita buclele de routare, în momentul în care câmpul TTL ajunge la zero pachetul nu este trimis mai departe. În această situație, router-ul care a decrementat câmpul TTL la zero trimite către calculatorul-origine al pachetului (adresa acestuia se află tot în prologul IP) un mesaj ICMP de tip time exceeded. Programul traceroute profită de acest mecanism și trimite către calculatorul țintă pachete UDP cu valori ale câmpului TTL din ce în ce mai mari, cu scopul de a obține mesaje time exceeded de la toate routerele aflate pe traseu.
Structura segmentului ICMP
Antetul
Antetul (header) ICMP incepe imediat dupa antetul IPv4. Toate pachetele ICMP dispun de un antet de 8 octeti si de o sectiune de date de lungime variabila. Structura antetului ICMP este redata in figura de mai jos:
Biti | 0-7 | 8-15 | 16-23 | 24-31 |
---|---|---|---|---|
0 | Tip | Cod | Suma de control | |
32 | Restul antetului |
- Tip - tipul pachetului ICMP
- Cod - subtipul pachetului ICMP in functie cu tipul selectat anterior
- Suma de control - Suma de control calculata in functie de campurile antet ICMP + sir de date si este descrisa in RFC 1071.
- Restul antetului - camp de 4 octeti ce variaza ca si continut pe baza tipului/codului antetului ICMP.
In continuare este redata lista mesajelor de control (incompleta):
Tip | Cod | Descriere |
---|---|---|
0 - Echo Reply | 0 | Raspuns de tip ecou (utilizat pentru ping) |
1 si 2 | Rezervat | |
3 - Destinatie de neatins (Destination Unreachable) | 0 | Retea destinatie indisponibila |
1 | Gazda-destinatie indisponibila | |
2 | Protocol destinatie indisponibil | |
3 | Port destinatie indisponibil | |
4 | Solicitare fragmentare | |
5 | Sursa de rutare esuata | |
6 | Retea destinatie necunoscuta | |
7 | Gazda destinatie necunoscuta | |
8 | Gazda sursa izolata | |
9 | Acces retea interzis | |
10 | Acces gazda interzis | |
11 | Retea inadmisibila pentru TOS | |
12 | Gazda inadmisibila pentru TOS | |
13 | Acces comunicatie interzisa | |
14 | Prioritate gazda incalcata | |
15 | Prioritate interzisa | |
4 - Sursa ICMP "potolita" | 0 | Mesaj ICMP transmis initiatorului, solicitand scaderea ratei de mesaje ICMP catre un anumit ruter/gazda (datorita problemelor de congestie). |
5 - Redirectare mesaje ICMP | 0 | Redirectare datagrama pentru retea |
6 | Adresa gazda alternativa | |
7 | Rezervat | |
0 - Echo Request | 0 | Cerere de ecou (echo request) utilizata in ping |