ICMP ingrijitorul Internetului

      Dupa cum am mai spus, protocolul IP nu garanteaza livrarea pachetelor si nici nu semnalizeaza esecurile in cazul in care sunt pierdute pachete de date. Totusi, in anumite conditii, suita TCP/IP genereaza anumite mesaje de eroare, care sunt impachetate si transportate de protocolul ICMP.

      TCP/IP implementeaza ICMP pe nivelul retea, alaturi de alte doua protocoale: IP si IGMP (Internet Group Message Protocol). Pentru livrarea mesajelor, ICMP foloseste tot protocolul IP, ca dealtfel si cele doua protocoale de transport (TCP si UTP) care il utilizeaza pentru livrarea pachetelor de date. Cu alte cuvinte un mesaj ICMP va traversa reteaua TCP/IP in zona de date a unei detagrame IP.

      Suita de protocoale TCP/IP a fost proiectata astfel incat mesajele de eroare sa se limiteze doar la protocoalele de pe nivelele retea si transport. Ca urmare a acestui fapt, doar cele doua nivele pot “vedea” mesajele de eroare TCP/IP de pe nivelele mai joase.

      Initial, ICMP a fost proiectat sa permita dispozitivelor gateway (routerelor) raportarea cauzei care a generat erori de transport de catre nivelul retea al hostului emitator, care, la randul lui, trebuie sa decida cum sa raspunda la aceste erori semnalate. In momentul actual, ICMP nu se limiteaza doar la utilizarea de catre routere; orice alt host din retea poate folosi ICMP pentru a transmite altui host mesaje de eroare, control sau informatie.

      Pentru a defini mai precis capabilitatile si limitele ICMP am putea spune ca el furnizeaza servicii de “semnalare a erorilor”. ICMP nu livreaza nici un fel de servicii de “corectare a erorilor” si nici nu indica modulelor soft ale nivelului retea nici o “modalitate de raspuns” la erorile pe care le semnaleaza.

      In cazul unor erori, ICMP semnaleaza problema doar hostului sursa. Nici un comutator de pachete intermediar nu este anuntat de erorile depistate. Din acest motiv, hostul emitator, nu poate corecta intotdeauna problemele care apar in procesul de routare. Dar, aceasta limitare vine din “ratiunea de proiectare” a stivei TCP/IP, si anume: tabelele de routare folosite de comutatoarele intermediare sunt configurate in mod dinamic. In acest mod, nici un comutator nu va cunoaste intreaga “harta de routare” pentru intreaga retea (din ratiuni de simplificare a soft-ului de retea). Deci, hostul destinatie, la sosirea unor datagrame IP nu va putea afla niciodata ce cale a strabatut datagrama respectiva pentru a ajunge la destinatie. In plus, hostul nu va sti nici calea care o va parcurge o datagrama spre hostul sursa.

      Cum am spus mai sus, ICMP foloseste IP pentru livrarea mesajelor. Din acest motiv, ICMP nu poate fi nici mai sigur, nici nu poate avea o prioritate mai mare decat orice alt pachet IP. Reteaua poate pierde sau ignora un pachet ICMP la fel ca orice alt pachet IP. In plus, pierderea unui mesaj ICMP poate duce la aparitia unor probleme suplimentare legate de livrarea datelor. In principiu exista doua tipuri de mesaje ICMP:

  1. Mesaje de eroare. Apar ca urmare a problemelor legate de livrarea pachetelor IP. Deci, fiecare mesaj ICMP va fi legat de o anumita datagrama IP, continand intotdeauna antetul IP si primii 8 octeti de date din datagrama.
  2. Mesaje de interogare. Raporteaza informatii legate de retea sau de un host anume. In general, astfel de mesaje, sunt utilizate in scopul depanarii retelei.

      Pentru a preintampina anumite fenomene de congestie, TCP/IP defineste niste reguli stricte pe baza carora se pot genera masaje ICMP. Astfel, un mesaj ICMP de interogare poate genera un mesaj de eroare, dar, niciodata, o datagrama IP care contine un mesaj de eroare nu poate genera un nou mesaj de eroare (pentru evitarea unui trafic suplimentar si inutil). La fel, nu se pot genera mesaje de eroare pentru datagrame cu adresa de broadcast si multicast.