Adresowanie IPv6 polega na identyfikowaniu interfejsów sieciowych za pomocą 128-bitowych adresów zapisanych szesnastkowo. Tak duża przestrzeń adresowa powstała przede wszystkim dlatego, że pula adresów IPv4, opartych na 32 bitach, okazała się zbyt mała dla rozwijającego się Internetu.
Dlaczego powstał IPv6?
Adres IPv4 ma długość 32 bitów, co daje około 4,29 mld możliwych kombinacji. Część tej puli jest zarezerwowana do określonych zastosowań, dlatego liczba publicznych adresów dostępnych dla urządzeń jest mniejsza. Mechanizmy takie jak NAT i CIDR pozwoliły ograniczyć tempo zużywania adresów, ale nie usunęły problemu ograniczonej przestrzeni.
IPv6 zwiększa długość adresu do 128 bitów. Oznacza to ogromną liczbę możliwych adresów oraz możliwość projektowania sieci bez polegania na tak szerokim wykorzystaniu translacji adresów. Protokół upraszcza także podstawowy nagłówek pakietu. Ma on stałą długość 40 bajtów, a dodatkowe funkcje są przenoszone do nagłówków rozszerzających.
Jak zbudowany jest adres IPv6?
Pełny adres IPv6 składa się ze 128 bitów podzielonych na osiem bloków po 16 bitów. Każdy blok zapisuje się jako maksymalnie cztery cyfry szesnastkowe, od 0 do 9 oraz od A do F. Bloki oddziela się dwukropkami.
Pełny zapis może wyglądać tak:
2001:0DB8:0000:0000:0000:0000:1428:57AB
Jeden znak szesnastkowy odpowiada czterem bitom, dlatego 32 znaki szesnastkowe wystarczają do zapisania 128-bitowej wartości. W praktyce adresy skraca się według dwóch reguł:
- Usuń zera wiodące w każdym bloku. Blok 0DB8 można zapisać jako DB8, a 0001 jako 1.
- Zastąp jeden najdłuższy ciąg bloków zawierających same zera przez ::. Podwójny dwukropek można zastosować tylko raz w jednym adresie.
W rezultacie adres 2001:0DB8:0000:0000:0000:0000:1428:57AB przyjmuje postać 2001:DB8::1428:57AB. Zasada użycia :: tylko raz jest konieczna, ponieważ pominięte bloki trzeba później jednoznacznie odtworzyć.
Adres IPv6 często dzieli się logicznie na prefiks sieci oraz identyfikator interfejsu. W typowej podsieci używa się prefiksu /64, więc pierwsze 64 bity opisują sieć, a pozostałe 64 bity identyfikują interfejs. Konkretna długość prefiksu zależy jednak od przyjętego planu adresacji.
Najczęściej spotykane skróty wyglądają następująco:
| Zapis pełny | Zapis skrócony | Zastosowana reguła |
|---|---|---|
| 2001:0DB8:0000:0000:0000:0000:1428:57AB | 2001:DB8:0:0:0:0:1428:57AB | Usunięcie zer wiodących |
| 2001:DB8:0:0:0:0:1428:57AB | 2001:DB8::1428:57AB | Zastąpienie najdłuższego ciągu zer przez :: |
| 0000:0000:0000:0000:0000:0000:0000:0001 | ::1 | Adres pętli zwrotnej |
Adres ::1 oznacza lokalny interfejs urządzenia, a :: może oznaczać adres nieokreślony, zależnie od kontekstu użycia.

IPv4 a IPv6 – najważniejsze różnice
IPv6 nie jest prostym rozszerzeniem IPv4. Oba protokoły mają podobne zadanie, ale różnią się formatem adresów, budową nagłówka i częścią mechanizmów pomocniczych.
| Cecha | IPv4 | IPv6 |
|---|---|---|
| Długość adresu | 32 bity | 128 bitów |
| Suma kontrolna nagłówka | Występuje | Brak w podstawowym nagłówku |
| Fragmentacja | Może być wykonywana przez nadawcę i routery | Wykonuje ją wyłącznie nadawca |
| IPsec | Obsługa dodawana niezależnie | Wsparcie przewidziane w architekturze protokołu |
| Transmisja do wszystkich urządzeń | Broadcast | Brak Broadcastu, używa się Multicastu |
| Wykrywanie sąsiadów | ARP | NDP i komunikaty ICMPv6 |
Podstawowy nagłówek IPv6 zawiera między innymi klasę ruchu, etykietę przepływu, długość danych, pole Next Header oraz limit przeskoków. To ostatnie pełni funkcję podobną do pola TTL w IPv4. Stała struktura nagłówka ułatwia jego przetwarzanie, a opcje nie są upychane w podstawowej części pakietu.
Jakie są typy adresów IPv6?
Typ adresu określa, do ilu interfejsów może trafić pakiet i jak sieć wybiera odbiorcę. W IPv6 wyróżnia się trzy podstawowe rodzaje:
- Unicast – identyfikuje pojedynczy interfejs. Pakiet trafia do jednego odbiorcy.
- Multicast – identyfikuje grupę interfejsów. Pakiet jest dostarczany wszystkim członkom tej grupy.
- Anycast – może być przypisany wielu interfejsom, ale pakiet trafia do jednego z nich, zwykle najbliższego według routingu.
IPv6 nie definiuje adresów Broadcast. Zamiast wysyłać pakiet do wszystkich urządzeń w podsieci, stosuje się odpowiednią grupę Multicast. Ogranicza to niepotrzebny ruch, ponieważ pakiet odbierają tylko urządzenia należące do wskazanej grupy.
W praktyce można spotkać także różne zakresy adresów Unicast. Adresy link-local z puli FE80::/10 działają tylko w obrębie jednego łącza i nie są przekazywane przez routery. Unique Local Addresses z puli FC00::/7 służą do komunikacji wewnątrz prywatnych sieci. Adresy globalne są routowalne w Internecie.
Jak urządzenia otrzymują adres IPv6?
Adres można skonfigurować ręcznie, przydzielić przez DHCPv6 albo uzyskać automatycznie dzięki mechanizmowi SLAAC, czyli Stateless Address Autoconfiguration. W tym ostatnim przypadku router wysyła komunikat Router Advertisement zawierający między innymi prefiks sieci i informacje potrzebne do skonfigurowania interfejsu.
Urządzenie łączy otrzymany prefiks z własnym identyfikatorem interfejsu i tworzy pełny adres IPv6. Nie musi przy tym korzystać z serwera, który przechowuje listę przydzielonych adresów. To właśnie oznacza określenie „stateless”. Współczesne systemy mogą generować identyfikator na różne sposoby, w tym losowo lub tymczasowo. EUI-64, oparty na adresie MAC, jest jednym z historycznie stosowanych mechanizmów, ale nie jest jedyną metodą.
Każdy interfejs IPv6 może też automatycznie otrzymać adres link-local. Jest on potrzebny między innymi do komunikacji z routerem i działania NDP, które zastępuje ARP znany z IPv4.
Dlaczego adresowanie IPv6 ma znaczenie?
IPv6 rozwiązuje problem ograniczonej puli adresów IPv4 i pozwala budować sieci z ogromnym zapasem adresów. Dłuższy zapis jest mniej wygodny, ale skracanie zer oraz zapis szesnastkowy ułatwiają jego stosowanie. W połączeniu z Multicastem, prostszym nagłówkiem i autokonfiguracją IPv6 tworzy architekturę dopasowaną do dużej liczby współczesnych urządzeń.