ICMPv6

Z Wikipedie, otevřené encyklopedie

ICMPv6 protokol (anglicky Internet Control Message Protocol Version 6) 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 (anglicky Internet Group Membership Protocol) a ARP (anglicky Address Resolution Protocol) a zároveň poskytuje mnohá zjednodušení zejména odstraněním zastaralých typů zpráv, které se již nepoužívají.

Úvod[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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:

  1. 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.
  2. 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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku ICMPv6 na anglické Wikipedii.

Externí odkazy[editovat | editovat zdroj]

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