Gość (83.4.*.*)
Adresowanie IPv6 na pierwszy rzut oka może wydawać się skomplikowane, zwłaszcza gdy porównamy je do starego, dobrego IPv4. Zamiast czterech liczb oddzielonych kropkami, mamy tu 128-bitowe ciągi znaków zapisane w systemie szesnastkowym. Aby ułatwić nam życie, wprowadzono zasady skracania tych długich adresów, a jedną z najpopularniejszych jest właśnie podwójny dwukropek (::). Dlaczego jednak istnieje surowy zakaz używania go więcej niż raz w jednym adresie? Odpowiedź jest prostsza, niż mogłoby się wydawać, i sprowadza się do jednej kluczowej kwestii: jednoznaczności.
Zanim przejdziemy do zakazów, przypomnijmy sobie, po co w ogóle stosujemy ::. Pełny adres IPv6 składa się z ośmiu 16-bitowych sekcji (hextetów). Często zdarza się, że wiele z tych sekcji to same zera. Zamiast pisać 2001:0db8:0000:0000:0000:0000:0000:0001, możemy użyć podwójnego dwukropka, aby zastąpić ciąg zer, co daje nam eleganckie 2001:db8::1.
System operacyjny lub router, widząc taki zapis, wie dokładnie, co zrobić. Liczy, ile sekcji zostało podanych jawnie, a brakującą liczbę uzupełnia zerami, aż uzyska wymagane osiem grup. W powyższym przykładzie mamy dwie widoczne grupy, więc :: zastępuje dokładnie sześć grup zer.
Wyobraźmy sobie teraz sytuację, w której dopuszczamy użycie podwójnego dwukropka dwukrotnie, tak jak w przykładzie z pytania: 2001:db8::c:d::.
Standardowy adres IPv6 musi mieć 8 sekcji. W naszym błędnym zapisie widzimy cztery sekcje: 2001, db8, c oraz d. Oznacza to, że brakuje nam jeszcze czterech sekcji, które zostały ukryte pod dwoma symbolami ::. I tu pojawia się problem – komputer nie jest jasnowidzem i nie wie, jak rozdzielić te brakujące zera pomiędzy dwa puste miejsca.
Oto możliwe interpretacje takiego zapisu:
2001:db8:0:0:c:d:0:0 (po dwa bloki zer w każdym miejscu)2001:db8:0:c:d:0:0:0 (jeden blok zer w pierwszym miejscu, trzy w drugim)2001:db8:0:0:0:c:d:0 (trzy bloki zer w pierwszym miejscu, jeden w drugim)Każda z tych kombinacji prowadzi do zupełnie innego adresu IP. Gdyby protokół pozwalał na taką dowolność, pakiety danych krążyłyby po sieci bez celu, nie wiedząc, do którego urządzenia mają trafić. Aby uniknąć tego chaosu, organizacja IETF (Internet Engineering Task Force) w dokumencie RFC 4291 jasno określiła: podwójny dwukropek może wystąpić w adresie tylko raz.
Przejście z IPv4 na IPv6 było konieczne ze względu na wyczerpującą się pulę adresów. IPv4 oferował około 4,3 miliarda kombinacji. IPv6 natomiast oferuje ich... 340 undecylionów (to liczba z 36 zerami!). To tak ogromna ilość, że teoretycznie moglibyśmy przypisać miliony adresów do każdego ziarnka piasku na Ziemi.
Jeśli masz adres, w którym zera występują w dwóch różnych miejscach (oddzielone innymi cyframi), musisz zdecydować, które z nich zastąpić podwójnym dwukropkiem. Zazwyczaj wybiera się najdłuższy ciąg zer, aby adres był jak najkrótszy.
Przykład:
Mamy adres: 2001:db8:0:0:abcd:0:0:0
2001:db8::abcd:0:0:02001:db8:0:0:abcd::W drugim przypadku zaoszczędziliśmy więcej znaków, co jest zgodne z dobrymi praktykami sieciowymi. Pamiętaj też, że pojedyncze zera w sekcji można zapisać po prostu jako 0 – nie trzeba pisać 0000.
Aby Twój adres IPv6 był zawsze poprawny i czytelny dla urządzeń sieciowych, trzymaj się tych trzech prostych zasad:
:0db8: zamień na :db8:).:: tylko raz, zastępując nim najdłuższy możliwy ciąg zerowych sekcji.Dzięki tym zasadom adresy IPv6, mimo swojej długości, stają się znacznie łatwiejsze do zarządzania i – co najważniejsze – są zawsze interpretowane w ten sam sposób przez każde urządzenie na świecie.