IPv6 (ang. Internet Protocol version 6) –protokół komunikacyjny, będący następcą protokołuIPv4, do którego opracowania przyczynił się w głównej mierze problem małej, kończącej się liczby adresów IPv4. Podstawowymi zadaniami nowej wersji protokołu jest zwiększenie przestrzeni dostępnych adresów poprzez zwiększenie długości adresu z 32 bitów do 128 bitów, uproszczenie nagłówka protokołu oraz zapewnienie jego elastyczności poprzez wprowadzenie rozszerzeń, a także wprowadzenie wsparcia dla klas usług,uwierzytelniania oraz spójności danych. Protokół jest znany także jakoIP Next Generation orazIPng[1] . Głównymi dokumentami opisującymi protokół sąRFC 2460 ↓ orazRFC 4291 ↓.
Według Google, dostęp do IPv6 przez ich użytkowników wynosił we wrześniu 2025 roku 46,45%[2][a]. W Polsce, według danych z 8 października 2025, jest to 18,09%.
Pierwszedokumenty RFC opisujące protokół IPv6 powstały w 1995 roku. W latach 1996–2006 w infrastrukturęInternetu wdrażany był projekt6bone w formie eksperymentalnej sieci działającej w oparciu o IPv6. Po zamknięciu tego projektu niektórzy dostawcy usług internetowych (ISP) rozpoczęli produkcyjne dostarczanie IPv6 tak samo jak obecnieIPv4; spora część użytkowników IPv6 korzysta z tego protokołu za pomocą tuneli wykorzystujących poprzednią wersję protokołu (tzw. tunelowanie IPv6-in-IPv4). Najprostszą metodą zestawienia takiego tunelu jest obecnie mechanizm6to4.
Powszechnie stosowany obecnie protokół IPv4 ma pojemność około 4 miliardów adresów (232). W czasach gdy powstawałprotokół IP (lata siedemdziesiąte), wydawało się to wystarczające – wtedy nikt nie przewidywał takiej popularności komputerów i Internetu. Jednakże już w pierwszych latach użytkowania IP podjęto prace mające na celu zaoszczędzenie adresów – wprowadzono wtedyadresowanie bezklasowe. Na początku lat dziewięćdziesiątych było jednak już jasne, żeadresy IP wkrótce ulegną wyczerpaniu, więc w 1992 rozpoczęto prace nad stworzeniem IPNG – protokołu internetowego nowej generacji, co doprowadziło do pełnej definicji nowego protokołu w roku 1996. Nowy protokół nie mógł nosić numeru wersji 5, ponieważ numer ten został już wcześniej użyty dla eksperymentalnego protokołuInternet Streaming Protocol (w zamierzeniu mającego przenosić treści audio i wideo), dlatego też użyto kolejnego numeru – 6.
Przy tworzeniu nowych technologii i protokołów projektanci często stają przed dylematem stworzenia całkiem nowej jakości, czy też utrzymywaniazgodności wstecz, często kosztem pewnych ograniczeń lub wprowadzenia znacznej komplikacji. W czasach tworzenia IPv6 Internet nie był tak popularny jak teraz i szacowano[potrzebny przypis], że zamiana protokołu na IPv6 będzie możliwa bez utrzymania zgodności między nowszą i starszą wersją protokołu IP, dlatego też zaprojektowano całkowicie nowy protokół, bez obciążenia balastem koniecznej zgodności z IPv4. Prace nad projektowaniem IPv6 trwały dość długo, a po ich zakończeniu wizja końca adresacji IPv4 była wciąż dość odległa w czasie, dlatego też nowy protokół nie został wdrożony produkcyjnie. W tej chwili jednak liczba komputerów w Internecie i jego zastosowania uniemożliwiają zamianę protokołu IPv4 na IPv6 i oba protokoły jednocześnie muszą być używane przez urządzenia sieciowe, które przez to mają faktycznie podłączenie do dwóch rozłącznych sieci.
| kategoria | IPv4 | IPv6 |
|---|
| długość adresów | 32 bity | 128 bitów |
|---|
| wsparcie dlaIPsec | implementacja zewnętrzna | implementacja rodzima |
|---|
| identyfikacja ruchu dlaQoS | tak: poleToS | tak: poleFlow Label(inne języki) |
|---|
| fragmentacja | przez nadającegohosta iroutery | jedynie przez nadającego hosta |
|---|
| suma kontrolna w nagłówku | obecna | brak |
|---|
| opcje | w nagłówku | przeniesione do nagłówków dodatkowych |
|---|
| ramki zgłoszeń | ARP | wielopoziomowe wiadomości typuNeighbor Solicitation, brak ARP |
|---|
| zarządzania grupamimulticastowymi | IGMP | MLD(inne języki) (ang.Multicast Listener Discovery Protocol) |
|---|
| protokół komunikatów kontrolnych | ICMP | ICMPv6, wymagany |
|---|
| adresy transmisji | do wysyłania danych do wszystkich węzłów w podsieci | zastąpione przez grupowyadres typu link-local(inne języki), brak ruchu typu broadcast |
|---|
| przydzielanie adresu | wymagana konfiguracja ręczna, przezDHCP lubAPIPA | nie wymaga konfiguracji ręcznej ani DHCP, konfiguracja przez ogłoszeniaRouter Discovery iNeighbor Solicitation |
|---|
| mapowanie nazw hostów wDNS | używa rekordówA orazPTR w domenie IN-ADDR.ARPA | używa rekordówAAAA orazPTR w domenie IP6.ARPA |
|---|
W protokole IPv6 adres zapisany jest w 128-bitowej liczbie i może identyfikować jeden bądź wieleinterfejsów. W przypadku tego protokołu adres jest bardziej przejrzysty niż adres w poprzedniej wersji protokołu. W przeciwieństwie do poprzedniej wersji protokołu, zakres adresu, czyli obszar jego widoczności, jest ograniczony przez odpowiedni prefiks.
Adres zazwyczaj zapisuje się jako osiem 16-bitowych bloków zapisanych w systemie szesnastkowym oddzielonych dwukropkiem. Dozwolone jest pomijanie początkowych zer w bloku, a także pominięcie jednego ciągu bloków składających się wyłącznie z zer. Pominięte bloki zer oznacza się podwójnym separatorem bloków (dwukropek). Dopuszczalny jest tylko jeden podwójny dwukropek „::” w adresie[3] . Poniższe adresy są równoznaczne:
- 2001:0db8:0000:0000:0000:0000:1428:57ab
- 2001:0db8:0:0:0:0:1428:57ab
- 2001:0db8:0:0::1428:57ab
- 2001:0db8::1428:57ab
- 2001:db8::1428:57ab
W adresacji wykorzystywanej w protokole IPv6 używane są trzy typy adresów:
- adresyunicast – identyfikujące pojedynczy interfejs; pakiety, które są kierowane na ten typ adresu dostarczane są tylko do odbiorcy
- adresymulticast – identyfikujące grupę interfejsów (mogą one należeć do różnych węzłów), pakiety wysyłane na ten adres dostarczane są do wszystkich członków grupy
- adresyanycast – podobnie jak adresy multicast, identyfikują grupę interfejsów, jednak pakiet wysyłany na ten adres dostarczany jest tylko do najbliższego węzła (węzeł ten jest wyznaczany przez protokół routingu)
W przeciwieństwie do poprzedniej wersji protokołu, IPv6 nie definiuje adresów typubroadcast. Jednym z powodów jest fakt, że pakiety wysyłane na ten adres odbierane były przez wszystkie węzły w sieci, nawet takie, które nie potrafiły danych pakietów zinterpretować.
Charakterystyczną cechą protokołu jest fakt, że zostały zdefiniowane zakresy adresów. W przypadku adresówunicastowych wyróżniane są następujące zakresy:
- adresy lokalne dla łącza (link-local address) – są to adresy wykorzystywane tylko do komunikacji w jednym segmencie sieci lokalnej lub przy połączeniu typupoint-to-point. Routery nie przekazują pakietów z tego rodzaju adresem. Z puli pozostałych adresów wyróżniane są przez prefiks FE80::/10. Każdy interfejs musi mieć przydzielony co najmniej jeden adres lokalny dla łącza, nawet jeżeli posiada adres globalny lub unikatowy adres lokalny[3] .
- unikatowe adresy lokalne(inne języki) (unique local address) – są to adresy będące odpowiednikami adresów prywatnych wykorzystywanych w protokole IPv4. Z puli pozostałych adresów wyróżniane są przez prefiks FC00::/7. Od adresów lokalnych łącza odróżnia je także prefiks routingu[4] .
- adresy globalne (global unicast address) – widoczne w całym internecie, są odpowiednikami adresów publicznych stosowanych w IPv4; do adresów tego typu należą adresy nie wymienione w pozostałych punktach[3] .
Przez pewien czas protokół definiował adresysite-local address, identyfikowane przez prefiks FEC0::/10, jednak ze względu na wiele kontrowersji zostały uznane za przestarzałe[5] .
Możliwe jest reprezentowanie adresów protokołu IPv4 jako adresów IPv6. Jedną z możliwości jest stworzenie adresu IPv6, którego młodsze 32 bity zawierają adres IPv4, natomiast starsze 96 bitów jest wypełniona specjalnym wzorcem bitów (::ffff). Tak skonstruowany adres ma postać ::ffff:127.0.0.1 (za 127.0.0.1 można podstawić dowolny adres IP) i umożliwia normalną komunikację w sieci.
Następujące adresy i grupy adresów posiadają specjalne, zarezerwowane znaczenie:
| ::/128 | adres nieokreślony (zawierający same zera). |
| ::1/128 | loopback, adres wskazujący na host lokalny. |
| ::/96 | pula zarezerwowana dla zachowania kompatybilności z protokołemIPv4 (pierwsze 96bitów stanowią 0, pozostają 32 bity na adresy w formacie IPv4 np.::192.0.2.128 tożsame z::C000:280) wersja przestarzała. |
| ::ffff:0:0/64 | jw., ale pozwala wykorzystywać komunikację według protokołu IPv6 w sieci IPv4 (np.::ffff:192.0.2.128 tożsame z::ffff:c000:280). |
| 2001:7f8::/32 | pula zarezerwowana dlapunktów wymiany ruchu, każdy z nich dostaje jedną podsieć/48. |
| 2001:db8::/32 | pula wykorzystywana w przykładach i dokumentacji – nigdy nie będzie wykorzystywana produkcyjnie. |
| 2002::/24 | adresy typu6to4. Są to adresy wygenerowane na podstawie istniejących, publicznych adresówIPv4, dostępne dla każdego użytkownika. |
| 3ffe::/16 | adresy testowej sieci 6bone (adresy zostały wycofane6 czerwca 2006 w związku z zakończeniem działania 6bone). |
| fc00::/7 | pula lokalnych unikatowych adresów IPv6 typu unicast (RFC 4193 ↓), będąca odpowiednikiem adresów prywatnych IPv4, choć zgodnie z nazwą, powinny być unikatowe na świecie. |
| fe80::/10 | pulalink-local określa adresy w obrębie jednego łącza fizycznego (np. segmentu sieciEthernet). Pakiety z tej puli nie są przekazywane poza podsieć, jej działanie jest analogiczne do automatycznie konfigurowanych adresów z puli 169.254.0.0/16 w IPv4. |
| fec0::/10 | pulasite-local określa adresy w obrębie jednej lokalnej organizacji. Obecnie nie zaleca się wykorzystywania tej puli; przyszłe implementacje IPv6 nie będą musiały obsługiwać tej puli. |
| ff00::/8 | pula multicastowa używana do komunikacji multicast. |
W protokole IPv6 nie występuje pojęcie komunikacjibroadcastowej (dane rozsyłane do wszystkichwęzłów w danej podsieci). Aby wysyłać dane do wielu odbiorców jednocześnie, należy korzystać z komunikacjimulticastowej.
W przeciwieństwie do protokołuIPv4, którego długość nagłówka wynosi od 20 do 60 bajtów, długość nagłówka protokołu IPv6 jest stała i wynosi 40 bajtów. Jego znaczną część zajmują adresy źródłowy oraz docelowy – 32 bajty, łatwo więc obliczyć, że na pozostałe dane pozostaje tylko 8 bajtów. Dzięki stałej długości nagłówek IPv6 jest dużo prostszy niż nagłówek poprzedniej wersji protokołu, a zarazem dużo łatwiejszy w przetwarzaniu. Jest także dużo bardziej elastyczny – dodatkowe opcje protokołu mogą być umieszczane w opcjonalnych nagłówkach rozszerzających (ang.extension headers), następujących po nagłówku głównym IPv6. Takie rozwiązanie umożliwia zwiększenie możliwości protokołu bez wprowadzania zmian do podstawowego nagłówka[6].
Opis pól nagłówka protokołu IPv6[6]| Bity | 0-3 | 4-7 | 8-11 | 12-15 | 16-19 | 20-23 | 24-27 | 28-31 |
|---|
| 0 | Wersja | Klasa ruchu | Etykieta przepływu |
|---|
| 32 | Długość danych | Następny nagłówek | Limit przeskoków |
|---|
| 64 | Adres źródłowy (128 bitów) |
|---|
| 96 |
|---|
| 128 |
|---|
| 160 |
|---|
| 192 | Adres docelowy (128 bitów) |
|---|
| 224 |
|---|
| 256 |
|---|
| 288 |
|---|
Podstawowy nagłówek protokołu składa się z następujących pól[6]:
- Wersja (4 bity) – definiująca wersję protokołu, w przypadku IPv6 pole to zawiera wartość 6 (bitowo 0110)
- Klasa ruchu (8 bitów) – określa sposób w jaki ma zostać potraktowany pakiet danych. W poprzedniej wersji protokołu pole to nazywało sięType of Service, jednak ze względu na to, że w IPv6 stosowane są inne mechanizmy priorytetowania danych, nazwę tego pola zmieniono
- Etykieta przepływu (20 bitów) – pomagające odróżnić pakiety, które wymagają takiego samego traktowania (ich pole klasy ruchu ma tę samą wartość)
- Długość danych (16 bitów) – wielkość pakietu, nie wliczając długości podstawowego nagłówka (wliczając jednak nagłówki rozszerzające)
- Następny nagłówek (8 bitów) – identyfikuje typ następnego nagłówka, pozwalając określić, czy jest to nagłówek rozszerzający, czy nagłówek warstwy wyższej. W przypadku tego drugiego, wartość pola jest identyczna z wartością pola w protokole IPv4
- Limit przeskoków (8 bitów) – określa ilość węzłów, po odwiedzeniu których pakiet zostaje porzucony. W poprzedniej wersji protokołu pole to nosiło nazwętime to live i zawierało liczbę skoków, która była zmniejszana przez każdy odwiedzony węzeł
- Adres źródłowy (128 bitów) – adres węzła, który wysłał pakiet
- Adres docelowy (128 bitów) – adres węzła, do którego adresowany jest pakiet
Nagłówki rozszerzające służą do zwiększania możliwości protokołu IPv6. W chwili obecnej zdefiniowanych jest sześć rozszerzeń protokołu:
- Hop-by-Hop Options
- nagłówek routingu
- nagłówek fragmentacji
- nagłówek opcji docelowych
- nagłówek uwierzytelniania
- Encrypted Security Payload.
Dla podsieci będącychLAN-em przydzielana jest pula adresów z maską /64, co umożliwia tworzenie unikatowych adresów lokalnych dla łącza w oparciu o (niepowtarzalne) numery sprzętoweMAC (IEEE 802). Adres taki (dla adresu MAC10:22:33:44:55:66) będzie miał postać:64bitowy_prefiks_sieci:1022:33FF:FE44:5566. Trzy najbardziej znaczące oktety identyfikatora MAC (IEEE 802), to identyfikator firmy. Dwa najmłodsze bity najbardziej znaczącego oktetu adresu MAC (IEEE 802) są znacznikami, dla identyfikatorów nadanych globalnie (fabrycznie) są równe 0. Drugi z tych bitów jest zmieniany na przeciwny. Powiększono o 16 bitów 24-bitowy identyfikator karty, dla kart posługujących się adresem MAC (IEEE 802) brakujące bity uzupełnia się wartością FFFE[7]. 64-bitowy prefiks sieci jest informacją rozgłaszaną przy pomocyICMPv6 przez routery; natomiast jeżeli host nie uzyskał wspomnianego prefiksu, w jego miejsce wstawiane jestfe80:: (czylife80:0000:0000:0000) – taki adres nazywa się „link-local” (nie jest on rutowany do sieci zewnętrznych, jednak zawsze (także gdy prefiks został uzyskany) może być używany wewnątrz sieci lokalnej). Oczywiście nadal możemy korzystać z przydziału IP przezDHCP oraz ręcznych ustawień IP.
Obsługa adresacji IPv6 w systemieDNS została zaprojektowana jako rozszerzenie systemu DNS, które jest całkowicie zgodne wstecz z IPv4, co nie wprowadza żadnych problemów implementacyjnych w tym zakresie. Nazwy hostów w DNS zawierają adres IPv4 w rekordzie ‘A’, adresy IPv6 umieszcza się w rekordzie ‘AAAA’ – taka konstrukcja powoduje, że dany host może mieć jednocześnie adres IPv4 i IPv6 w DNS. Odwrotny DNS wprowadza kilka różnic: adres IPv4 postaci 123.45.67.89 jest mapowany na rekord 89.67.45.123.in-addr.arpa, natomiast adres IPv6 postaci 2001:db8::1428:57ab mapowany jest na rekord b.a.7.5.8.2.4.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa (kiedyś w tym celu wykorzystywano domenę ip6.int). W przypadku obu rodzajów adresacji wykorzystuje się ten sam typ rekordu – ‘PTR’.
W adresach IPv6 unikatowyadres MAC komputera (przypisany do sprzętu) jest widoczny dla całego Internetu.Dwa działania są konieczne, aby zapewnić prywatność taką samą jak przy obecnych sieciach IPv4: klient musi mieć włączone rozszerzenia prywatności i ISP musi dynamicznie przydzielać adres do urządzenia klienta[8] [9][10][11][12].
- ↑Jest to średnia wartość z danych z dni od 1 do 30 września 2025. Wartość maksymalna to 49,82% (13 września, sobota), a minimalna to 44,51% (3 września, środa).
- S.S. Deering S.S.,R.R. Hinden R.R.,Internet Protocol, Version 6 (IPv6) Specification,RFC 2460,IETF, grudzień 1998,DOI: 10.17487/RFC2460,ISSN2070-1721,OCLC 943595667 (ang.).
- T.T. Narten T.T.,R.R. Draves R.R.,Privacy Extensions for Stateless Address Autoconfiguration in IPv6,RFC 3041,IETF, styczeń 2001,DOI: 10.17487/RFC3041,ISSN2070-1721,OCLC 943595667 (ang.).
- C.C. Huitema C.C.,B.B. Carpenter B.B.,Deprecating Site Local Addresses,RFC 3879,IETF, wrzesień 2004,DOI: 10.17487/RFC3879,ISSN2070-1721,OCLC 943595667 (ang.).
- R.R. Hinden R.R.,B.B. Haberman B.B.,Unique Local IPv6 Unicast Addresses,RFC 4193,IETF, październik 2005,DOI: 10.17487/RFC4193,ISSN2070-1721,OCLC 943595667 (ang.).
- R.R. Hinden R.R.,S.S. Deering S.S.,IP Version 6 Addressing Architecture,RFC 4291,IETF, luty 2006,DOI: 10.17487/RFC4291,ISSN2070-1721,OCLC 943595667 (ang.).