ICMP - Internet Control Message Protocol

Tento protokol je vyžadovanou součástí IP protokolu. Každý uzel, který má implementovaný IP protokol jej musí podporovat.

Tento protokol je vyžadovanou součástí IP protokolu. Každý uzel, který má implementovaný IP protokol jej musí podporovat. ICMP je definován v RFC 792.

Základním účelem ICPM je informování zdrojového uzlu o chybách při přenosu datagramů. Tyto chyby vznikají např. tím, že

·         směrovač musí zrušit paket při překročení TTL;

·         směrovač nemá dostatečný buffer pro přeposlání datagramu;

·         směrovač musí fragmentovat datagram, ale ten má nastaven příznak "Don´t Fragment";

·         směrovač nebo uzel zjistí chybu v syntaxi IP hlavičky;

·         směrovač nemá v tabulce záznam o cílové síti.

ICMP zpráva je umístěna v datové části IP datagramu. Výsledkem je to, že datagram je směrován stejným způsobem jako přenášel data. S ohledem na to, že není použit mechanismus potvrzení převzetí zprávy, není garantováno, že ICMP zpráva dorazí k adresátovi. Aby bylo zamezeno komplikacím pramenících z informací o ztrátě nebo zrušení ICMP zprávy, nejsou o nich informace předávány. Pro další zjednodušení jsou ICMP zprávy odesílány pouze v případě, že se vyskytl problém s nefragmentovaným datagramem nebo v případě fragmentace pouze u prvního fragmentu.

Formát ICMP je následující:

Type

Code

Checksum

Message Dependant

               

Information

               
               

Type    - specifikuje význam zprávy a formát zbytku paketu; je definováno 13 typů ICMP zpráv

0 - odpověď na echo (Echo Reply)

3 - adresát nenalezen (Destination Unreachable)

4 - žádosti o zpomalení (Source Quench) - tento parametr zajišťuje základní mechanismus pro řízení toku; pokud datagramy přicházejí na směrovač příliš rychle a směrovač je nestíhá zpracovávat, musí je rušit. Při tom posílá zdrojovému uzlu ICMP zprávy Source Quench, jimiž žádá uzel o zpomalení.

5 - přesměrování (Redirect) -  ICMP redirect je mechanismus, kterým může směrovač upozornit na to, že jiný směrovač v síti umí lepší cestu k cíli; je to zejména v případě, že v síti jsou dva směrovače, přičemž jeden z nich je pro určité uzly odchozí bránou a pakety pro určité sítě přehazuje na ten druhý; potom může upozornit uzel na to, že může pro použít ten druhý směrovač přímo

8 - požadavek na echo (Echo Request)

11 - překročení času (time exceeded) - generováno směrovačem v případě překročení TTL,  generováno uzlem v případě, že se nepodaří defragmentace (některý z fragmentů je ztracen)

12 - problém s parametrem (Parameter Problem) - směrovač nebo uzel zjistí problém s některým z parametrů hlavičky; zpráva obsahuje číslo oktetu ve kterém byl problém zjištěn

13 - požadavek na timestamp (Timestamp Request)

14 - odpověď timestamp (Timestamp Reply)

15 - požadavek na informaci o síti (Information Request)

16 - odpověď informace (Information Reply)

17 - požadavek na masku (Address Mask Request)

18 - odpověď masky (Address Mask Reply)

Kombinace ICMP zpráv 0 a 8 (Echo Request a Echo Reply) je známa jako Ping. Jde o jednoduchý testovací mechanismus pro zkoušení dostupnosti uzlu.

Kombinace ICMP zpráv 13 a 14 (Timestamp Request a Timestamp Reply) zajišťuje jednoduchý mechanismus pro zjišťování charakteristik zpoždění při průchodu paketu sítí. Zdrojový uzel vloží do datagramu časovou značku a odešle jej jako Request. Cílový uzel vloží časovou značku při přijetí datagramu i při jeho odesílání a odešle jej jako Reply.

Kombinace ICMP zpráv 15 a 16 (Information Request a Information Reply) zajišťuje jednoduchý mechanismus pro zjišťování adresy sítě do níž je uzel připojen. Požadavek odchází s nulami ve zdrojovém i cílovém adresním poli. Odpověď přichází se specifikovanou adresou.

Kombinace ICMP zpráv 17 a 18 (Address Mask Request a Address Mask Reply) zajišťuje jednoduchý mechanismus pro zjišťování masky sítě do níž je uzel připojen.

Code - rozšiřuje informaci nesenou v poli Type; uvádím příklad pro typ 3 (Destination Unreachable)

0 – nedosažitelná síť (network unreachable)

1 - nedosažitelný uzel (host unreachable)

2 - nedosažitelný protokol (protocol unreachable)

3 – nedosažitelný port (port unreachable)

4 - nedosažitelná síť (network unreachable)

5 – nutná fragmentace, ale není povolena

6 – neznámá cílová síť (destination network unknown)

Checksum - kontrolní součet celé ICMP zprávy

Message Dependant- u většiny typů ICMP zpráv není použito, je určeno pro budoucí rozšíření a musí být vyplněno nulami

Information - pole je proměnné délky; pro většinu ICMP zpráv obsahuje IP hlavičku a prvních 64 bitů datového pole datagramu, který ICMP zprávu vyvolal.