TCP/IP - zrozumieć potężny duet

Jeden z moich klientów to firma Loomis—Pay. To firma-córka dość dużej, działającej od wielu lat firmy Loomis. Zajmują się oni opancerzonym transportem gotówki. Myślę, że w zrozumieniu protokołu TCP pomoże nam porównanie do takiej właśnie usługi. W dużym skrócie, odpowiada on za bezpieczne dostarczenie pakietu informacji od miejsca do miejsca!

Kluczowe etapy działania procesu zgodnego z TCP

Cały proces podzieliłem na 7 głównych kroków, które mi przypominają trochę dostawę kurierską lub właśnie transport gotówki.

Three-way handshake (trzyetapowe “uściśnięcie dłoni”).

  1. Nim dane (paczki) dokądś powędrują, najpierw musi dojść do poinformowania odbiorcy o takim zamiarze. Taki sygnał nazywa się SYN (od synchronizacji). To trochę jak otrzymanie SMS o nadaniu do nas paczki.
  2. Następnie jako odbiorca moglibyśmy odmówić przyjęcia takiej paczki, jeżeli nie jesteśmy pewni co do jej zawartości lub intencji nadającego. Ten etap nazywa się SYN-ACK (druga część pochodzi od słowa “acknowledge” czyli “potwierdzić”, “uznać”). Odbiorca (na przykład serwer) musi wyrazić zgodę na przyjęcie pakietów informacji.
  3. Ostatni etap to ACK, czyli finalne potwierdzenie otrzymania pakietu. Jeżeli urządzenie docelowe, które jest odbiorcą nie wyśle tego sygnału, to wysyłka pakietu jest ponawiana. To bardzo przydatna funkcjonalność przy przekazywaniu większych rozmiarów danych, podzielonych na mniejsze pakiety. W przypadku przesyłek, to złożenie podpisu potwierdzającego pomyślna dostawę pod dom.

Podział na pakiety

Pamiętasz, że w artykule o IP operowaliśmy na 1500-bitowych pakietach? Tamten protokół nie byłby w stanie sam obsłużyć dużych transferów danych podzielonych na mniejsze paczki. Uczestniczy on jednak nadal w tym co opisaliśmy wyżej. Po prostu zajmuje się routingiem poszczególnych części, bez “zrozumienia”, że to elementy większej układanki - za to już odpowiada TCP. Ponownie odniosę się do przykładu mebli z Ikei. Zwykle duża szafa przychodzi we wielu mniejszych paczkach, czasem przywożą je inni kurierzy, w innych dniach.

Numeracja pakietów

Jeżeli miałeś okazję składać Lego to wiesz, że przy bardziej zaawansowanych zestawach dostaje się kilka ponumerowanych woreczków. To po to żeby łatwiej nam się szukało elementów zgodnie z kolejnością składania w instrukcji. Podobnie jest z danymi obsługiwanymi przez TCP. Też są numerowane, po to żeby mieć pewność, że dojdą wszystkie i zostaną odpakowane i złożone tak jak trzeba.

Kontrola przepływu danych

TCP odpowiada też za regulowanie ilości przesyłanych naraz danych, tak aby nie przeciążać urządzenia odbiorcy lub sieci, która uczestniczy w wymianie informacji. Tutaj warto podkreślić, że protokół realizowany jest tylko na urządzeniu początkowym i końcowym. Urządzenia sieciowe, które uczestniczą w wymianie informacji (bo np. informacje muszą pokonać bardzo długi dystans, od USA do Polski) nie implementują same w sobie tego protokołu.

Ciekawostka - istnieje jednak sytuacja, w której jakieś urządzenie “po drodze” udaje te graniczne urządzenia, zakłamując informacje. Taki atak nazywa się “man-in-the-middle”.

Ponowne wysyłanie paczek

Jeżeli nie otrzymamy informacji zwrotnej ACK mówiącej, że pakiet o danym numerze poprawnie dotarł do celu, nastąpi próba ponowienia jego wysyłki. W teorii - nic nie powinno zginąć. To trochę tak jak ponawianie próby doręczenia kiedy nie było nas akurat w domu przy pierwszym podejściu kuriera (albo go nie słyszeliśmy).

Finalne zakończenie dostawy

Jak wszystko dotarło, TCP rozpoczyna proces zamykania połączenia. Obie strony muszą to potwierdzić.

Tagi:



Podobne artykuły

4 min. czytania

Jak działa i skąd się wziął internet

Niekiedy można mieć wrażenie, że internet jest z nami od zawsze. Czy wiemy jednak jak i kiedy powstał? Jakie są podstawy jego działania?

3 min. czytania

Internet Protocol - czym jest IP i jak działa?

Protokoły (ang. protocols) to podstawa funkcjonowania internetu - od samego jego początku. Pierwszym duetem, który odgrywał znaczącą rolę był TCP/IP, chociaż bę...

4 min. czytania

HTTP, wszystko co musisz wiedzieć

Do czego służy najbardziej znany wśród webdeveloper’ów protokół? Czym się różnią jego wersje? Wszystkie niezbędne informacje w jednym artykule.

5 min. czytania

Typy zapytań HTTP

Wiesz co to GET i POST, ale czy używałeś TRACE albo CONNECT? Używać PUT czy PATCH? Odpowiemy sobie dzisiaj na te pytania.