Wyczerpanie przestrzeni adresowej IPv4
IPv4 przez dziesięciolecia był podstawowym protokołem internetowym. Jego adres ma 32 bity, więc teoretyczna przestrzeń obejmuje wartości, czyli około 4,3 miliarda. Część tych wartości jest zarezerwowana do celów specjalnych, dlatego liczba adresów możliwych do przydzielenia jest mniejsza.
W latach 80. taki rozmiar przestrzeni wydawał się wystarczający. Rozwój internetu, komputerów osobistych, smartfonów, serwerów oraz spowodował wyczerpywanie się puli adresów IPv4. Niedobór ten, określany jako wyczerpanie przestrzeni adresowej IPv4, stał się jednym z powodów opracowania IPv6, którego adresy mają większy rozmiar i umożliwiają hierarchiczne planowanie przestrzeni.
Skala przestrzeni adresowej IPv6: 128 bitów
Adres IPv6 ma 128 bitów. W porównaniu z 32-bitowym adresem IPv4 liczba bitów wzrasta czterokrotnie, a liczba możliwych wartości rośnie przez czynnik 2^96.
- IPv4: adresów (4,3 miliarda).
- IPv6: adresów.
Teoretyczna liczba wartości wynosi około 340 undecylionów. Po podzieleniu tej przestrzeni przez przybliżoną powierzchnię Ziemi otrzymuje się około wartości na każdy milimetr kwadratowy. Porównanie z liczbą gwiazd w obserwowalnym Wszechświecie obrazuje skalę przestrzeni, lecz nie opisuje zasad przydziału adresów. Taki rozmiar pozwala planować adresowanie bilionów urządzeń.
Zapis adresów IPv6
Adresy IPv6 zapisuje się w systemie szesnastkowym, ponieważ taki zapis skraca przedstawienie 128 bitów i ułatwia jego odczyt. Ta sama notacja dotyczy adresów globalnych, link-local i multicast.
Grupy 16-bitowe i dwukropki
- Grupy 16-bitowe: 128-bitowy adres jest dzielony na osiem grup, z których każda zawiera 16 bitów.
- Format szesnastkowy: Każda 16-bitowa grupa jest zapisywana jako cztery cyfry .
- Separatory dwukropkowe: Osiem grup, nazywanych w dokumentacji IPv6 hekstetami, oddziela się dwukropkami (:).
Przykład pełnego adresu IPv6
Przykład pełnego, nieskompresowanego adresu IPv6 używanego w celach dokumentacyjnych:
2001:0db8:0000:0000:0008:0800:200c:417a
Skracanie adresów IPv6
Pełny zapis adresu IPv6 zawiera osiem grup i może obejmować wiele zer. Zapis można skrócić za pomocą dwóch reguł.
Zasada 1: pomijanie zer wiodących
W dowolnym 16-bitowym hekstecie można usunąć zera wiodące, czyli zera na początku grupy. Operację wykonuje się niezależnie dla każdego hekstetu.
Na przykład: 0db8 staje się db8 0008 staje się 8 0000 staje się 0
Zasada 2: kompresja podwójnym dwukropkiem
Ciągły blok hekstetów złożonych z samych zer można zastąpić podwójnym dwukropkiem (::). W zapisie kanonicznym RFC 5952 wybiera się najdłuższy taki blok, a przy równej długości pierwszy. Pojedynczy hekstet o wartości zero zapisuje się jako 0, a cyfry szesnastkowe zapisuje się małymi literami.
W jednym adresie stosuje się najwyżej jeden podwójny dwukropek. Każdy taki zapis zastępuje co najmniej jeden zerowy hekstet, dlatego większa liczba skrótów nie określałaby jednoznacznie długości adresu.
Przykład skracania krok po kroku
Skróćmy adres fec0:0000:0000:0000:0ead:0000:0000:0005:
- Adres oryginalny:
fec0:0000:0000:0000:0ead:0000:0000:0005 - Zastosuj zasadę 1 (pomiń zera wiodące): Usuń zera wiodące z każdego hekstetu.
fec0:0:0:0:ead:0:0:5 - Zastosuj zasadę 2 (użyj podwójnego dwukropka): Znajdź najdłuższy ciągły blok zer i zastąp go
::. W tym przypadku występują dwa bloki o różnej długości, więc wybieramy dłuższy.fec0::ead:0:0:5
(Zapisfec0:0:0:0:ead::5jest również poprawny składniowo. Pierwsza forma odpowiada zaleceniu RFC 5952, ponieważ kompresuje dłuższy blok).
Struktura globalnego adresu unicast IPv6
W typowym planie globalny adres unicast IPv6 dzieli się na 64-bitowy prefiks podsieci i 64-bitowy identyfikator interfejsu. RFC 4291 opisuje prefiks routingu globalnego, identyfikator podsieci oraz identyfikator interfejsu, a granica między tymi polami zależy od planu adresacji.
Prefiks sieciowy (pierwsze 64 bity)
Identyfikator interfejsu (ostatnie 64 bity)
- Automatycznie, na podstawie fizycznego adresu MAC urządzenia (przy użyciu formatu EUI-64).
- Automatycznie i losowo przez system operacyjny ze względów prywatności.
- Ręcznie skonfigurowany przez administratora.
Specjalne typy adresów IPv6
IPv6 definiuje zakresy adresów o określonych zastosowaniach. Ich rozróżnienie jest potrzebne przy konfiguracji i analizie sieci.
- Adres nieokreślony (
::/128): Adres złożony z samych zer. Host może użyć go jako adresu źródłowego podczas inicjalizacji, zanim pozna własny adres. Nie wolno przypisywać go interfejsowi ani używać jako adresu docelowego. - Adres pętli zwrotnej (
::1/128): Odpowiednik127.0.0.1w IPv4. Pozwala hostowi kierować pakiety do własnego stosu sieciowego w celu testowania oprogramowania. Pakiet z tym adresem nie opuszcza hosta. - Adresy link-local (
fe80::/10): Każdy interfejs IPv6 ma adres z tego zakresu, którego zasięg ogranicza się do jednego łącza. Adresy te służą do komunikacji w lokalnym segmencie Ethernet lub sieci Wi-Fi oraz do procesów takich jak wykrywanie sąsiadów. Routery nie przekazują pakietów z adresem link-local poza łącze. - Unikalne adresy lokalne (ULA) (
fc00::/7): Ten prefiks obejmuje zakres przeznaczony do adresacji lokalnej, podobnie jak prywatne zakresy IPv4, na przykład192.168.x.x. Obecnie adresy przypisywane lokalnie korzystają zfd00::/8, natomiastfc00::/8pozostaje zarezerwowany. ULA służą do komunikacji wewnątrz organizacji i nie są przeznaczone do routingu w publicznym internecie. - Adresy multemisji (
ff00::/8): Identyfikują grupę interfejsów. Pakiet wysłany na taki adres jest dostarczany interfejsom należącym do grupy, co umożliwia komunikację jeden-do-wielu. - Prefiks dokumentacyjny (
2001:db8::/32): Zakres zarezerwowany przez RFC 3849 do przykładów i dokumentacji. Nie powinien być używany jako globalny, routowalny adres w rzeczywistej sieci. - Technologie przejściowe (historyczny 6to4,
2002::/16): Ten prefiks był używany przez mechanizm 6to4 do tunelowania IPv6 przez IPv4. 6to4 nie jest zalecany w nowych wdrożeniach IPv6, dlatego prefiks ma znaczenie historyczne.