Internet Protocol
Internet Protocol w wersji 4 zaprojektowany został w czasach, kiedy o komercyjnej, ogólnoświatowej sieci z dziesiątkami tysięcy podłączonych sieci lokalnych i milionami systemów komputerowych śnili tylko co odważniejsi wizjonerzy. Mechanizmy dostarczane przez IPv4 wydawały się wystarczające, zaś 32 bity przeznaczone na adresy dawały fantastyczną - jak na owe czasy - przestrzeń, ograniczoną nieco podziałem na klasy, który był związany z routingiem.
Na początku lat 90. zaczęto zastanawiać się nad protokołem, który podołałby nowym wyzwaniom - rozwojowi usług komercyjnych Internetu, gwałtownemu wzrostowi liczby abonentów, znacznemu skomplikowaniu routingu oraz przewidywanemu przesunięciu "środka ciężkości" transmisji na transmisję typu multicast. Pierwsze dokumenty zawierające propozycje nowej wersji IP pojawiły się w Internet Engineering Task Force w 1992, zaś w 1994 roku IETF (Internet Engineering Task Force) przyjął założenia dla Next Generation Internet Protocol (IPng).
Nagłówek IPv4
- Version - numer wersji protokołu IP = 4,
- IHL - długość nagłówka IP w 32-bitowych słowach (zazwyczaj 5),
- TOS - informacja dla QoS,
- Total Length - długość pakietu,
- TTL - czas życia pakietu wyrażony w etapach, które może pokonać,
- Protocol - rodzaj protokołu w polu danych.
Nagłówek IPv6
- Traffic Class (zwane niekiedy Prior) i Flow Label - pola przewidziane do oznaczania pakietów w ramach QoS,
- Payload Length - rozmiar pakietu,
- Next Header - zawiera informację o typie następnego nagłówka pojawiającego się w danych pakietu,
- Hop Limit - czas życia pakietu w etapach.
Protokół IPv6 zaprojektowano z myślą o ewolucyjnym rozwoju funkcjonalności IPv4. Przyjęto następujące założenia:
rozbudowa możliwości adresowania i trasowania - poprzez rozszerzenie rozmiaru adresu z 32 do 128 bitów z myślą o budowie bardziej złożonych hierarchii adresów, a także rozbudowę opcji w adresach typu multicast,
dodanie nowego typu adresów - anycast ("jeden z wielu"); odbiorcą datagramu adresowanego jako anycast jest pojedynczy host z grupy; przewidywane zastosowanie obejmuje nadmiarowe instalacje, np. styki sieci korporacyjnej z Internetem poprzez wiele routerów - w razie awarii jednego z nich pakiety zostałyby w transparentny sposób dostarczone routerowi zapasowemu,
uproszczenie formatu nagłówka - niektóre pola z nagłówka wersji 4 zostały usunięte lub potraktowane jako opcjonalne; ma to na celu zmniejszenie kosztu przetwarzania pakietu przez urządzenia sieciowe i narzutu zwią-zanego z transmisją nagłówków; pomimo czterokrotnego zwiększenia rozmiaru pól adresu rozmiar całego nagłówka wzrósł w stosunku do IPv4 dwukrotnie,
rozbudowanie pól opcjonalnych - brak ograniczeń rozmiaru, elastyczność w rozbudowie nagłówka o nowe opcje,
Quality-of-Service - możliwość oznaczania pakietów etykietami przynależności do różnych kategorii ruchu, np. wymagających wysokiego priorytetu przy transmisji,
możliwość rozszerzenia o mechanizmy uwierzytelniania i utajnienia treści.
Pomyślano również o dynamicznym zarządzaniu adresami IP - w wersji 6 dysponować będziemy protokołem konfiguracyjnym DHCPv6 lub określanym jako stateless configuration - można skonfigurować adres IP na podstawie adresu sprzętowego Media Access Control.
Zmiany widać od razu w nagłówku (patrz ramka). W wersji 6 ma on stałą długość. Z nagłówka wyeliminowano pole opcji o zmiennej długości i pole IHL, określające długość nagłówka. Jeśli pakiet ma zawierać dodatkowe opcje, mogą one znaleźć się w dodatkowym, osobnym nagłówku, wskazywanym przez Next Header.
Pole Next Header zastąpiło pole Protocol z IPv4. Jego zadaniem jest określenie typu nagłówka pojawiającego się po nagłówku IP stałej długości. Może to być nagłówek protokołu transportowego, tym samym określony zostaje rodzaj tegoż protokołu, może to być również opcjonalne rozszerzenie nagłówka IPv6. Dzięki temu mechanizmowi nagłówek pakietu IPv6 ma stałą długość, co zmniejsza czas jego przetwarzania przez routery. Opcjonalne pola wskazywane przez Next Header nie muszą być przetwarzane przez wszystkie pośredniczące routery - ich przetworzeniem mogą być obarczone np. wyłącznie końcowe urządzenia.
W IPv4 obecność w nagłówku pakietu IP jakichkolwiek opcji zmuszała wszystkie przekazujące pakiet routery do analizy opcji. Mechanizm ten pozwala również na swobodną, nielimitowaną niczym - poza oczywiście ekonomiką i zdrowym rozsądkiem - rozbudowę pól opcjonalnych. Do tej pory zdefiniowano opcjonalne rozszerzenia:
routingu,
fragmentacji i reasemblacji pakietów,
uwierzytelniania i spójności,
zagnieżdżania (hermetyzacji) i poufności,
specjalnych opcji wymaganych na wszystkich etapach trasowania,
opcji przetwarzanych w miejscu przeznaczenia.
Format adresu IPv6 unicast
- REGISTRY ID - identyfikator organizacji przydzielającej adresy IP,
- PROVIDER ID - identyfikator dostawcy usług internetowych (ISP),
- SUBSCRIBER ID - identyfikator klienta ISP,
- SUBNET ID - identyfikator podsieci logicznej,
- INTERFACE ID - identyfikator interfejsu sieciowego w podsieci.
Rozszerzenie pola adresowego do 128 bitów wymusiło przygotowanie nowej notacji, czytelnej przy tej długości adresu. Dotychczasową - cztery, oddzielone kropkami, reprezentowane dziesiętnie bajty - zastąpił ciąg ośmiu szesnastobitowych liczb zapisanych w systemie szesnastkowym, opcjonalnie oddzielonych dwukropkiem, np.:
FF01:0:0:0:456:FEDC:0:88
Jak łatwo zauważyć, wiodące zera są w powyższym zapisie pomijane. Możliwe jest pominięcie tych zer za pomocą operatora ::, ale tylko raz w obrębie pojedynczego adresu - jak w poniższym przykładzie:
FF01::456:FEDC:0:88
Bardziej skomplikowana jest nie tylko notacja. Większa przestrzeń adresowa oznacza możliwość wydzielenia specjalnych klas adresów. Samych adresów typu unicast jest kilka - związane z dostawcami usług internetowych (patrz ramka), neutralne adresy unicast, adresy związane z transmisją protokołu IPX, adresy związane z przejściem z protokołu IPv4, dwa typy adresów lokalnych. Istnieje możliwość zdefiniowania jeszcze innych typów adresów unicast.
Z punktu widzenia normalnej, komercyjnej eksploatacji IPv6 najbardziej interesujące wydaje się adresowanie unicast związane z dostawcami usług internetowych. Struktura adresu nie jest sztywno podzielona na klasy, jak to początkowo miało miejsce w wersji 4. Podział adresu unicast na części jest płynny i związany raczej z kolejnymi podmiotami organizacyjnymi odpowiedzialnymi za podział puli adresowej, w niewielkim zaś stopniu zdeterminowany aspektami technicznymi, jak np. wydzielenie logicznych podsieci IP w jednym medium transmisyjnym.
Zadeklarowano istnienie dwóch rodzajów adresów lokalnych: Link-Local-Use (przewidziane do adresowania pojedynczych łączy lub automatycznej konfiguracji interfejsu sieciowego) oraz Site-Local-Use. Przeznaczenie tych adresów jest zbliżone do adresowych pól "prywatnych" w wersji 4 protokołu IP - służą do łączności wewnątrz organizacji, niezależnej od przydziału autoryzowanych adresów IP.
Adresy związane z przejściem z protokołu wersji 4 zachowują prefiks składający się z zer i adresu IP wersji czwartej zawartego w 32 ostatnich bitach adresu wersji 6. Adresy tej postaci przypisywane są systemom komputerowym stanowiącym końcówki tuneli sieci 6bone - szkieletowej sieci operacyjnej protokołu IPv6. Istnieje też druga wersja adresów, przeznaczona do reprezentowania w sieci IPv6 komputerów uznających jedynie IPv4 - różni się on od opisywanego wyżej ustawieniem jedynek na szesnastu bitach poprzedzających adres IP wersji 4.
Nowym typem adresowania jest anycast. Wybór jednego z wielu interfejsów sieciowych, do których zaadresowany jest pakiet, odbywa się na podstawie odległości określanej protokołami trasowania - wybierany jest "najbliższy" docelowy interfejs.
Dużą wagę przywiązano do adresowania multicast. Adres jest zarazem nośnikiem informacji o opcjach. Pierwsze 8 bitów adresu multicast zawiera wartość FF. Potem następuje czterobitowe pole flag - jeśli ostatni, najmłodszy bit zawiera wartość 0, dany adres ma charakter przejściowy; ustawienie tegoż bitu określa adres jako stały. Następne cztery bity określają zakres grupy multicast. Zdefiniowano następujące wartości ograniczające zasięg:
1 - do węzła
2 - do fizycznego medium,
5 - do lokalizacji,
8 - do organizacji,
E - zasięg globalny.
1