IPv6: Zapis adresu i prefiksu

 

128 bitowy adres IPv6 zapisywany jest przy użyciu reprezentacji dwukropkowo szesnastkowej. Przyjmuje formę ‘x:x:x:x:x:x:x:x’. Każde 16 bitowe pole odseparowane jest dwukropkiem, stąd każdy x reprezentuje od jednej do czterech cyfr szesnastkowych. Przykładowy zapis adresu IPv6 znajduje się poniżej.

         2001:0db8:0000:0000:0008:0800:200c:417a
         2001:db8:0:0:8:800:200c:417a

 

Powyższe dwa adresy, są tak naprawdę jednym i tym samym adresem IP. Wynika to z tego, że nie ma obowiązku zapisywania wiodących zer w każdym z pojedynczych 16 bitowych pól. Wiodących, czyli tych od strony lewej. Niemniej, musi znajdować się w nim minimum jedna cyfra. Wyjątkiem od tego, jest możliwość zastąpienia dużej ilości zer, a dokładniej jednego lub większej ilości 16 bitowych pól składających się z samych zer przy użyciu podwójnego dwukropka - “::”. Ułatwia to zapis niektórych adresów. Dla przykładu adresy:

         2001:db8:0:0:8:800:200c:417a   adres unicast
         ff01:0:0:0:0:0:0:101           adres multicast
         0:0:0:0:0:0:0:1                adres loopback
         0:0:0:0:0:0:0:0               adres nieokreślony

 

można zapisać w o wiele krótszej formie:

         2001:db8::8:800:200c:417a      adres unicast
         ff01::101                      adres multicast
         ::1                            adres loopback
         ::                            adres nieokreślony

 

Oczywiście, użyć podwójnego dwukropka można tylko jeden raz. Inaczej doprowadziłoby to do niejednoznaczności w interpretacji. Załóżmy, że tak wyglądałby zapis adresu IP:

         2001:db8::800::417a
 
Jako, że “::” oznacza jedno lub więcej 16 bitowych pól składających się z samych zer, powyższy zapis można zinterpretować na dwa sposoby:
 
         2001:db8:0000:0000:800:0000:417a 
         2001:db8:0000:800:0000:0000:417a 

 

Stąd, prawidłową formą zapis adresu IP:

         2001:db8:0000:0000:800:0000:417a  

 

jest jedna z dwóch poniższych form:

         2001:db8::800:0:417a  
         2001:db8:0:0:800::417a  

 

W środowiskach, gdzie mamy do czynienia i z protokołem IPv4 i IPv6, wykorzystywana jest jeszcze jedna forma zapisu: ‘x:x:x:x:x:x:d.d.d.d’, gdzie ‘x’ reprezentują pierwsze sześć bardziej znaczących 16 bitowych pól adresu, a ‘d’ reprezentują jego cztery mniej znaczące 8 bitowe elementy. Poniżej, znajdują się przykłady zapisu takich adresów w formie pełnej:

         0:0:0:0:0:0:13.1.68.3
         0:0:0:0:0:ffff:129.144.52.38

 

i w formie skompresowanej/skróconej:

         ::13.1.68.3
         ::ffff:129.144.52.38

 

Dana podsieć IPv6 może być powiązana tylko z jednym linkiem. Przy czym, na jednym linku może być obsługiwanych wiele podsieci. Wyjątkiem są tutaj adresy link-local. Należą one do jednego dużego zakresu fe80::/10, który powiązany jest z każdym z interfejsów. Oznacza to, że ten sam adres link-local, może znajdować się na każdym z interfejsów tego samego urządzenia. Stąd dla jednoznaczności, zapis takiego adresu musi jawnie wskazywać interfejs z którym jest on powiązany. Przyjęło się, że interfejs wskazuje się po znaku procenta ‘%’:

         fe80::800:0000:0000:417a%1
         fe80::800:0000:0000:417a%eth0
         fe80::800:0000:0000:417a%GigabitEthernet0/0

 

Przy czym sam sposób oznaczania interfejsu zależny jest już od platformy/systemu. Może to być jakaś jego wewnętrzna numeracja lub jakieś bardziej lub mniej rozbudowane nazewnictwo.

Adresy składające się na jedną podsieć IPv6 zapisywane są w formie prefiksu i jego długości. Podobnie jak w zapisie CIDR, długość prefiksu określa ile bitów od lewej strony składa się na prefiks. Przedstawiony w zapisie szesnastkowym prefiks 20010db80000cd3, możemy zapisać przy użyciu poniższych form:

         2001:0db8:0000:cd30:0000:0000:0000:0000/60
         2001:0db8::cd30:0:0:0:0/60
         2001:0db8:0:cd30::/60

 

Należy zwrócić uwagę na “::”, który zwykle przy zapisie prefiksu znajduje się na końcu. Gdybyśmy chcieli użyć go w środku, nie można zapomnieć o zapisaniu wprost pozostałej części adresu. Pamiętać też należy o tym, że w pojedynczym 16 bitowym polu, można tylko opuszczać wiodące zera. Stąd, nieprawidłowym zapisem jest 2001:0db8:0:cd3::/60, gdyż wtedy ostatnie jawnie zapisane pole, interpretowane byłoby jako 0cd3, a nie cd30. Jeśli chcemy zapisać adres IPv6 i prefiks do którego on przynależy, można użyć zapisu połączonego. Zamiast zapisywać oddzielnie adres 2001:0db8:0:cd30:123:4567:89ab:cdef i oddzielnie podsieć do której on przynależy 2001:0db8:0:cd30::/60, można zapisać je razem w skrótowej formie:  2001:0db8:0:cd30:123:4567:89ab:cdef/60. 

Pozostaje jeszcze kwestia wielkości liter. Zgodnie z RFC 5952, znaki "a", "b", "c", "d", "e" i "f" w adresie IPv6 powinny być zapisywane i wyświetlane z użyciem małych liter. Oczywiście system rozpozna i jeden i drugi zapis. Niemniej warto wiedzieć co jest powszechnie uznawane za prawidłowe.


Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.