Gość (83.4.*.*)
Świat technologii sieciowych znajduje się obecnie w interesującym punkcie zwrotnym. Z jednej strony mamy stary, wysłużony protokół IPv4, którego pula adresów dawno się wyczerpała, a z drugiej nowoczesny IPv6, oferujący niemal nieskończoną liczbę kombinacji. Aby te dwa światy mogły ze sobą współpracować, inżynierowie stworzyli specjalne mechanizmy przejściowe. Jednym z nich są właśnie mapowane adresy IPv4 w formacie ::ffff:x.x.x.x. Choć na pierwszy rzut oka wyglądają jak dziwna hybryda, pełnią kluczową rolę w komunikacji między starymi a nowymi systemami.
Mapowany adres IPv4 to specjalny rodzaj adresu IPv6, który pozwala aplikacjom obsługującym wyłącznie nowszy protokół (IPv6) na komunikację z urządzeniami pracującymi w starszym standardzie (IPv4). Jest to technika stosowana głównie wewnątrz stosu sieciowego systemu operacyjnego.
Zapis ::ffff:x.x.x.x informuje system: „To jest urządzenie IPv4, ale traktuj je tak, jakby było częścią sieci IPv6”. Dzięki temu programista piszący aplikację nie musi tworzyć dwóch oddzielnych wersji kodu dla obu protokołów – może użyć jednego gniazda (socketu) IPv6, które obsłuży oba rodzaje ruchu.
Adres IPv6 składa się ze 128 bitów, podczas gdy IPv4 ma ich tylko 32. Aby „zmieścić” mniejszy adres w większym, stosuje się konkretny schemat budowy:
::.ffff. To jest właśnie „znacznik”, który mówi systemowi, że mamy do czynienia z mapowaniem IPv4.192.168.1.1) lub szesnastkowej.Warto wiedzieć, że choć zapis ::ffff:192.168.1.1 jest najczytelniejszy dla człowieka, komputer widzi go jako pełny ciąg szesnastkowy.
Załóżmy, że chcemy zapisać adres IPv4 192.168.0.1 jako mapowany adres IPv6. Oto jak przebiega ten proces:
Krok 1: Zamiana oktetów adresu IPv4 na system szesnastkowy.
c0.a8.00.01.Krok 2: Złożenie adresu IPv4 w pary szesnastkowe.
Otrzymujemy: c0a8:0001.
Krok 3: Dodanie prefiksu mapowania.
Zgodnie ze standardem dodajemy ::ffff: na początku.
Wynik końcowy:
Adres w formacie mieszanym: ::ffff:192.168.0.1
Adres w pełnym formacie IPv6: ::ffff:c0a8:0001 (lub 0000:0000:0000:0000:0000:ffff:c0a8:0001).
Głównym powodem istnienia mapowanych adresów jest ułatwienie życia programistom. W architekturze typu „Dual-Stack” (podwójny stos), system operacyjny może nasłuchiwać połączeń przychodzących na jednym porcie IPv6. Jeśli połączy się z nim klient IPv4, system automatycznie „opakuje” jego adres w format ::ffff:x.x.x.x.
Dzięki temu aplikacja widzi wszystkie połączenia jako IPv6, co upraszcza logikę programu, zarządzanie sesjami i logowanie zdarzeń. Bez tego mechanizmu każda aplikacja internetowa musiałaby posiadać dwa oddzielne moduły obsługi sieci, co zwiększałoby ryzyko błędów i komplikowało kod.
Często myli się mapowane adresy IPv4 (::ffff:x.x.x.x) z adresami kompatybilnymi z IPv4 (::x.x.x.x – bez ffff). Te drugie są obecnie uznawane za przestarzałe (deprecated) i nie powinny być już używane. Różnica polega na tym, że adresy kompatybilne miały służyć do automatycznego tunelowania ruchu IPv6 przez infrastrukturę IPv4, co w praktyce okazało się mało efektywne i zostało zastąpione przez inne technologie.
To ważne pytanie: czy możesz wpisać ::ffff:8.8.8.8 w przeglądarce i oczekiwać, że to zadziała? Zazwyczaj nie. Mapowane adresy IPv4 są mechanizmem wewnętrznym stosu sieciowego. Routery w internecie nie przesyłają pakietów skierowanych na takie adresy. Jeśli pakiet ma opuścić Twoje urządzenie i trafić do sieci IPv4, system operacyjny „rozpakuje” go, usuwając prefiks ::ffff: i wyśle jako standardowy pakiet IPv4.
Zatem mapowanie to przede wszystkim narzędzie programistyczne i systemowe, które pozwala na płynne współistnienie dwóch pokoleń internetu pod jednym dachem. Jeśli kiedykolwiek zobaczysz taki adres w logach swojego serwera, oznacza to po prostu, że użytkownik łączący się z Tobą korzysta ze starego protokołu IPv4, a Twój serwer jest na tyle nowoczesny, że obsługuje go poprzez stos IPv6.