IPv6

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, szukaj

IPv6 (ang. Internet Protocol version 6) – protokół komunikacyjny, będący następcą protokołu IPv4, 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 jako IP Next Generation oraz IPng[1]. Głównymi dokumentami opisującymi protokół są RFC2460 oraz RFC4291.

Spis treści

[edytuj] Wdrażanie IPv6

Pierwsze dokumenty RFC opisujące protokół IPv6 powstały w 1995 roku. W latach 1996-2006 w infrastrukturę Internetu wdrażany był projekt 6BONE 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 obecnie IPv4; spora część użytkowników IPv6 korzysta jednak 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 mechanizm 6to4.

[edytuj] Powody powstania IPv6 i brak kompatybilności z IPv4

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 wtedy adresowanie bezklasowe. Na początku lat dziewięćdziesiątych było jednak już jasne, że adresy 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łu Internet 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ż utrzymywania zgodności wstecz, często kosztem pewnych ograniczeń lub wprowadzenia znacznej komplikacji. W czasach tworzenia IPv6 Internet nie był tak popularny jak teraz i szacowano[potrzebne źródło], ż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 ilość komputerów w Internecie i jego zastosowania uniemożliwiają zamianę protokołu IPv4 na IPv6 i jednocześnie oba protokoły muszą być używane przez urządzenia sieciowe, które przez to będą mieć faktycznie połączenie do dwóch rozłącznych sieci.

[edytuj] Różnice między protokołem IPv6 a IPv4

IPv4 IPv6
adresy 32 bity 128 bitów
wsparcie dla IPsec opcjonalne wymagane
identyfikacja ruchu dla QoS brak przy użyciu pola Flow Label
fragmentacja przez nadającego hosta i routery 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 typu Neighbor Solicitation
zarządzania grupami multicastowymi IGMP MLD (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 grupowy adres typu link-local
przydzielanie adresu wymagana konfiguracja ręczna, przez DHCP lub APIPA nie wymaga konfiguracji ręcznej ani DHCP
mapowanie nazw hostów w DNS używa rekordów A oraz PTR w domenie IN-ADDR.ARPA używa rekordów AAAA oraz PTR w domenie IP6.ARPA

[edytuj] Adresacja

W protokole IPv6 adres zapisany jest w 128-bitowej liczbie i może identyfikować jeden bądź wiele interfejsó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.

Zazwyczaj adres składa się z ośmiu 16-bitowych bloków złożonych z cyfr szesnastkowych i oddzielonych dwukropkiem. Dozwolone jest pomijanie początkowych zer w bloku, a także pominięcie ciągu bloków składających się wyłącznie z zer. Pomijając bloki zer dubluje się separator bloków (dwukropek). W tym miejscu należy zauważyć, że dopuszczalny jest tylko jeden podwójny dwukropek :: w adresie[2]. 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

[edytuj] Typy adresów

W adresacji wykorzystywanej w protokole IPv6 używane są trzy typy adresów:

  • adresy unicast - identyfikujące pojedynczy interfejs; pakiety, które są kierowane na ten typ adresu dostarczane są tylko do odbiorcy
  • adresy multicast - 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
  • adresy anycast - podobnie jak adresy multicast, identyfikują one 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ół rutingu)

W przeciwieństwie do poprzedniej wersji protokołu, IPv6 nie definiuje adresów typu broadcast. 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ć.

[edytuj] Zakresy adresów

Charakterystyczną cechą protokołu jest fakt, że zostały zdefiniowane zakresy adresów. W przypadku adresów unicastowych 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 typu point-to-point. Rutery 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 unikalny adres lokalny[2].
  • unikalne adresy lokalne (unique local adress) - 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 rutingu.[3].
  • 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[2].

Przez pewien czas, protokół definiował adresy site-local address, identyfikowane przez prefiks FEC0/10, jednak, ze względu na wiele kontrowersji zostały uznane za przestarzałe[4]

[edytuj] Mapowanie adresów IPv4 na IPv6

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.

[edytuj] Adresy specjalne

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łem IPv4 (pierwsze 96 bitów stanowią 0, pozostają 32 bity na adresy w formacie IPv4).
  • ::ffff:0:0/64 - jw., ale pozwala wykorzystywać komunikację według protokołu IPv6 w sieci IPv4.
  • 2001:7f8::/32 - pula zarezerwowana dla punktó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 typu 6to4. Są to adresy wygenerowane na podstawie istniejących, publicznych adresów IPv4, dostępne dla każdego użytkownika.
  • 3ffe::/16 – adresy testowej sieci 6BONE (adresy zostały wycofane 6 czerwca 2006 w związku z zakończeniem działania 6BONE).
  • fc00::/7 — pula lokalnych unikalnych adresów IPv6 typu unicast (RFC 4193), będąca odpowiednikiem adresów prywatnych IPv4, choć, zgodnie z nazwą, powinny być unikalne na świecie.
  • fe80::/10 - pula link-local określa adresy w obrębie jednego łącza fizycznego (np. segmentu sieci Ethernet). 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 - pula site-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 komunikacji broadcastowej (dane rozsyłane do wszystkich węzłów w danej podsieci). Aby wysyłać dane do wielu odbiorców jednocześnie, należy korzystać z komunikacji multicastowej.

[edytuj] Nagłówek i jego rozszerzenie

W przeciwieństwie do protokołu IPv4, 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[5].

Opis pól nagłówka protokołu IPv6[5]
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[5]:

  • Wersja (4 bity) - definiująca wersję protokołu, w przypadku IPv6 pole te zawiera wartosć 6 (bitowo 0110)
  • Klasa ruchu (8 bitów) - określa sposób w jaki ma zostać potraktowany pakiet danych. W poprzedniej wersji protokoły pole te 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 te 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

[edytuj] Nagłówki rozszerzające

Nagłówki rozszerzające służą do zwiększania możliwość protokołu IPv6. W chwili obecnej zdefiniowanych jest sześć rozszerzeń protokołu:

  • Hop-by-Hop Options
  • nagłówek rutingu
  • nagłówek fragmentacji
  • nagłówek opcji docelowych
  • nagłówek uwierzytelniania
  • Encrypted Security Payload

[edytuj] Autokonfiguracja

Dla podsieci będących LAN-em przydzielana jest pula adresów z maską /64 co umożliwia tworzenie unikalnych numerów IP w oparciu o (niepowtarzalne) numery sprzętowe MAC; adres taki (dla adresu MAC 11:22:33:44:55:66) będzie miał postać: 64bitowy_prefiks_sieci:1322:33FF:FE44:5566 (pierwszy bajt adresu MAC zwiększany jest o 2, w środku wstawiane jest FFFE). 64-bitowy prefiks sieci jest informacją rozgłaszaną przy pomocy ICMPv6 przez rutery; natomiast jeżeli host nie uzyskał wspomnianego prefiksu w jego miejsce wstawiane jest fe80:: (czyli fe80: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 przez DHCP oraz ręcznych ustawień IP.

[edytuj] DNS

Obsługa adresacji IPv6 w systemie DNS 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'.

[edytuj] Kontrowersje

W adresach IPv6 unikalny adres 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. [6][7][8][9][10]

[edytuj] Zobacz też

Przypisy

  1. Internet Protocol, Version 6 (IPv6) Specification.
  2. 2,0 2,1 2,2 Internet Protocol Version 6 (IPv6) Addressing Architecture (ang.). [dostęp 2011-09-10].
  3. Unique Local IPv6 Unicast Addresses (ang.). [dostęp 2011-02-10].
  4. Deprecating Site Local Addresses (ang.). [dostęp 2011-02-10].
  5. 5,0 5,1 5,2 Silvia Hagen: "IPv6 Essentials, Second Editin". O'Reilly, 2006. ISBN 0-596-10058-2. 
  6. T. Narten, R. Draves: Privacy Extensions for Stateless Address Autoconfiguration in IPv6. 2001-01.
  7. Statement on IPv6 Address Privacy, Steve Deering & Bob Hinden, Co-Chairs of the IETF's IP Next Generation Working Group , 1999-11-06.
  8. IPv6: Privacy Extensions einschalten, Reiko Kaps, 2011-04-13
  9. Privacy Extensions (IPv6), Elektronik Kompendium.
  10. Neues Internet-Protokoll erschwert anonymes Surfen, Konrad Lischka, Spiegel Online, 2010-11-18.

[edytuj] Linki zewnętrzne

Osobiste
Przestrzenie nazw
Warianty
Działania
Nawigacja
Dla czytelników
Dla wikipedystów
Drukuj lub eksportuj
Narzędzia
W innych językach