Internet to autostrada. Jak pakiety znajdują drogę do celu?
Wyobraź sobie autostradę. Ogromną. Tak ogromną, że łączy miasta, państwa, kontynenty, a nawet wyspy, do których normalnie trzeba dopłynąć statkiem.
Po tej autostradzie codziennie jeżdżą miliardy samochodów. Każdy przewozi jakąś informację. Jeden wiezie fragment filmu z YouTube, drugi wiadomość do znajomego, trzeci zdjęcie kota, a czwarty informację, że właśnie przegrałeś aukcję, choć licytowałeś przez ostatnie trzy godziny.
Wszyscy mają adres docelowy. Wszyscy chcą dojechać.
Jest tylko jeden drobny szczegół.
Na tej autostradzie kierowcy nie mają prawa samodzielnie wybierać drogi. 🤣
Witamy na Autostradzie Pakietów, zwanej potocznie Internetem!
— Zaraz, zaraz. Jak to nie mogą wybierać drogi? Przecież wiem, że jadę do Krakowa!
— Świetnie. A teraz proszę zjechać w prawo.
— Ale ja mam Kraków na wprost!
— Proszę zjechać w prawo.
— Ale dlaczego?!
— Bo tak wynika z tabelki.
— Z jakiej tabelki?!
— Z naszej. Następny!
I tak wygląda życie na autostradzie, której węzły mają własnych zarządców ruchu. Każdy zna pewne drogi, każdy podejmuje decyzje, a żaden nie musi wiedzieć, jak będzie wyglądała cała podróż.
Kierowca zna cel. Zarządca węzła wybiera następny odcinek.
W świecie informatyki taki zarządca nazywa się routerem, jego tabelka to tablica routingu, a cały proces kierowania samochodów do właściwych zjazdów to właśnie routing.
Brzmi poważnie? Spokojnie. Zaraz zobaczymy, co się dzieje, gdy zarządcy zaczynają sobie nawzajem pomagać.
A teraz wyobraź sobie, że jeden z zarządców ma nieaktualną mapę
— Do Krakowa? W lewo!
Dwadzieścia kilometrów dalej:
— Do Krakowa? W prawo!
Dwadzieścia kilometrów później:
— Pan znowu tutaj?!
— BO MNIE TU PRZYSŁALI!
— To proszę w lewo.
— JA JUŻ TAM BYŁEM!
— Nie dyskutować z tabelką! 🤣
I tak można jeździć od jednego węzła do drugiego, nigdy nie zbliżając się do celu.
W sieci takie zjawisko nazywa się pętlą routingu (routing loop). Powstaje, gdy decyzje o kierowaniu ruchu powodują, że informacje wracają do miejsc, przez które już przechodziły.
Czasami winna jest nieaktualna informacja o trasie. Czasami błędna konfiguracja. A czasami dwóch zarządców jest absolutnie przekonanych, że ten drugi wie lepiej.
— Ja wysyłam do niego, bo on zna drogę!
— A ja do niego, bo on zna drogę!
— A KTO WŁAŚCIWIE ZNA DROGĘ?!
— Proszę nie zadawać trudnych pytań w godzinach szczytu.
A ile razy można objechać ten sam węzeł?
Na naszej autostradzie każdy samochód dostaje specjalny licznik przejazdów przez węzły.
Powiedzmy, że ma ich 64.
Na pierwszym węźle zostają 63. Na kolejnym 62. I tak dalej.
— A jak dojadę do zera?
— Koniec podróży.
— Ale ja mam jeszcze pół baku!
— Nas nie interesuje paliwo. Limit się skończył.
— To może dopłacę?
— NIE MA TAKIEJ OPCJI. PROSZĘ OPUŚCIĆ AUTOSTRADĘ.
Ten licznik w IPv4 to TTL (Time To Live), a w IPv6 jego odpowiednikiem jest Hop Limit.
Każdy kolejny router zmniejsza go o jeden. Gdy limit się wyczerpie, pakiet jest odrzucany.
Po co? Między innymi po to, żeby w przypadku pętli routingu samochody nie jeździły w kółko do końca świata.
A kiedy pakiet zostaje odrzucony z powodu wyczerpania limitu, router może wysłać komunikat ICMP Time Exceeded.
„Pański pojazd przekroczył dopuszczalną liczbę węzłów. Dalsza podróż została zakończona. Reklamacje prosimy kierować do zarządcy trasy”.
Bramki, kolejki i wielkie korki
Teraz wyobraź sobie bramkę, która może obsłużyć tysiąc samochodów na sekundę.
Wszystko idzie pięknie. Samochody podjeżdżają, przejeżdżają, nikt nie trąbi.
Aż nagle przyjeżdża pięć tysięcy samochodów na sekundę.
— Szefie, korek!
— To niech poczekają!
— Ale kolejka już sięga poprzedniego węzła!
— To niech poczekają dalej!
— SZEFIE, NIE MA JUŻ GDZIE ICH USTAWIAĆ!
— TO NASTĘPNYCH NIE WPUSZCZAĆ!
I część samochodów po prostu znika z naszej autostrady.
To właśnie packet loss — utrata pakietów.
— Ale jak to ZNIKA?! Przecież wiozłem ważną wiadomość!
— To proszę ją wysłać jeszcze raz.
— A kto za to odpowiada?!
— Zależy, jakim transportem pan jedzie. 🤣
I tu poznajemy dwóch bardzo różnych przewoźników.
TCP — przewoźnik, który lubi potwierdzenia
— Dzień dobry, dostarczyłem przesyłkę numer 153.
— Potwierdzam odbiór.
— A przesyłkę 154?
— Nie dostałem.
— JAK TO NIE DOSTAŁ PAN?!
— No nie dostałem.
— To wysyłam ponownie!
TCP dba o niezawodne dostarczenie uporządkowanego strumienia danych. Kontroluje, co dotarło, wykrywa braki i w razie potrzeby retransmituje dane.
Ma też mechanizmy regulujące tempo wysyłania, żeby nie dokładać bez końca samochodów do już zatkanej autostrady.
UDP — przewoźnik, który nie czeka na pokwitowanie
— Przesyłka 153 wysłana!
— A dotarła?
— Nie wiem.
— To może pan sprawdzi?!
— Nie mam tego w umowie.
— A 154?
— Już jedzie!
UDP nie zapewnia sam z siebie potwierdzeń, retransmisji ani zachowania kolejności dostarczenia danych.
To nie znaczy, że jest gorszy. Jest po prostu inny.
Jeśli prowadzisz rozmowę na żywo, często bardziej zależy Ci na najnowszym dźwięku niż na odzyskaniu sylaby sprzed pięciu sekund.
Oczywiście aplikacja korzystająca z UDP może zbudować własne mechanizmy kontroli dostarczania. Sam UDP ich jednak nie zapewnia.
A teraz wyobraź sobie trzy samochody
Wyruszają jeden po drugim. Tą samą drogą.
Pierwszy dojeżdża po 30 milisekundach.
Drugi po 80.
Trzeci po 35.
— Ale jak to?! Przecież wyjechaliśmy niemal razem!
— Pierwszy przejechał bez kolejki. Drugi utknął na bramce. Trzeci miał więcej szczęścia.
— To dlaczego mój film się zacina, skoro mam szybki Internet?!
— Bo szybka autostrada nie oznacza, że każdy samochód przejedzie ją w identycznym czasie.
To właśnie jitter — zmienność opóźnienia.
Samo opóźnienie nazywamy często latency, a do jego sprawdzania używamy między innymi narzędzia ping, które mierzy czas podróży komunikatu tam i z powrotem.
I teraz wyobraź sobie wideokonferencję.
Jedno słowo dociera po 30 milisekundach, kolejne po 80, następne po 35.
— Dzień... dob... ry... czy... mnie... sły...
— CO?!
— ...szycie?
I już wiesz, dlaczego dobre wyniki testu przepustowości nie gwarantują idealnej rozmowy.
Drogowe atrakcje specjalne
Na naszej autostradzie są jeszcze miejsca, których zwykły kierowca wolałby nie odwiedzać.
Brama wymiany tablic rejestracyjnych — NAT i maskarada
— Dlaczego zmieniacie mi numery?!
— Bo na zewnątrz wszyscy jeździcie pod jednym adresem.
— ALE JAK MAM POTEM ODEBRAĆ ODPOWIEDŹ?!
— Spokojnie, zapisaliśmy pana w zeszycie.
Tak działa popularny wariant NAT-u (Network Address Translation), często nazywany również maskaradą (masquerade).
W praktyce przy współdzieleniu jednego adresu publicznego zwykle zmienia się nie tylko adres nadawcy, ale również numer portu, żeby można było rozróżnić poszczególne połączenia.
Zarządca bramki prowadzi więc odpowiedni rejestr i wie, komu przekazać powracającą odpowiedź.
O ile oczywiście zeszyt nie wpadnie mu do niszczarki.
Terminal transportu specjalnego — VPN
— Proszę wjechać samochodem na ciężarówkę.
— Ale ja sam potrafię jeździć!
— Doskonale. Na tym odcinku pojedzie pan jako ładunek.
— A kierowca ciężarówki wie, co przewozi?
— Niekoniecznie. I właśnie o to chodzi.
To tunelowanie i enkapsulacja.
W uproszczeniu: jeden pakiet zostaje zapakowany w drugi, który przewozi go przez wybrany fragment sieci.
Tak mogą działać tunele VPN, choć nie każdy VPN szyfruje dane w identyczny sposób, a niektóre mechanizmy tunelowania w ogóle nie zapewniają szyfrowania.
Samochód dotrze do końca tunelu, wyjedzie z ciężarówki i pojedzie dalej.
— A za transport płaci się osobno?
— Nie, ale może pan stracić trochę miejsca na bagaż.
— JAK TO?!
— Ciężarówka też ma swoje dokumenty.
I tak zaczyna się kolejny temat: narzut nagłówków.
Wiadukt o ograniczonej wysokości — MTU i fragmentacja
— Wysokość zestawu?
— Cztery metry osiemdziesiąt.
— A prześwit?
— Cztery dwadzieścia.
— To co robimy?
— Na pewno nie wciskamy ciężarówki na siłę.
Na drogach obowiązują ograniczenia wysokości i masy pojazdów. W sieciach mamy MTU (Maximum Transmission Unit), czyli maksymalny rozmiar pakietu, jaki można przesłać przez dany odcinek na określonym poziomie transmisji.
Kiedy pakiet jest za duży, czasami można go podzielić na mniejsze części.
To fragmentacja pakietów.
Ale uwaga! Nie zawsze wolno i nie zawsze się to robi.
W IPv4 router może fragmentować pakiety w określonych warunkach, natomiast w IPv6 routery nie wykonują fragmentacji po drodze. Wtedy nadawca musi odpowiednio dostosować rozmiar przesyłanych danych.
— Czyli mam rozładować ciężarówkę i wysłać to trzema busami?
— Czasami tak.
— A jeśli nie wolno?
— To proszę wrócić do nadawcy i powiedzieć, żeby wysłał mniejszą ciężarówkę.
MTU, MSS i fragmentacja zasługują na osobny odcinek naszej autostrady. Zwłaszcza że jeden źle dobrany rozmiar pojazdu potrafi skutecznie popsuć komuś cały dzień.
Pas uprzywilejowany — QoS i zarządzanie ruchem
— Dlaczego tamten samochód mnie wyprzedza?!
— Bo ma wyższy priorytet.
— A ja?!
— Pan ma zdjęcie kota.
— TO JEST BARDZO WAŻNY KOT!
— Dla pana niewątpliwie. Dla naszego systemu kolejkowania niekoniecznie.
Ale uwaga. QoS (Quality of Service) to nie tylko jeden pas dla uprzywilejowanych.
Na naszej autostradzie mogą istnieć różne zasady obsługi ruchu.
Jeden zarządca przepuszcza pojazdy zgodnie z kolejnością przyjazdu.
Drugi daje pierwszeństwo karetkom.
Trzeci wyznacza osobne pasy dla ciężarówek, osobowych i autobusów.
Czwarty pilnuje, żeby jeden przewoźnik nie zajął całej autostrady.
To odpowiedniki różnych mechanizmów kolejkowania, priorytetyzacji i zarządzania ruchem, takich jak traffic shaping czy traffic policing.
— Czyli mogę wykupić sobie pas VIP?
— Zależy od zarządcy.
— A ile kosztuje?
— Tyle, ile administracja sieci uzna za stosowne.
— TO JA POPROSZĘ KARETKĘ!
— Proszę pana, zdjęcie kota nadal nie jest stanem zagrożenia życia.
A co, jeśli autostrada prowadzi w kosmos?
— Dzień dobry, chciałbym dostać się do Internetu przez satelitę.
— Proszę bardzo, prom kosmiczny odjeżdża za chwilę.
— A gdzie jest autostrada?
— Najpierw w górę.
— Jak wysoko?
— Kilkaset kilometrów.
— I TO MA DZIAŁAĆ?!
— Działa. Proszę tylko nie otwierać okien. 🤣
Tak oto do naszego świata wjeżdża Starlink — dostęp do Internetu przez satelity poruszające się na niskiej orbicie okołoziemskiej.
W przeciwieństwie do tradycyjnych satelitów geostacjonarnych znajdują się one dużo bliżej Ziemi, co pozwala osiągać znacznie niższe opóźnienia.
Ale sama droga przez kosmos nie gwarantuje braku korków na pozostałych odcinkach.
Jeśli chcesz przejechać dalej po naszej Autostradzie Pakietów, zajrzyj także do tematów: adresach IP, DHCP, TCP i UDP.
Co się naprawdę dzieje pod maską?
Cała ta autostrada jest oczywiście analogią.
Samochody to pakiety danych. Węzły to routery. Ich tabelki to tablice routingu. Zeszyty z tablicami rejestracyjnymi to uproszczony obraz mechanizmów NAT. Ciężarówki reprezentują enkapsulację, a kolejki na bramkach — rzeczywiste problemy z obsługą ruchu.
Prawdziwe routery nie oglądają map samochodowych, nie pobierają opłat na bramkach i nie wystawiają mandatów.
Nie muszą też znać całej drogi do celu. Wybierają kolejny etap podróży na podstawie dostępnych informacji o trasach.
A korki, ograniczenia, kolejki, zmiany tras i zagubione przesyłki?
Te są już jak najbardziej prawdziwe.
I właśnie dlatego Internet, choć potrafi połączyć dwa komputery oddalone o tysiące kilometrów, czasami nie potrafi bez zacięcia pokazać filmu z kotem.
Na następnym odcinku: kontrola tablic rejestracyjnych, czyli NAT. Zarządca bramki zapewnia, że zeszyt z adresami jeszcze nigdy mu się nie zgubił.
Zeszyt aktualnie nie został odnaleziony. 🤣❤️
