IP nové generace
IP-datagram verze 6 se skládá
z čtyřicet bajtů dlouhého základního záhlaví následovaného rozšířeními.
Čtyřicet bajtů základního záhlaví se může zdát hodně, ale je třeba si uvědomit,
že jen IP-adresy odesílatele a příjemce zaberou 32 bajtů.
Obr. 8.1 Základní záhlaví IP-datagramu verze 6
Pole verze IP obsahuje hodnotu 6 pro IP-protokol vrze 6.
Pole třída dat
se skládá ze čtyř bitů, tj. nabývá hodnoty 0 až 15. Specifikuje přenášená
data pro případ rozhodování v okamžiku zahlcení sítě. V okamžiku zahlcení
musí směrovač IP-datagramy zahazovat. V tomto poli se specifikuje, které
IP-datagramy je možné zahodit dříve než jiné.
Interval 0-15 je rozdělen na dvě části:
-
0-7 je určeno pro klasický provoz:
0 – nespecifikovaná data
1 – provoz na pozadí (např. news)
2 – automatický provoz (např. mail)
4 – uživatelem (člověkem) prováděné velké přenosy dat (např. ftp)
6 – interaktivní provoz (např. telnet, X-windows)
7 – řízení sítě (např. směrovací protokoly, SNMP)
-
8-15 je určeno pro přenosy v reálném čase (např. audio). Datagramy s nižší
hodnotou si uživatel přeje zahodit dříve než datagramy s vyšší hodnotou.
To však platí pouze v intervelu 8-15, protože intervaly 0-7 a interval
8-15 se zpracovávají odděleně.
Pole idedntifikace toku dat spolu s adresou odesilatele jednoznačně
identifikuje jeden dílčí tok dat v Internetu. Doposud se směrování provádělo
výhradně na základě adresy příjemce. Nevýhodou směrování v Internetu je,
že jednotlivé IP-datagramy se dopravují samostatně, tj. pokud Internetem
prochází tok IP-datagramů mezi dvěma aplikacemi, pak směrovače na cestě
řeší směrování pro každý procházející datagram samostatně. Např. pokud
přenášíte několik MB dlouhý soubor, pak Internetem tečou tisíce datagramů.
Každý směrovač na cestě se musí zabývat každým z těchto datagramů samostatně.
Pokud nedojde ke změně v topologii sítě, pak pro tisíce datagramů směrovač
řeší stejnou úlohu se stejným výsledkem.
Pole délka dat specifikuje délku IP-datagramu bez základního
záhlaví. Jelikož je toto pole dlouhé 2 bajty, tak největší délka přenášeného
IP-datagramu může být 65 535 bajtů. Je však možné použít volbu ohromný
datagram v další hlavičce informace pro směrovače, která pak umožňuje odesílat
ještě větší datagramy.
Pole další hlavička specifikuje typ následující hlavičky.
Tab. 8.1 Typy dalších hlaviček v IP-datagramu verze 6
0 |
Informace
pro směrovače (Hop-by-Hop Header) |
4 |
IP-protokol |
6 |
Protokol TCP |
17 |
Protokol UDP |
43 |
Směrovací
informace (Routing Header) |
44 |
Záhlaví fragmentu (Fragment
Header) |
45 |
Protokol IRP |
46 |
Protokol RRP |
50 |
Bezpečnostní
hlavička (Encapsulating Security Payload) |
51 |
Autentizační
hlavička (Authentication Header) |
58 |
Protokol ICMP |
59 |
Další
hlavička již nenásleduje |
60 |
Jiná volba (Destination Options) |
Pole počet hopů v podstatě odpovídá položce TTL (doba života
datagramu) v IP verze 4. Využít jej lze především jedním z následujících
způsobů:
-
K zahazování zatoulaných datagramů. IP-datagramu je položka počet hopů
snižována při průchodu každým směrovačem. Po dosažení nuly je datagram
považován za zatoulaný a je zahozen.
-
K nalezení nejkratší cesty v Internetu (obdoba příkazu traceroute). Cílem
je vyhledat nejbližšího člena určitého adresného oběžníku. Nejprve se odešle
datagram jehož adresátem je adresný oběžník (multicast) s nastaveným polem
počet hopů na jedničku. Pokud se žádný člen neozve, pak se odešle datagram
s polem počet hopů nastaveným na dvojku atd.
Další hlavičky v IP-datagramu
Za základním záhlavím IP-datagramu
mohou následovat další hlavičky.
Obr. 8.2 Struktura IP-datagramu
verze 6, šipky vyjadřují návaznost jednotlivých hlaviček
Pole další hlavička v základním záhlaví ukazuje jaký typ dat (“jaká hlavička”)
následuje za základním záhlavím. Teoreticky může ukazovat již na TCP segment
nebo jiný protokol vyšší vrstvy. Avšak může také ukazovat na další rozšiřující
hlavičky IP-protokolu.
Informace pro směrovače
Tato hlavička obsahuje jednotlivé informace
(volby), které jsou určeny pro směrovače přepravující datagram. Každý směrovač,
který datagram předává se musí těmito volbami zabývat.
Obr. 8.3 Struktura jedné volby z hlavičky
informace pro směrovače
Volba se skládá ze pole typ dlouhého 1 B, pole délka dlouhého 1 B a pole
obsahující vlastní volbu. Pole typ se skládá z osmi bitů:
aabxxxxx
bity aa sdělují co má směrovač s datagramem udělat, když nerozezná tuto
volbu. Možnosti jsou:
00 – Pokud volbu nerozpoznáš, pak ji ignoruj a datagram zpracovávej
dále.
01 – Pokud volbu nerozeznáš, pak datagram zahoď a neprováděj žádné
další akce.
10 – Pokud volbu nerozeznáš, pak datagram zahoď a informuj o tom odesilatele
protokolem ICMP.
11 – Pokud volbu nerozeznáš, pak datagram zahoď a v případě že datagram
není adresován adresnému oběžníku, tak o tom informuj protokolem ICMP odesilatele.
Bit b sděluje, zda-li může směrovač tuto volbu změnit:
0 – Volba se nesmí změnit.
1 – Volba se může změnit.
Tabulka 8.2 uvádí některé volby. Volba výplň je dlouhá jeden bajt
se skládá pouze z typu (nula), pole délka a volba má prázdné.
Tab. 8.2 Některé volby z hlavičky informace pro směrovače
Typ desítkově |
Typ dvojkově |
Název |
Délka |
Hodnota v poli délka |
0 |
00000000 |
Výplň dlouhá 1 bajt |
1 |
není |
1 |
00000001 |
Výplň dlouhá n bajtů |
2 + n |
n |
194 |
11000010 |
Ohromný datagram |
2 + 4 |
4 |
Výplně jsou určeny pro zarovnání hlavičky na určitou délku. Volba
ohromný datagram využívá právě zarovnání. Tato volba musí totiž končit
na hranici čtyřbajtu (viz obr. 8.4).
Obr. 8.4 Volba délka
ohromného datagramu končící na hranici čtyřbajtu
Pokud je volba délka ohromného datagramu použita, pak délka datagramu v
základním záhlaví je nastavena na nulu a používá se délka uvedená v této
volbě. Zatímco v základním záhlaví jsou pro délku určeny 2 bajty (tj. datagram
může být dlohý až 64 KB), pak 4 bajty volby ohromný datagram umožňují délku
až 4 GB.
Směrovací informace
Hlavička směrovací informace používá tč. jedinou volbu (Typ=0), kterou
je explicitní směrování. Kdy odesilatel specifikuje IP-adresy směrovačů
přes které má být datagram dopravován (viz obr. 8.5).
Obr. 8.5 Volba explicitní
směrování
Obr. 8.6 Příklad koloběhu
IP-adres při explicitním směrování
Záhlaví fragmentu
Fragmentovat IP-datagramy verze 6 může pouze operační systém na straně
odesilatele. Směrovače, kterými datagram prochází na své cestě od odesilatele
k příjemci fragmentovat na rozdíl od IPv4 již nesmí.
Obr. 8.7 Záhlaví fragmentu
Na rozdíl od IP-protokolu verze 4 neobsahuje každý IP-datagram (např.
v základním záhlaví) identifikaci IP-datagramu. Identifikace IP-datagramu
je nutná pro fragmentaci, aby příjemce zjistil které fragmenty patří do
stejného datagramu. V IPv6 je identifikace datagramu pouze v dalším záhlaví,
tj. není součástí každého IP-datagramu.
Autentizační hlavička
Obr. 8.8 Autentizační
hlavička
Pomocí autentizační hlavičky odesilatel autentizuje data, tj. prokazuje,
že data odeslal on. Datagram je tak zabezpečen proti změně IP-datagramu
útočníkem i proti záměně celých IP-datagramů odesilatele za IP-datagramy
vložené útočníkem.
Bezpečnostní hlavička
Obr. 8.9 Bezpečnostní
hlavička
Bezpečnostní hlavička umožňuje přenášená data šifrovat. Musí to být
poslední hlavička IP-datagramu, protože data jsou již dále šifrována, tj.
nedostupná ke zpracování směrovačům dopravujícím IP-datagram.
Obr. 8.10 Bezpečnostní
brána
Bezpečnostní brány je praktické použít pro oddělení intranetu od
Internetu. Provoz v intranetu je možný nešifrovaný, kdežto provoz mezi
dvěma částmi firmy přes Internet se zabezpečí šifrováním.
Protokol ICMPv6
Podobně jako v případě IP-protokolu
verze 4 se pro signalizaci chybových stavů a pro diagnostiku používá protokol
ICMP, tak i v IPng se používá protokol ICMP. Protokol ICMP pro IP-protokol
verze 6 je specifikován RFC-2463.
Obr. 8.11 Struktura ICMP paketu
Tab. 8.3 Typy a kódy ICMP zpráv
Typ |
Kód |
Popis |
1 |
|
Nedoručitelný
IP-datagram (Destination Unreachable) |
|
0 |
Ve
směrovací tabulce neexistuje směr pro tuto adresu (no
route to destination) |
|
1 |
Spojení
s adresátem je administrativně uzavřeno (communication
with destination administratively prohibited) |
|
3 |
Nedosažitelná
adresa (address unreachable) |
|
4 |
Nedosažitelný
port (port unreachable) |
2 |
0 |
Příliš
velký datagram (Packet Too Big) |
3 |
|
Čas
vypršel (Time Exceeded) |
|
0 |
Dosažen
počet hopů (hop limit exceeded in transit) |
|
1 |
Vypršel
čas na sestavení IP-datagramu z jeho fragmentů (fragment
reassembly time exceeded) |
4 |
|
Chybný parametr (Parameter
Problem) |
|
0 |
Chybné pole v záhlaví (erroneous
header field encountered) |
|
1 |
Nepodporovaný
typ v poli další hlavička (unrecognized
Next Header type encountered) |
|
2 |
Nepodporovaná volba (unrecognized
IPv6 option encountered) |
128 |
0 |
Žádost
o echo (Echo Request) |
129 |
0 |
Echo (Echo
Reply) |
133 |
0 |
Žádost
o směrování (Router Solicitation) |
134 |
0 |
Oznámení
o směrování (Router Advertisement) |
135 |
0 |
Žádost
o linkovou adresu (Neighbor Solicitation) |
136 |
0 |
Oznámení o linkové adrese (Neighbor
Advertisement) |
137 |
0 |
Změň
směrování (Redirect Message) |
Typy ICMP zpráv se dělí na
dva intervaly:
-
Interval 0 až 127 což jsou chybové
zprávy.
-
Ivterval 128 až 255 což jsou
informativní zprávy.
Překlad IP-adres na linkové adresy
Na obrázku 8.12 chce stanice
A odeslat stanici B IP-datagram. Jenže IP-datagram musí být vložen do linkového
rámce. Stanice A sice zná IP-adresu stanice B (ta je 4800::1234:4321:123),
avšak pro vytvoření linkového rámce potřebuje také linkovou adresu stanice
B.
Obr. 8.12 Stanice A chce odeslat IP-datagram stanici
B
Pro zjištění linkové adresy svého souseda na lokální síti slouží dvě
ICMP zprávy:
-
Žádost o linkovou adresu, kterou stanice A žádá oběžníkem stanici B, aby
stanici A poskytla svou linkovou adresu.
-
Oznámení o linkové adrese, kterou stanice B poskytuje stanici A svou linkovou
adresu.
Obr. 8.13 Žádost o linkovou
adresu
Obr. 8.14 Oznámení o linkové adrese
Zjištění adresy směrovače na LAN
Pokud stanici nestačí komunikace pouze na LAN, pak pro komunikaci mimo
LAN musí znát adresu směrovače. Řečí směrovačů: stanice potřebuje získat
položku default do své směrovací tabulky. Směrovače v pravidelných
intervalech rozšiřují tuto informaci oběžníkem pro všechny počítače na
LAN (FF02::1) pomocí ICMP zprávy oznámení o směrování – viz obr. 8.15.
Obr. 8.15 Oznámení
o směrování
Obr. 8.16 ICMP zpráva
Žádost o směrování
Změň směrování
Situace je znázorněna na obr.
5.11. Na LAN je více směrovačů. Odesilatel posílá IP-datagram příjemci.
Jelikož ve směrovací tabulce nemá přímý směr přes směrovač 2, tak využije
položkud default, kterou
získal např. z ICMP zprávy oznámení o směrování a která ukazuje na směrovač
1. Směrovač 1 příjme datagram, ale je nucen jej stejným rozhraním předat
směrovači 2. Směrovač 1 to sice provede, ale neodpustí si o tom ICMP zprávou
změň směrování informovat odesilatel.
Odesilatel příjme zprávu změň směrování, ze které si vytvoří novou položku
do své směrovací tabulky, která ukazuje příjemce přímo přes směrovač 2.
ICMP zpráva změň směrování
je znázorněna na obr. 8.17. Na obrázku je také napsán hypotetický příkaz
route, kterým by se vložila příslušná položka do směrovací tabulky odesilatele.
Zajímavé je též pole kód,
které je 0 v případě, že adresátem ICMP zprávy je počítač a 1 v případě,
že adresátem je směrovač.
Obr. 8.17 Změň směrování
IP-adresa
IP-adresa je v
protokolu IPng šestnáctibajtová (128 bitů). Rozeznáváme tři typy adres:
-
Jednoznačná adresa síťového rozhraní (Unicast).
-
Anycast – adresa skupiny síťových rozhraní, IP-datagram adresovaný
adresou typu anycast bude doručen jednomu z těchto rozhraní.
-
Oběžník (Multicast)
Neexistuje zde všeobecný oběžník (Broadcast).
Zápis adresy
Používají se tři zápisy IP-adresy:
-
hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh, kde h je jedna šestnáctková číslice
(0 až F) reprezentující 4 bity adresy.
Příklad: ABCE:3:89AD:134:FEDC:E4D1:34:4321 (vedoucí nuly se nemusí
uvádět)
-
Zkrácený zápis pomocí zdvojené dvojtečky. Zdvojená dvojtečka se může
v adrese vyskytnout pouze jednou. Zdvojená dvojtečka nahrazuje libovolné
množství čtveřic nul.
Příklad:
Adresu 12A1:0:0:0:5:15:500C:44 je možné zkráceně zapsat jako 12A1::5:15:500C:44
Adresu 1234:0:0:0:0:0:0:14 je možné zkráceně zapsat jako 1234::14
Smyčku, tj. adresu 0:0:0:0:0:0:0:1 je možné zkráceně zapsat jako
::1
-
hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:d.d.d.d, kde poslední čtveřice je vyjádřena
obdobně jako u IP-adresy verze 4, tj. každý bajt je vyjádřen desítkovou
číslicí. Tato forma zápisu je vhodná v prostředí, kde se budou společně
používat IPv4 a IPv6.
Příklady:
::195.47.103.12
12::A54:147.123.25.4
Adresy sítí se zapisují obdobně jako u IPv4 jako prefix následovaný lomítkem
a počtem bitů tvořících adresu. Např. 80:1::1/64.
Tab. 8.4 Některé čísti
adresního prostoru IPng
0:0:0:0:0:0:0:0 |
Nespecifikovaná
adresa (nepoužívá se) |
0:0:0:0:0:0:0:1 |
Smyčka
(Loopback) |
… |
|
010/3 |
Jednoznačné
adresy přidělovávané poskytovatelům Internetu |
010
10000/8 |
IANA |
010 01000/8 |
RIPE
(Evropa) 10010002=4816 |
010 11000/8 |
ARIN
(Amerika) |
010 00100/8 |
APNIC
(Asie a Pacifik) |
010 11111/8 |
Testovací
blok adres (viz RFC-1897) |
… |
|
1111
1111/8 |
Oběžníky
(Multicasts) |
Oběžníky
Oběžníky mají prefix obsahující
v prvním bajtu samé binární jedničky, tj. šestnáctkově FF (viz obr. 1.18).
Obr. 8.18 Adresa oběžníku
Druhý bajt je rozdělen na poloviny. První polovina má významná pouze bit
T, který pokud má hodnotu 0, pak je oběžník přiřazen trvale, pokud má hodnotu
1, pak se jedná o dočasné přiřazení.
Druhá polovina druhého bajtu specifikuje rozsah skupiny tvořící oběžník.
Nabývá např. hodnot:
1 – oběžník v rámci lokálního uzlu,
2 – oběžník v rámci LAN,
5 – oběžník v rámci sítě,
8 – oběžník v rámci firmy,
E – globální oběžník.
Existují vyhrazené oběžníky, např.:
FFxx::1 – oběžník pro všechny stanice (počítače i směrovače)
FFxx::2 – oběžník pro všechny směrovače
FFxx::9 – oběžník pro všechny směrovače provozující protokol RIP
atd.
Konkrétně FF02::2 je oběžník určený všem směrovačům na LAN.
Jednoznačné adresy
RFC-2373 specifikuje alokaci adres. Avšak nyní se ukazuje, že se bude používat
mírně pozměněné schéma. Aktuálním materiálem je tč. materiál “IPv6 assigment
and allocation policy document (5th draft 16 April 1999)”, který
IP-adresu rozděluje do částí znázorněných na obr. 8.19.
Obr. 8.19 IP-adresa verze 6
Význam jednotlivých polí v IPv6-adrese je:
FP – první tři bity mají pro jednoznačnou alokovanou adresu hodnotu
010.
TLA ID (Top-Level Agregation Identifiers) – těchto 13 bitů je
spravováno IANA (nejvyšší autorita Internetu), která přiděluje tento prostor
regionálním IR (Internet Registry) – pro Evropu je IR organizace
RIPE se sídlem v Amsterodamu. RIPE má přiděleno prvních 8 bitů: 010 01000,
tj. RIPE spravuje všechny adresy, které mají v prvním bajtu hodnotu 10010002=4816.
sub-TLA - z těchto 13 bitů může RIPE přidělovat organizacím označovaným
jako TLA registry, které budou přidělovat adresy poskytovatelům Internetu.
Hodnota polí FP + TLA ID + sub TLA je přidělena konkrétnímu TLA registry.
NLA ID (Next Level Agregation) – těchto 13 bitů identifikuje
konkrétního poskytovatele Internetu.
SLA ID – 16 bitů, ze který kterých přiděluje poskytovatel adresní prostor
firmě. Nejmenší část adresního prostoru, která může být firmě přidělena
je /64.
DNS
Rozšíření a změny DNS spojené s IPv6 musí
být kompatibilní s existujícími aplikacemi. Rozšířením DNS pro IPng se
věnuje RFC-1886.
-
Věta typu AAAA
-
IPv4 používá pro překlad jména na IP-adresu
větu typu A. Pro IPv6 je zavedena obdobná věta typu AAAA. Rozdíl spočívá
v tom, že věta typu AAAA má v poli IP-adresa nikoliv čtyřbajtovou IPv4-adresu,
ale 32-bajtovou adresu IPv6.
-
Reverzní doména IP6.INT
-
Pro reverzní překlad je zavedena nová doména
IP6.INT (obdoba domény IN-ADDR.ARPA pro IPv4). IPv6-adresa je prvkem domény
IP6.INT. Zajímavý je zápis prvku domény IP6.INT. Jednotlivé bajty se opět
zapisují “pospátku”, ale nikoliv celé bajty ale poloviny bajtů. Polovina
bajtu je reprezentovaná jednou šestnáctkovou číslicí. Jednotlivé šestnáctkové
číslice se oddělují tečkou (tj. oddělovačem v doménovém jméně).
-