Menu Zavrieť

4.7. Protokol ICMP

ICMP: internet control message protocolRFC 792

Protokol ICMP používajú stanice a routre, aby sa navzájom informovali o situácii v sieti. Najčastejšie použitie ICMP je na chybové správy o nedostupnosti siete, stanice, protokolu alebo portu.

ICMP protokol je sieťový protokol, ktorého správy sa prenášajú v tele IPv4 datagramu podobne ako TCP alebo UDP segmenty. Niekedy je preto považovaný za transportný protokol. My ho však za transportný považovať nebudeme, lebo neprenáša žiadne dáta aplikačnej vrstvy.

Hlavička ICMP protokolu obsahuje dve čísla code a type, ktoré dohromady určujú typ správy. Chybové ICMP správy majú navyše v tele aj hlavičku a prvých 8 bajtov tela datagramu, ktorý chybu spôsobil. Všetky typy správ si pozrite v RFC 792 alebo ešte lepšie na stránkach organizácie IANA.

ICMP správy sa používajú aj na diagnostiku siete. Ak chceme zistiť, či je stanica s nejakou IP adresou dostupná, použijeme program ping, ktorý vyšle ICMP správu „echo request“ (type 8 code 0) a ak je stanica dostupná (a nemá nastavený firewall tak, že ICMP správy neprijíma), tak odpovie ICMP správou „echo reply“ (type 0 code 0) a my vieme, že je zapnutá.

Veľmi užitočným pomocníkom na diagnostiku siete je aj program traceroute alebo tracert. Je založený na tom, že keď uplynie životnosť datagramu, router tento paket zahadzuje a posiela ICMP správu TTL expired (type 11 code 0). Traceroute vysiela datagramy najprv s TTL=1, potom s TTL=2 a tak ďalej, až pokiaľ niektoré datagramy „neprežijú“ celú cestu k cieľovej stanici. TTL sa na každom routri znižuje o 1, alebo sa datagram zahadzuje ak dosiahne TTL hodnotu nula. To znamená, že najprv prídu ICMP správy TTL expired z najbližšieho routra, potom z druhého na ceste k cieľu, a tak ďalej.

Podľa toho, aký typ správ bol zasielaný, reaguje cieľová stanica rôzne. Ak bol použitý v posielanom IP datagrame UDP segment, ktorému sa bežne nastavuje nejaký port, ktorý je pravdepodobne neotvorený, vráti sa ICMP správa destination port unreachable (typ 3 code 3). V prípade, že sa použil TCP SYN segment, ktorý sa v ICMP bežne používa s portom 80, tak príde buď ICMP správa destination port unreachable alebo SYNACK segment, keďže sa predpokladá, že chceme nadviazať TCP spojenie na webový server. Tiež sa môže použiť ICMP správa „echo request“, vtedy z cieľa príde ICMP správa „echo reply“. To, aký bude typ odosielaných správ, sa dá nastaviť prepínačmi programu traceroute (tracert).

Ak je niektorý router na ceste vypnutý či nefunkčný, dočkáme sa asi ICMP správy destination network unreachable (type 3 code 0) od routra pred ním. Ak je vypnutá iba cieľová stanica, príde z posledného routra na ceste správa destination host unreachable (type 3 code 1).