Gość (83.4.*.*)
Wielu użytkowników sieci, słysząc o skracaniu adresów IP, automatycznie myśli o nowszym protokole IPv6, gdzie zasady kompresji zer są powszechnie znane i stosowane. W przypadku IPv4 sprawa wygląda nieco inaczej. Choć ten starszy protokół jest znacznie sztywniejszy w swojej budowie, istnieją pewne techniczne triki i zasady zapisu, które pozwalają na uproszczenie lub zmianę formy adresu. Warto jednak wiedzieć, że nie każda metoda "skracania" zadziała w każdym programie czy przeglądarce.
Krótka odpowiedź brzmi: nie. W protokole IPv6 możemy używać podwójnego dwukropka ::, aby zastąpić ciągi zer, ale IPv4 opiera się na stałej strukturze czterech oktetów (liczb od 0 do 255) oddzielonych kropkami. Mimo to, systemy operacyjne i niektóre aplikacje pozwalają na pewne uproszczenia, które mogą sprawić, że adres będzie wyglądał na krótszy lub po prostu inny.
Najpopularniejszą formą "skracania" jest usuwanie zer wiodących w poszczególnych oktetach. Jeśli Twój adres to 192.168.001.010, standardowo zapiszesz go jako 192.168.1.10. To najbardziej naturalna i powszechna forma optymalizacji zapisu, którą stosujemy niemal podświadomie.
Ciekawostką, o której wie niewielu użytkowników, jest fakt, że niektóre implementacje stosu TCP/IP (szczególnie w systemach Linux czy w przeglądarkach internetowych) pozwalają na pomijanie części adresu. Jeśli wpiszesz w przeglądarce adres 127.1, system zinterpretuje to jako 127.0.0.1.
Zasada działania tego mechanizmu jest prosta:
10.1), system uzna pierwszą za pierwszy oktet, a drugą za ostatni, wypełniając środek zerami (10.0.0.1).192.168.1), system zinterpretuje to jako 192.168.0.1.Należy jednak zachować ostrożność. Nie jest to oficjalny standard zapisu i wiele urządzeń sieciowych (jak routery czy firewalle) odrzuci taki format jako błędny. Jest to raczej "skrót myślowy" akceptowany przez niektóre interfejsy programistyczne.
Adres IPv4 to w rzeczywistości 32-bitowa liczba binarna. Zamiast zapisywać go w formie czterech oktetów, można go skonwertować na jedną, dużą liczbę dziesiętną. Choć dla człowieka taki zapis jest trudniejszy do odczytania, dla komputera jest on bardzo naturalny. Taki format nazywamy "Dotted Decimal to Long".
Załóżmy, że chcemy skrócić (a właściwie przekształcić) popularny adres DNS Google: 8.8.4.4.
Rozbijamy adres na poszczególne oktety:
Liczba 1: 8
Liczba 2: 8
Liczba 3: 4
Liczba 4: 4
Zastosujemy wzór matematyczny:
Każdy oktet mnożymy przez odpowiednią potęgę liczby 256 (ponieważ jeden oktet ma 8 bitów, a ~$2^8 = 256~#$).
Wzór: ~$(L1 \times 256^3) + (L2 \times 256^2) + (L3 \times 256^1) + (L4 \times 256^0)~#$
Podstawiamy dane do obliczeń:
Sumujemy wyniki:
~$134\,217\,728 + 524\,288 + 1\,024 + 4 = 134\,743\,044~#$
Wynik: Adres 8.8.4.4 można zapisać jako 134743044. Jeśli wpiszesz tę liczbę w pasek adresu przeglądarki (w niektórych systemach), zostaniesz przekierowany do serwera o tym IP.
Podczas próby skracania lub "porządkowania" adresów IP można wpaść w pułapkę systemu ósemkowego. W informatyce liczby zaczynające się od zera (np. 010) są często interpretowane jako liczby w systemie ósemkowym, a nie dziesiętnym.
Jeśli spróbujesz wpisać adres 192.168.010.1, niektóre systemy mogą zinterpretować 010 jako 8 w systemie dziesiętnym. W efekcie zamiast połączyć się z adresem kończącym się na .10, połączysz się z .8. Dlatego najlepszą i najbezpieczniejszą zasadą skracania IPv4 jest po prostu usuwanie zbędnych zer, ale bez dodawania ich na początku liczb, jeśli nie są potrzebne.
Czy wiesz, że adres 0 (po prostu zero) w wielu systemach jest interpretowany jako 0.0.0.0? Z kolei adres 1 może zostać zinterpretowany jako 0.0.0.1. To ekstremalne przykłady skracania, które pokazują, jak elastycznie (choć czasem niebezpiecznie) oprogramowanie podchodzi do interpretacji wpisywanych przez nas danych sieciowych.