Jakie masz pytanie?

lub

Co stałoby się, gdyby na przełomie lat 70. i 80. XX wieku zmieniono przeznaczenie zakresu adresów IPv4 od 0.0.0.1 do 0.255.255.255 z funkcji „ten host w tej sieci” na pulę adresów publicznych?

wyczerpanie adresów ipv4 historia protokołu IPv4 pula adresów IP
avatar

Gość (83.4.*.*)



Odpowiedź:

Wyobraźmy sobie przełom lat 70. i 80. XX wieku. To czas, w którym rodziły się fundamenty dzisiejszego cyfrowego świata. Inżynierowie pracujący nad protokołem IP (Internet Protocol) nie przypuszczali, że sieć rozrośnie się do miliardów urządzeń. W tamtym okresie podjęto wiele decyzji projektowych, które z dzisiejszej perspektywy wydają się marnotrawstwem. Jedną z nich było zarezerwowanie całego bloku adresowego 0.0.0.0/8 (czyli ponad 16 milionów adresów) dla funkcji „ten host w tej sieci”. Gdyby wtedy zdecydowano inaczej, historia Internetu mogłaby wyglądać nieco inaczej, choć rewolucji prawdopodobnie by nie było.

Czym właściwie jest blok 0.0.0.0/8?

W architekturze IPv4 adresy są podzielone na bloki. Blok zaczynający się od zera (od 0.0.0.1 do 0.255.255.255) został zdefiniowany jako specjalny. Zgodnie z dokumentacją RFC 791 i późniejszymi, adresy te nie mogą być używane jako publiczne adresy docelowe w Internecie. Ich pierwotnym celem było ułatwienie komunikacji urządzeniom, które jeszcze nie znają swojego własnego adresu IP (np. podczas startu systemu i wysyłania zapytania o konfigurację).

W praktyce oznacza to, że ponad 16,7 miliona potencjalnych punktów dostępu do sieci zostało „zamrożonych” na samym starcie.

Zysk w postaci 16,7 miliona adresów – czy to dużo?

Aby zrozumieć skalę, musimy spojrzeć na liczby. Cała pula IPv4 to około 4,29 miliarda adresów. Jeden blok typu „Class A” (taki jak 0.0.0.0/8) to dokładnie ~$2^{24}~#$ adresów.

Matematyczne wyliczenie dostępnych adresów w tym bloku:

  1. Sieć IPv4 używa 32-bitowych adresów.
  2. Blok /8 oznacza, że pierwsze 8 bitów jest stałe (w tym przypadku same zera).
  3. Pozostają 24 bity do dowolnej konfiguracji dla hostów.
  4. Liczba kombinacji to ~$2^{24} = 16\,777\,216~#$.

Gdyby na przełomie lat 70. i 80. te adresy trafiły do puli publicznej, zyskalibyśmy dodatkowe 16,7 miliona unikalnych identyfikatorów. W skali globalnej to zaledwie 0,39% całkowitej przestrzeni IPv4. Choć liczba ta wydaje się duża, w kontekście tempa wzrostu Internetu w XXI wieku, wystarczyłaby ona na pokrycie światowego zapotrzebowania na adresy przez zaledwie kilka dodatkowych miesięcy przed ich całkowitym wyczerpaniem.

Opóźnienie wyczerpania puli IPv4

Oficjalne wyczerpanie wolnych bloków IPv4 przez IANA (Internet Assigned Numbers Authority) nastąpiło w 2011 roku. Gdybyśmy dysponowali dodatkowym blokiem 0/8, moment ten zostałby przesunięty o około pół roku do roku, biorąc pod uwagę ówczesne tempo przydzielania adresów dużym dostawcom i korporacjom.

Nie zmieniłoby to jednak konieczności wdrożenia protokołu IPv6. Problem braku adresów był strukturalny, a nie ilościowy w skali kilku milionów. Zmiana przeznaczenia tego zakresu 40 lat temu byłaby jedynie „plastrem” na ranę, która i tak wymagała operacji.

Problemy techniczne i „duchy” w kodzie

Najciekawszym aspektem tej zmiany nie jest jednak sama liczba adresów, ale stabilność systemów. Wiele wczesnych implementacji stosu TCP/IP traktowało zero jako wartość specjalną (często utożsamianą z błędem lub wartością NULL w programowaniu).

Gdyby zmieniono przeznaczenie tego zakresu, programiści musieliby napisać znacznie bardziej rygorystyczny kod. Do dziś wiele starych routerów i systemów operacyjnych „hardkoduje” blok 0/8 jako nieprawidłowy. Gdyby te adresy były publiczne, mogłoby dochodzić do:

  • Problemów z routingiem: Routery mogłyby odrzucać pakiety z takimi adresami, uznając je za błędne.
  • Luki w bezpieczeństwie: Niektóre zapory sieciowe (firewalle) domyślnie ufają ruchowi z „sieci zero” lub traktują go w sposób specyficzny, co mogłoby zostać wykorzystane przez hakerów.

Ciekawostka: Projekt „Unicast 0/8”

Warto wiedzieć, że temat ten nie jest tylko teoretyczny. Od lat trwają dyskusje w środowisku inżynierów sieciowych (IETF), aby „odmrozić” ten zakres i zacząć go używać jako normalne adresy publiczne. Projekt ten nazywa się często „Unicast 0/8”. Głównym problemem jest jednak to, że miliony urządzeń na świecie (stare drukarki, sterowniki przemysłowe, routery) mają ten zakaz wpisany na sztywno w swoje oprogramowanie (firmware), którego nie da się zaktualizować. Próba użycia tych adresów dzisiaj mogłaby „położyć” fragmenty globalnej sieci.

Czy Internet wyglądałby inaczej?

Gdyby decyzję podjęto na przełomie lat 70. i 80., prawdopodobnie nie odczulibyśmy tego dzisiaj w żaden sposób. Inżynierowie po prostu nauczyliby się żyć z „zerem” jako normalnym adresem, tak jak nauczyliśmy się żyć z adresem 1.1.1.1 (który należy do firmy Cloudflare, a kiedyś też był traktowany po macoszemu).

Największą różnicą byłoby to, że dzisiaj jakaś wielka korporacja (np. IBM, Apple czy MIT – które w tamtych latach otrzymywały całe bloki /8) posiadałaby zakres zaczynający się od zera. Być może zamiast słynnego adresu Google 8.8.8.8, najłatwiejszym do zapamiętania adresem DNS byłoby coś w stylu 0.0.0.1.

Podsumowanie techniczne

  • Liczba odzyskanych adresów: 16 777 216.
  • Wpływ na datę wyczerpania IPv4: Opóźnienie o ok. 6-12 miesięcy.
  • Główna przeszkoda: Konieczność przepisania niskopoziomowego kodu w systemach operacyjnych lat 80.
  • Dzisiejszy status: Zakres nadal pozostaje zarezerwowany i w dużej mierze bezużyteczny w publicznym Internecie.
Podziel się z innymi: