Gość (83.4.*.*)
Historia protokołu IPv4 to jedna z najbardziej fascynujących opowieści o tym, jak tymczasowe rozwiązanie stało się fundamentem globalnej cywilizacji. Kiedy Vint Cerf i Bob Kahn projektowali TCP/IP pod koniec lat 70., nie budowali sieci dla miliardów ludzi kupujących lodówki z Wi-Fi. Budowali sieć badawczą dla garstki uniwersytetów i wojska. Gdyby jednak wtedy, w tamtych realiach technologicznych, wiedzieli, że ich dzieło opuści mury laboratoriów, prawdopodobnym standardem nie byłoby dzisiejsze IPv6, lecz system oparty na 48 bitach.
W 1977 roku, kiedy zapadały kluczowe decyzje, świat komputerów wyglądał zupełnie inaczej. Pamięć RAM była liczona w kilobajtach, a procesory miały ułamek mocy obliczeniowej dzisiejszych kalkulatorów. Vint Cerf, nazywany jednym z ojców internetu, wielokrotnie powtarzał w wywiadach, że wybór 32-bitowego adresu był "eksperymentem".
Logika była prosta: 32 bity pozwalają na adresowanie około 4,3 miliarda urządzeń ($2^{32}$). W tamtym czasie populacja Ziemi wynosiła około 4,5 miliarda ludzi. Wydawało się niemożliwe, aby każdy człowiek na planecie posiadał własny komputer, a co dopiero kilka urządzeń podłączonych do sieci. Twórcy uznali, że 4,3 miliarda adresów to zapas tak ogromny, że wystarczy na dekady testów, po których i tak powstanie "docelowy" protokół.
Gdyby twórcy mieli świadomość nadchodzącej rewolucji, najprawdopodobniej zdecydowaliby się na 48 bitów. Dlaczego akurat tyle? Odpowiedź tkwi w uwarunkowaniach technicznych tamtej epoki i architekturze sprzętowej.
Aby zrozumieć skalę, wykonajmy proste obliczenie:
Wynik: Zastosowanie 48 bitów zamiast 32 dałoby nam 65 536 razy więcej adresów. To ponad 281 bilionów unikalnych identyfikatorów. Taka liczba prawdopodobnie wystarczyłaby, aby opóźnić kryzys braku adresów IP o setki lat, nawet przy uwzględnieniu miliardów smartfonów i urządzeń IoT.
Można by zapytać: skoro chcieli zabezpieczyć przyszłość, dlaczego nie skoczyć od razu do 128 bitów, które mamy w IPv6? W latach 70. i 80. byłoby to rozwiązanie skrajnie nieefektywne, a wręcz niemożliwe do wdrożenia.
Nagłówek pakietu IPv6 jest znacznie większy niż IPv4. W świecie, gdzie łącza miały przepustowość rzędu 2,4 kb/s lub 9,6 kb/s, marnowanie cennych bitów na gigantyczne adresy byłoby "zbrodnią" inżynieryjną. Każdy dodatkowy bajt w nagłówku oznaczał wolniejszy transfer danych i większe obciążenie dla procesorów, które i tak ledwo radziły sobie z routingiem. 128-bitowy adres wymagałby 16 bajtów na źródło i 16 bajtów na cel – w sumie 32 bajty samej adresacji w każdym pakiecie. Dla ówczesnych systemów był to narzut nie do zaakceptowania.
Wiele osób myśli, że po IPv4 od razu przeskoczyliśmy do IPv6, bo ktoś "pomylił się w liczeniu". Nic bardziej mylnego! Protokół IPv5 rzeczywiście istniał i został opracowany pod koniec lat 70. (oficjalnie jako ST – Internet Stream Protocol).
Nie służył on jednak do zwiększenia puli adresowej. Był to eksperymentalny protokół do przesyłania głosu i wideo w czasie rzeczywistym. Wykorzystywał on te same 32-bitowe adresy co IPv4, więc nie rozwiązywał problemu limitów. Ponieważ nigdy nie wszedł do powszechnego użytku, numer "5" został zarezerwowany, a prace nad nowym standardem adresowania przeniesiono na numer "6".
Gdyby twórcy TCP/IP w 1981 roku (kiedy publikowano dokument RFC 791) dodali zaledwie dwa bajty do adresu, dzisiejszy internet wyglądałby zupełnie inaczej. Nie potrzebowalibyśmy technologii NAT (Network Address Translation), która pozwala wielu urządzeniom w domu korzystać z jednego publicznego IP, a konfiguracja sieci byłaby znacznie prostsza.
Z drugiej strony, to właśnie ograniczenia IPv4 wymusiły na inżynierach niesamowitą kreatywność w optymalizacji protokołów. Choć 32 bity to z dzisiejszej perspektywy mało, to właśnie ten "ciasny" standard pozwolił na szybki rozwój internetu na sprzęcie, który dziś uznalibyśmy za muzealny.