Wydawałoby się, że ponad 4 miliardy unikalnych adresów zapewnionych przez protokół IPv4 powinno być wystarczające. W ostatnich latach liczba operatorów sieci którzy potrzebowali ogromne pule adresów IP drastycznie wzrosła i przewiduje się ze za kilka lat pula adresów ip zostałaby wyczerpana. Do wad protokołu IPv4 należy nie tylko "niewielka" liczba adresów, ale także niedostosowany do potrzeb współczesnych transmisji nagłówek. Wdrożenie protokołu IPv6 powinno odbywać się płynnie i przyniesie same korzyści wynikające z ogromnej puli adresowej oraz ulepszonego nagłówka który został przedstawiony na poniższym rysunku.
Pole wersja służy do identyfikacji wersji protokołu, dla wersji 6 w polu tym zostanie umieszczona binarna reprezentacja cyfry 6 Zawartość pola klasa ruchu stanowi 8 bitów identyfikujących klasę ruchu co pozwala na zapewnienie QoS. 20 bitowe pole etykieta przepływu jest używane przez źródło to oznaczenia pakietów należących do danego przepływu. Jeśli pakiet nie jest częścią żadnego przepływu wstawiana jest wartość 0. Przepływ identyfikowany jest poprzez tryplet złożony z etykiety przepływu, adresu źródłowego oraz adresu źródłowego. Pole długość ładunku określa liczbę bajtów, która następuje po 40-bajtowym nagłówku. Następny nagłówek to pole informujące o tym jaki jest rodzaj kolejnego nagłówka np. UDP. Używając tego pola można stworzyć łańcuch nagłówków IPv6. Rodzaje nagłówków są identyfikowane za pomocą wartości przedstawionych w Tabeli 1.
| Wartość (hexadecymalnie) | Protokół |
|---|---|
| 01 | ICMPv4 |
| 02 | IGMPv4 |
| 04 | IP (Enkapsulacja w IPv4) |
| 06 | TCP |
| 08 | EGP |
| 11 | UDP |
| 32 | ESP |
Pole Limit przeskoków (dawny TTL) określa maksymalną liczbę przejeść przez rutery przed odrzuceniem, które zapobiega krążeniu pakietów w nieskończoność.
Ostatnie 2 pola zawierają 16-bajtowe adresy ipv6.Redukcja ilości pól nagłówka i zrezygnowanie z sumy kontrolnej nagłówka pozwala na szybsze przetwarzanie pakietów prze routery. Dla potrzeb nowych adresów opracowano zmodyfikowane wersje wszystkich popularnych protokołów rutingu (RIP, OSPF, BGP, IS-IS, EIGRP)
128 bitowe adresy IPv6 pozwalają na zaadresowanie aż 3.4*1038 urządzeń. Można je zapisywać na kilka sposobów. Przykładowo adres 2001:7f8:1::a501:5169:1 jest tożsamy z 2001:07f8:0001:0000:0000:a501:5169:0001, w którym przekreślono zera pominięte w skróconej formie. W każdej spośród ośmiu szestantobitowej sekwencji można pominąć przodujące 0. Specyfikacja adresowania została zawarta w RFC2491, który oprócz opisu sposobu zapisu adresów definiuje opisane poniżej typy adresów.
Podstawowym rodzajem zalecanym do sieci lokalnych jest unicastowy (zawarty w puli fe80::/10) adres Link-Local identyfikujący pojedynczy interfejs sieciowy. Pakiety zawierające w nagłówku adres link local nie powinny być przekazywane przez routery. Pula 2000::/3 zostanie rozdysponowana wśród dostawców usług internetowych. Podobnie jak obecne publiczne adresy IP z puli 2000::/3 mają identyfikować pojedynczy interfejs sieciowy.
Multicast służy do identyfikacji wielu odbiorców tworzących grupę, której członkowie otrzymują wysłane na multicastowy adres pakiety. Adresy multicast należą do puli ff00::/8 i charakteryzują się następującym formatem. 11111111:00010010::1 Pierwsze 8 bitów (1111:1111) pozwala na stwierdzenie że dany adres jest typu multicast, kolejne 4 stanowią flagę (opis w RFC 3306). Następnie występują 4 bity określające zasięg. Pozostałe 122 bity stanową GID. Charakterystycznym dla IPv6 rodzajem adresów multicast są tzw. adresy solicited-node. Tworzone są przy pomocy mapowań na podstawie unikatowego adresu unicastowego. Adresy solicited-node są używane do odnajdywania sąsiadów (ND - Neighbor Discovery). ND zostanie opisane w sekcji Nowe funkcjonalności. Adresy solicited-node składają się z ostatnich 24 bitów adresu unicast poprzedzonych następującą sekwencją FF02:0:0:0:0:1:FF np. adresowi unicastowemu 4037::01:800:200E:8C6C odpowiada multicastowy solicited-node FF02::1:FF0E:8C6C
Adresy anycast identyfikują zbiór interfejsów natomiast pakiet z anycastowym adresem docelowym trafia tylko do pierwszego (decyduje router) napotkanego. Nie mogą być używane jako adresy źródłowe i nie powinny być przypisywane stacjom końcowym. W jakim celu można je wykorzystać? Jednym z zastosowań może być identyfikacja grupy routerów stanowiących bramy do konkretnej podsieci
Kolejną grupą adresów IPv6 są adresy specjalne do których należą:
::1/128 adres testowy loopback (nie powinień wyjść poza interfejs)
::FFFF:0:0/96 adresy mapowane z IPv4 w których pierwsze 80 bitów stanowią zera, 16 kolejnych jest ustawionych na 1, natomiast ostatnie 32 reprezentują adres IPv4.
2001:DB8::/32 adresy zarezerwowane na potrzeby dokumentacji np. do wykorzystania w przykładach itp.
fe80::/10 - odpowiada 169.254.0.0/16 w IPv4. Czyli adresom link-local.
ND - Neighbor Discovery spełnia podobną funkcję do ARP (ang. Address Resolution Protocol) znanego z IPv4. Protokół ND pozwala na odnalezienie innych węzłów w segmencie sieci, określenie ich adresów warstwy drugiej oraz odnalezienie dostępnych routerów. ND wykorzystuje pięć różnych rodzajów pakietów ICMPv6:
Mobile IPv6 pozwala na przenoszenie urządzenia pomiędzy sieciami bez utraty połączenia. Niezależnie od sieci, w której zasięgu znajduje się urządzenie identyfikowane jest poprzez swój adres domowy (home adres). Gdy urządzenie opuszcza swoją domową sieć otrzymuje „adres grzecznościowy” (care-of address), który rejestruje na swoim domowym ruterze. Gdy urządzenie mobilne jest poza swoją siecią domową komunikacja z nim jest możliwa dzięki tunelowaniu pakietów pomiędzy adresem domowym, a adresem grzecznościowym.
W celu zoptymalizowania trasy pomiędzy dwoma komunikującymi się urządzeniami mobilne IPv6 korzysta z mechanizmu route-optimization. Urządzenie mobilne wysyła komunikaty BU (binding update) do drugiego hosta (partnera), z którym chce się bezpośrednio komunikować. Partner zapisuje w buforze powiązanie adresu domowego i grzecznościowego, które są wykorzystywane do wysyłania wiadomości do urządzenia mobilnego.