technik informatyk

Adresy protokołów IP ver. 6

Początkowo nowe wersje protokołu IP określano mianem IPnG (IP next Generation). Pierwsza propozycja modyfikacji istniejącego standardu IPv4 (RFC 791) została zgłoszona do IAB (Internet Activities Board) już w 1992 r. Była oparta na bezpołączeniowym protokole sieciowym CLNP (Connectionless Network Protocol). Przez następne dwa lata zgłaszano kolejne propozycje modyfikacji IP, m.in. TUBA, CATNIP czy SIPP.

CATNIP (Common Architecture for the Internet), będący następcą TP/IX, zakładał scalenie protokołów IPv4, Novell IPX i CLNP w jeden. W swoim nagłówku protokół ten zawierał informacje wykorzystywane przez każdy z trzech poprzednich.

TUBA (TCP and UDP with Bigger Addresses) wykorzystywał protokół CLNP i zakładał współistnienie różnych protokołów.

Ostatecznie, jako protokół dla przyszłych sieci, zatwierdzono SIPP (Simple IP Plus), jednak z pewnymi modyfikacjami. Zwiększono w nim przestrzef adresową z wstępnie proponowanych 64 do 128 bitów. Nieco póśniej protokół ten został nazwany IPv6 (IP Version 6). Stosując chronologię, powinien on otrzymać kolejny numer, tj. IPv5. Jednak nazwa ta była już zarezerwowana dla eksperymentalnego protokołu czasu rzeczywistego ST (Internet Stream Protocol). W 1995 r. IETF opublikowało pierwsze wytyczne dla protokołu IPv6 - RFC 1752, a rozwiązania programowe pojawiły się rok póśniej. Obecnie standard IPv6 definiuje RFC 2460, który zastąpił wcześniejszą specyfikację RFC 1883.

Zalety IPv6

IPv6 zapewnia większą spójność infrastruktury sieciowej, uproszczenie zasad adresowania, odporność na błędy oraz gotowe mechanizmy bezpieczefstwa.

Do podstawowych korzyści, jakie przynosi IPv6, należą:

  • adres IP o długości 128 bitów, a przez to powszechna dostępność wymaganej liczby unikalnych adresów i duża skalowalność podsieci - niepotrzebna staje się translacja adresów NAT (Network Address Translation);
  • brak podziału przestrzeni adresowej na klasy;
  • uproszczona struktura nagłówka, umożliwiająca jego szybszą obsługę w urządzeniach sieciowych;
  • wbudowane szyfrowanie i uwierzytelnianie, oparte na mechanizmie zgodnym z IPSec;
  • możliwość automatycznej konfiguracji interfejsów sieciowych typu Plug-and-Play oraz autokonfiguracji po awarii np. serwera DHCP;
  • wsparcie dla urządzef mobilnych (Mobile IP);
  • mechanizmy rozgłoszeniowe o różnym zasięgu (Multicasting, Unicasting, Anycasting);
  • hierarchiczna organizacja adresów w sieci, ułatwiająca ruting;
  • mechanizmy wykrywania sąsiadów przez rutery (Neighbour Discovery)

Olbrzymia liczba adresów gwarantuje unikalny w skali globu adres każdemu urządzeniu. Znika w ten sposób potrzeba stosowania translacji adresów NAT. Tym samym zostały zlikwidowane wszelkie problemy związane z przesyłaniem przez NAT różnych protokołów, wrażliwych na zmianę nagłówka IP, np. IPSec czy VoIP.

W nowym IP zrezygnowano z podziału na klasy, który marnotrawił znaczną część możliwych adresów. IPv4 rozróżniał pięć klas odpowiadających sieciom o różnej liczbie hostów. Do zaadresowania 256 komputerów potrzebowano dwóch adresów klasy C (508 możliwych adresów) lub jednego klasy B (65 533).

Format nagłówka IPv6

Nowa wersja protokołu IP przyniosła zwiększenie rozmiaru nagłówka, przy jednoczesnym zmniejszeniu ilości przenoszonych informacji. W IPv4 podstawowy nagłówek ma długość 20 bajtów, ale jest do niego dodawane pole „opcji” o zmiennej długości. Nagłówek IPv6 ma stałą długość 40 bajtów. Zawiera dwa adresy IPv6 - śródłowy i docelowy o długości 16 oktetów, które są poprzedzone 8 oktetami informacji sterujących. W IPv4 po 12 bajtach danych sterujących są umieszczane dwa 4-bajtowe adresy IPv4, a zaraz za nimi pole „opcje” o zmiennej długości. Odchudzenie pakietów w IPv6v - poprzez eliminowanie ilości informacji sterujących i pola „opcje” - pozwoliło na przyspieszenie obsługi nagłówków. Informacje zapisywane dotychczas w polach usuniętych z nagłówka można umieszczać w „rozszerzeniach nagłówka” (Extension Header), zwanych także „nagłówkami opcjonalnymi”. W porównaniu z IPv4 w wersji IPv6 usunięto 6 pól, zmieniono nazwę pozostałych oraz dodano nowe. Struktura nagłówka została podzielona na pola 64-bitowe, co pozwala korzystać z zalet 64-bitowych procesorów.

Pola nieprzeniesione z IPv4

Suma kontrolna nagłówka (Header Checksum). Jej likwidacja pozwoliła na zwiększenie szybkości przetwarzania pakietów. Dotychczas każdy ruter leżący na drodze pakietu wyliczał sumę kontrolną CRC (Cyclic Redundancy Check) i porównywał ją z wartością zapisaną w nagłówku IPv4. Poprawność przesyłanych danych nadal jest kontrolowana, gdyż większość protokołów warstwy łącza (Ethernet, ATM, FDDI, PPP) oblicza własne CRC i prowadzi kontrolę błędów. Jakość wykrywania przekłamaf w warstwie łącza jest na tyle zadowalająca, że można pominąć kontrolę w warstwie sieci. Sumy kontrolne są wyznaczane także przez protokół warstwy transportowej TCP. Mechanizm sum kontrolnych jest wbudowany również w UDP, jednak domyślnie jest wyłączony.

Położenie fragmentu - przesunięcie (Fragment Offset). W przypadku ponadgabarytowych pakietów określał on, gdzie w oryginalnym pakiecie powinien być umieszczony przenoszony fragment. W sieciach IPv6 fragmentacja jest nadzorowana przez nadawcę za pomocą protokołu wyznaczania maksymalnej wielkości pakietu dla danej ścieżki (Path Maximum Transmission Unit Discovery Protocol). Oszczędzono w ten sposób pracy ruterom, które dotychczas były za to odpowiedzialne.

Opcje (Options). Pole to było wykorzystywane sporadycznie. Informacje w nim przenoszone można teraz umieszczać w „rozszerzeniu nagłówka” (Extension Header).

IHL (Internet Header Length). Pole to zawiera informację o długości nagłówka IP, wyrażoną w słowach 32-bitowych. Jego minimalna wartość wynosi 5 (5 x 32 bity = 20 bajtów). Ponieważ nagłówki IPv6 mają stały rozmiar 40 bajtów, pole to stało się bezużyteczne.

Pozostałe usunięte pozycje to identyfikacja i znaczniki (flagi).

Zawartość nagłówka IPv6

Numer wersji protokołu (Version, 4 bity), dla IPv6 równy 6 (0110).

Klasa ruchu (Traffic Class, 8 bitów). Zawiera znacznik określający tryb obsługi (priorytet) pakietu przez rutery potrafiące rozróżniać ruch DiffServ (Differentiated Services). Pozwala to na zapewnienie odpowiedniej jakości usług QoS (Quality of Service) przesyłania danych. Protokół DiffServ nie jest jeszcze powszechnie stosowany. Pole to pełni funkcję analogiczną do „typu usługi” z IPv4.

Etykieta przepływu (Flow Label, 20 bitów). Może być wykorzystywana do oznaczania określonego strumienia pakietów w celu odróżnienia ich na poziomie warstwy sieciowej.

Pozwala to ruterowi na identyfikowanie określonego strumienia i jego specjalne traktowanie, bez potrzeby szczegółowego wglądu w pakiet. Jest to również wykorzystywane do rezerwacji określonych zasobów sieciowych. Aplikacja śródłowa może łatwo różnicować parametry przesyłu zaszyfrowanych pakietów IPSec, by zapewnić odpowiednią jakość obsługi QoS na poziomie warstwy IP. Ze względu na to, że pakiety są szyfrowane, niemożliwe jest określanie ich zawartości podczas transmisji w sieci. Metoda ta jest obecnie w fazie eksperymentalnej. Jeżeli etykieta nie jest obsługiwana przez węzły pośrednie, wtedy pole powinno być wypełnione zerami.

Rozmiar ładunku (Payload Length, 16 bitów). Określa liczbę bajtów przenoszoną w pakiecie, nie licząc nagłówka. Jeżeli jego zawartość jest większa niż 64 KB, zawiera ono zero, a rzeczywista długość jest zapisana w rozszerzeniu nagłówka. Pełni funkcję podobną jak pole „całkowita długość” (Total Length) w IPv4.

Następny nagłówek (Next Header, 8 bitów). Informuje o typie danych umieszczonych po podstawowym nagłówku. Mogą to być różne rodzaje nagłówków opcjonalnych lub bezpośrednio pakiety warstwy transportowej (TCP, UDP). Pole to jest również zawarte w każdym nagłówku opcjonalnym. Jest podobne do pola „protokół” z IPv4. Podstawowym rodzajom nagłówków opcjonalnych przypisano następujące wartości: 41 - nagłówek IPv6, 43 - nagłówek rutingu, 44 - nagłówek fragmentacji, 51 - nagłówek uwierzytelniania, 0 - nagłówek hop-by-hop, 58 - nagłówek ICMPv6, 6 - nagłówek TCP, a 17 - UDP. Wartość 59 oznacza, że nie ma już w pakiecie innych nagłówków.

Liczba przejść przez rutery (Hop Limit, 8 bitów). Odpowiada polu TTL (Time To Live) z nagłówka IPv4. Pole to definiuje maksymalną liczbę ruterów (hops), przez które może przejść dany pakiet. Aby zapobiec „błąkaniu się” w sieci niepotrzebnych pakietów, każdy ruter jest zobligowany do zmniejszania o jeden wartości zapisanej w tym polu. Gdy osiągnie ono wartość zero, datagram jest kasowany. Maksymalna liczba etapów dla sieci wynosi 255 (wartość ograniczona 8 bitami tego pola). Ponieważ w IPv6 pominięto sumę kontrolną, rutery nie muszą po zmniejszeniu liczby przeskoków wyznaczać na nowo sumy kontrolnej. To również oszczędza im pracy.

Adres śródłowy (Source Address, 128 bitów) jednoznacznie identyfikuje nadawcę pakietu.

Adres docelowy (Destination Address, 128 bitów) wskazuje odbiorcę pakietu. Jeżeli w pakiecie jest zawarty opcjonalny nagłówek rutingu, wtedy adres ten może nie wskazywać kofcowego odbiorcy pakietu, lecz adres węzła pośredniego.

3adunek pakietu IPv6 stanowią nagłówki dodatkowe oraz jednostka danych (pakiet) warstwy wyższej PDU (Protocol Data Unit).

Rozszerzenie nagłówka IPv6

W protokole IPv6 usunięto z nagłówka pole opcje, a informacje w nim zawarte przeniesiono do nagłówków opcjonalnych. Nagłówki te są ze sobą powiązane w szereg za pomocą pola „następny nagłówek”, wskazującego kolejny nagłówek opcjonalny. Wybieg ten pozwolił na przyspieszenie przetwarzania pakietów i ich przekazywania (forwarding) pomiędzy węzłami.

Nagłówki te zajmują 64 bity, a ich maksymalna liczba nie jest określona. Muszą one występować w ustalonym porządku:

Opcje skoku za skokiem (Hop-by-Hop Options Header). Ten nagłówek musi być umieszczany jako pierwszy po nagłówku podstawowym IPv6, ponieważ jest jedynym nagłówkiem przetwarzanym przez każdy węzeł pośredni. Służy on m.in. do informowania o rodzaju przenoszonej ramki.

Jest zbudowany z trzech pól:

  • następny nagłówek (Next Header),
  • rozmiar nagłówka dodatkowego (Header Extension Length)
  • pola opcji zawierającego ustawienia.

Opcje są umieszczane wg formatu TLV, tzn. typ-długość-wartość (Type-Length-Value). Wartość 194 informuje, że to ponadgabarytowa ramka Jumbo lub tzw. Jumbogram (Jumbo Payload), której rozmiar przekracza 65 535 bajty. Górną granicę przenoszonego ładunku wyznacza maksymalna wartość, dająca się zapisać na 32 bitach długości pola Jumbo (Jumbo Payload Length), tj. ok. 4,294 GB. Opcja o wartości 5 ostrzega rutery (Router Alert) o tym, że zawartość pakietu wymaga dalszego przetwarzania. Jest wykorzystywana przez protokół rezerwacji zasobów RSVP (Resource ReSerVation Protocol) oraz podczas wykrywania odbiorców transmisji grupowej MLD (Multicast Listener Discovery).

Opcje miejsca docelowego (Destination Options Header). Ten nagłówek jest stosowany do przenoszenia informacji opcjonalnych tylko dla wyznaczonych węzłów. Jeżeli występuje po nagłówku Hop-by-Hop, wówczas jest przetwarzany przez węzeł docelowy oraz wszystkie wskazane w nagłówku Ruting. Może się również zdarzyć, że zostanie on umieszczony za nagłówkiem ESP i wtedy jest przetwarzany wyłącznie przez węzeł docelowy. Jego format jest identyczny z opisanym powyżej nagłówkiem typu Hop-by-Hop. Jest przydatny m.in. dla mechanizmów mobilnego IP.

Nagłówek Ruting (Routing Header) służy do ustawiania trasy rutingu przez nadawcę pakietu IP. Stosowany jest też na potrzeby mobilnego IP. Zawiera listę adresów pośrednich na drodze pakietu do celu.

Składa się z czterech wartości:

  • następny nagłówek (Next Header),
  • długość nagłówka dodatkowego (Header Extension Length),
  • typ nagłówka rutingu (Routing Type),
  • liczba węzłów pośrednich, do których pakiet powinien jeszcze dotrzeć (Segments Left),
  • lista pośrednich adresów IPv6 od 1 do n (Address).

Gdy pakiet dotrze do węzła wskazanego na liście adresów pośrednich, wówczas nagłówek Ruting jest przetwarzany. W polu „adres docelowy” nagłówka podstawowego IPv6 zostaje wstawiony adres kolejnego węzła pośredniego z listy, a wartość „Segments Left” zostaje zmniejszona o jeden. Rozmiar tego nagłówka jest zmienny i zależy od liczby wpisanych adresów pośrednich.

Nagłówek Fragmentacja (Fragment Header). Pakiety zawierające dane warstw wyższych, których rozmiar przekracza maksymalną wielkość przesyłki MTU (Maximum Transmission Unit), jaka możne być przetransportowana daną ścieżką, są dzielone na mniejsze. IPv6 nie wspiera fragmentacji przeprowadzanej przez rutery. Podziału pakietów może dokonać jedynie węzeł śródłowy. Korzysta on z identycznego algorytmu jak ten stosowany w IPv4. Do każdego wydzielonego fragmentu jest „dodawany nagłówek fragmentacja”. Zawiera on pola: następny nagłówek, przesunięcie fragmentu (Fragment Offset), określające miejsce w oryginalnym pakiecie, informacje, czy występują jeszcze jakieś fragmenty (More Fragments flag), oraz unikalny identyfikator pakietu (Identification).

Źródłowy pakiet IPv6 składa się z części niepodzielnej (zawierającej informacje niezbędne podczas transportu pakietu) oraz podzielnej (wykorzystywanej w trakcie scalania fragmentów). Część niepodzielna pochodząca z oryginalnego pakietu jest przetwarzana przez każdy węzeł pośredni. Jej skład stanowią nagłówki: IPv6, opcji Hop-by-Hop, opcji miejsca docelowego oraz rutingu. Część podzielna jest odczytywana dopiero w węźle końcowym. Zawiera nagłówki przeznaczone wyłącznie dla odbiorcy pakietu (np. uwierzytelniania, enkapsulujący ładunek bezpieczny) oraz nagłówek i dane z warstw wyższych.

Nagłówek Uwierzytelnianie AH (Authentication Header) zapewnia uwierzytelnianie i integralność przesyłanych pakietów IP oraz zabezpiecza przed ponownym wysłaniem tych samych danych. Jego format i funkcje definiuje RFC 2402. Nie zapewnia jednak poufności transmitowanych danych - funkcję tę realizuje nagłówek ESP.

W jego skład wchodzą pola: następny nagłówek, rozmiar ładunku, wskaśnik parametrów bezpieczefstwa SPI (Security Parameters Index), numer sekwencji (Sequence Number), które zabezpieczają przed powtórkami pakietów (anti-replay) oraz dane służące uwierzytelnieniu (Authentication Data).

SPI w połączeniu z adresem docelowym IP i zastosowanym protokołem bezpieczefstwa (AH) identyfikuje jednoznacznie „bezpieczne połączenie”

IPSec SA (Security Association). Wartość SPI dla danego połączenia jednokierunkowego IPSec (nadawca ->odbiorca) jest stała. Na podstawie liczby SPI odbiorca rozpoznaje do jakiego tunelu IPSec należy otrzymany pakiet. Dzięki temu do rozszyfrowania pakietu może zastosować odpowiedni algorytm kryptograficzny (DES, SHA-1, MD5) i klucze. Wartość SPI jest zwykle przydzielana losowo dla danego tunelu IPSec i wymieniana pomiędzy stronami podczas jego zestawiania.

Numer sekwencyjny służy do określania kolejności pakietów nadchodzących w różnej kolejności. Zapobiega to również atakom powtórzeniowym (replay attacks). Wartość tego pola jest zwiększana o jeden dla każdego kolejnego pakietu. Po przesłaniu 232 pakietów (pole 32-bitowe) jest tworzone nowe powiązanie SA, są wymieniane klucze (nie zmieniają się tylko te ustalane ręcznie) i zerowany numer sekwencyjny.

Pole Authentication Data zawiera wartość kontrolną ICV (Integrity Check Value), służącą sprawdzeniu integralności i uwierzytelnieniu danych. Jest ona obliczana na podstawie wartości, które pozostają niezmienne podczas transportu w sieci (m.in. niektóre pola nagłówka IP i AH, dane warstw wyższych).

Nagłówek enkapsulujący ładunek bezpieczny ESP (Encapsulating Security Payload Header). Może pełnić rolę podobną do nagłówka AH oraz dodatkowo obsługuje szyfrowanie, zapewniając poufność transmisji. Zawiera pola podobne do tych, które występują w nagłówku AH. W przeciwiefstwie jednak do niego nagłówek ESP zapewnia integralność i uwierzytelnianie tylko dla przenoszonego ładunku.

Bezpieczefstwo transmisji może być zapewnione pomiędzy komunikującymi się hostami, pomiędzy bramami lub pomiędzy hostem a bramą.

Ostatni nagłówek Warstwa wyższa (Upper-Layer Header) wskazuje protokół warstwy wyższej (TCP, UDP czy ICMPv6) zawarty w umieszczonej po nim jednostce przenoszonych danych.

 

Adresy IPv6

Format adresu IPv6

Przestrzef adresowa IPv6 została rozszerzona z 32 do 128 bitów. Tak długi adres byłby trudny do zapisania w sposób znany z IPv4, a tym bardziej do zapamiętania. Aby usprawnić operowanie nowymi adresami, wprowadzono pewne modyfikacje. Adres 128-bitowy grupuje się po 2 bajty i oddziela dwukropkiem. Tak wyodrębnione bloki 16-bitowe konwertuje się na postać szesnastkową:

0034:0000:A132:827C:0000:0000:19AA:2837

Aby skrócić otrzymany adres, pomija się zera występujące na początku danego członu:

34:0:A132:827C:0:0:19AA:2837

Chcąc jeszcze bardziej uprościć adres IPv6, sąsiadujące ze sobą bloki złożone z samych zer zastępuje się dwoma dwukropkami:

34:0:A132:827C::19AA:2837

Wybieg ten można zastosować tylko raz. Analizator adresu (parser) rozdziela adres w miejscu występowania podwójnego dwukropka i wypełnia go zerami do momentu wyczerpania 128 bitów.

Opisane zabiegi czynią adres IPv6 bardziej czytelnym i mniej podatnym na błędy podczas zapisu przez użytkownika. Schemat adresowania IPv6 określono w RFC 2373.

Ze względu na długość adresu IPv6 szczególnie ważną funkcję spełniają serwery DNS. Jeżeli nadal chcemy zapisywać adresy URL, podając numer IP, należy umieszczać je w nawiasie kwadratowym. W przeciwnym razie parser URL nie będzie w stanie rozróżnić adresu IP do numeru portu.

Przykład: https://[ 34:0:A132:827C::19AA:2837]:80/index.html

Prefiks adresu

Prefiks adresu tworzy określona liczba bitów wyznaczona od lewej strony adresu IPv6, które identyfikują daną sieć. Jego tekstowa reprezentacja jest analogiczna do notacji CIDR (Classless InterDomain Routing), znanej z IPv4, tj. adres IPv6/długość prefiksu:

0034:0000:A132:827C:0000:0000:19AA:2837/64

gdzie adres węzła to:

0034:0000:A132:827C:0000:0000:19AA:2837

adres podsieci to:

0034:0000:A132:827C:0000:0000: 0000:0000/64

lub po skróceniu:

34:0:A132:827C::/64

Adresy zarezerwowane:

- adres nieokreślony 0:0:0:0:0:0:0:0

Informuje o braku adresu. Jest wykorzystywany jako adres śródłowy podczas wysyłania pakietu z hosta, który jeszcze nie zdążył uzyskać swojego adresu.

- adres Loopback 0:0:0:0:0:0:0:1

To adres typu pętla zwrotna, gdzie węzeł wysyła pakiet sam do siebie. Adresy tego typu nie powinny nigdy opuszczać danego węzła, a tym bardziej być przekazywane przez rutery.

Unicast, Multicast, Anycast

W IPv4 host użytkował zwykle jeden adres. Nowa wersja protokołu przynosi istotną zmianę - w IPv6 węzeł będzie standardowo korzystał z kilku adresów IP. Zrezygnowano z podziału adresów na klasy. Oprócz znanego z IPv4 adresowania Unicast i Multicast pojawił się również Anycast. Internet z IPv4 opierał się na trasowaniu prostym i hierarchicznym. W przeciwieństwie do niego Internet funkcjonujący w IPv6 wspiera adresowanie hierarchiczne.

Załóż własną stronę internetową za darmo Webnode