ICMPv6 protokol () nebo také ICMP pro IPv6 je nová verze ICMP protokolu a je nedílnou součástí architektury IPv6, která musí být plně podporována všemi implementacemi na všech uzlech. ICMPv6 kombinuje funkce, které byly dříve rozděleny mezi více protokolů, jako třeba ICMP, IGMP () a ARP () a zároveň poskytuje mnohá zjednodušení zejména odstraněním zastaralých typů zpráv, které se již nepoužívají.

Úvod IPv6 je novou verzí IPv4 a používá ICMP definovaný pro IPv4 v RFC 792 (někdy také označovaný jako ICMPv4) ovšem s velkým počtem změn. Například v sobě obsahuje také IGMP.

Tento článek popisuje formát sady kontrolních zpráv, které jsou využívány v ICMPv6, ale nepopisuje procedury pro jejich používání a zpracování k vytváření dalších funkcí, jako například zjištění MTU na cestě datagramu (popsané v RFC 1981). Stejně jako tato funkce jsou i další funkce ICMPv6 popsané v RFC.

ICMPv6 ICMPv6 je víceúčelový protokol a je určen pro ohlašování chyb při přenosu paketů, vytváří diagnosu přenosu, umožňuje vyhledávání dalších uzlů a přenáší informace pro rozeslání multicastových zpráv. Pro tyto účely se dělí do dvou kategorií: chybové zprávy (error messages) a informační zprávy (information messages). ICMPv6 zprávy jsou přenášeny uvnitř IPv6 datagramů v jejich rozšířené hlavičce. ICMPv6 také podporuje funkce vyšších vrstev internetových protokolů.

Formát zprávy Formát ICMPv6 zprávy je Typ, Kód a Kontrolní součet. 8bitový blok Typ určuje typ zprávy. Pokud má nejvyšší bit tohoto bloku hodnotu 0, pak se jedná o chybovou zprávu (rozsah těchto zpráv je tedy 0 – 127). Pokud je tato hodnota 1, jedná se o zprávu informační (rozsah 128 – 255). Další 8bitový blok Kód závisí na typu zprávy a používá se jako další úroveň rozlišení zpráv. Třetí část Kontrolní součet slouží k odhalení chyb při přenosu samotné ICMP zprávy.

0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Typ | Kód | Kontrolní součet | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

+ Tělo zprávy +

+---------------------------------------------------------------+

Typy ICMP zpráv Type Význam 0 Rezervováno 1 Cíl nedostupný 2 Paket příliš velký 3 Čas překročen 4 Chybný parametr 100 Soukromé experimenty 101 Soukromé experimenty 102-126 Nepřiřazeno 127 Rezervováno pro rozšíření chybových zpráv 128 Požadavek na odezvu 129 Odezva 130 Dotaz na členství ve skupině 131 Zpráva o členství ve skupině 132 Změna členství ve skupině 133 Žádost routeru 134 Oznámení routeru 135 Žádost souseda 136 Oznámení souseda 137 Přesměrování 138 Přečíslování routerů 139 Dotaz na informace o uzlu 140 Odpověď s informacemi o uzlu 141 Výzva inverzního objevování sousedů 142 Ohlášení inverzního objevování sousedů 143 Ohlášení členství ve skupině (MLDv2) 144 Žádost o adresy domácích agentů 145 Odpověď s adresami domácích agentů 146 Žádost o mobilní prefix 147 Ohlášení mobilního prefixu 148 Žádost o certifikační cestu 149 Ohlášení certifikační cesty 150 Pro experimentální mobilní protokoly typu Seamoby 151 Ohlášení skupinového směrovače 152 Výzva skupinovému směrovači 153 Ukončení skupinového směrovače 154 Rychlé předávání 155 Řídicí zpráva RPL 156 Aktualizace lokátoru ro ILNPv6 157 Požadavek na duplicitní adresu 158 Potvrzení duplicitní adresy 159 Řídicí zpráva MPL 160–199 Nepřiřazeno 200 Soukromé experimenty 201 Soukromé experimenty 255 Rezervováno pro rozšíření informačních zpráv

Určování adresy odesílatele zprávy Síťový uzel, který posílá ICMPv6 zprávu, je zodpovědný za určení IPv6 adresy odesílatele a příjemce a to ještě dříve, než je vypočten kontrolní součet. Pokud má uzel více než jednu unicastovou adresu a je tedy potřeba zvolit jednu z nich, musí být adresa odesílatele určena podle následujících pravidel:

Pokud je zpráva odpovědí na zprávu zaslanou na jednu z unicastových adres uzlu, jako adresa odesílatele odpovědi musí být použita právě tato adresa, pro kterou byla původní zpráva určena. Pokud je zpráva odpovědí na zprávu zaslanou na jinou adresu, jako je multicastová adresa, anycastová adresa, kterou zahrnuje uzel, nebo unicastová adresa, která nenáleží uzlu.

Jako adresa odesílatele musí být použita některá z unicastových adres uzlu. Adresa by měla být vybrána na základě pravidel, která se používají při určování odesílatele jakéhokoli jiného paketu odesílaného uzlem podle adresy příjemce paketu. Může být však vybrána i jiným způsobem, který povede k vyšší srozumitelnosti doručované zprávy na straně příjemce.

Výpočet kontrolního součtu zprávy Kontrolní součet je 16bitový jednotkový doplněk součtu jednotkového doplňku úplné ICMPv6 zprávy začínající blokem Type, před který se předřazuje "pseudo-hlavička", jak je specifikováno v IPv6. Hodnota NextHeader použitá v "pseudo-hlavičce" je 58. (Poznámka: zahrnutí pseudo-hlavičky v ICMPv6 kontrolním součtu je změna oproti IPv4; použijte článek o IPv6 pro odůvodnění této změny.) Pro výpočet kontrolního součtu, blok Checksum je nastaven na nulu.

Přenos ICMPv6 zprávy Uzel odesílající ICMP zprávu určuje IPv6 adresu odesílatele a příjemce pro ICMPv6 zprávu. Zvláštní pozornost je nutné věnovat hlavně výběru adresy odesílatele. Pokud má uzel více než jednu unicastovou adresu, musí být adresa odesílatele zprávy určena následovně: Pokud zpráva je odpovědí na zprávu zaslanou na některou z unicastových adres uzlu, adresa odesilatele odpovědi musí být stejná jako adresa, pro kterou byla zpráva určena. Pokud zpráva je odpovědí na zprávu zaslanou na některou z multicastových nebo anycastových adres uzlu, adresa odesilatele odpovědi musí být unicastová adresa náležící rozhraní, na kterém byl multicastový nebo anycastový paket přijat. Pokud zpráva je odpovědí na zprávu zaslanou na adresu, která nenáleží uzlu, adresa odesílatele by měla jednoznačně určovat chybu (například unicastová adresa náležící rozhraní, na kterém odesíláni selhalo). V ostatních případech musí routovací tabulky uzlu určit, které rozhraní má být použito k přenosu zprávy ke svému cíli a unicastová adresa tohoto rozhraní musí být použita jako adresa odesílatele.

Když ICMPv6 uzel přijme paket, musí provést akci, která záleží na typu přijaté zprávy. ICMPv6 protokol musí omezovat počet chybových zpráv zaslaných na stejné místo určení, aby zamezil přetížení sítě. Například, když uzel pokračuje v odesílání chybových paketů, ICMP signalizuje chybu v prvním paketu a pak to dělá opakovaně v přednastavených minimálních intervalech a nebo podle přednastaveného maximálního vytížení sítě. ICMP chybová zpráva nesmí být nikdy odeslána jako odpověď na jinou ICMP chybovou zprávu.

Reference

Externí odkazy

Internet Control Message Protocol v 6 – parametry http://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml

Kategorie:Internetové protokoly