Co to jest TCP?

Autor: Opublikowano

W skrócie: TCP to protokół transportowy, czyli zestaw reguł przesyłania danych między aplikacjami działającymi w sieci. Zapewnia dostarczenie danych w odpowiedniej kolejności, wykrywa braki i ponawia transmisję utraconych fragmentów. Nie gwarantuje jednak, że każde połączenie zakończy się powodzeniem, ani sam nie szyfruje przesyłanych informacji.

Jaką rolę pełni TCP w internecie?

TCP, od angielskiego Transmission Control Protocol, działa pomiędzy aplikacjami a warstwą odpowiedzialną za przesyłanie pakietów przez sieć. Korzystają z niego między innymi poczta elektroniczna, zdalne logowanie przez SSH oraz wiele połączeń ze stronami internetowymi. Dzięki TCP aplikacja nie musi samodzielnie pilnować kolejności fragmentów danych i ponawiać ich wysyłania po utracie.

TCP często występuje obok skrótu IP, ale te protokoły mają inne zadania. IP odpowiada za adresowanie i przesyłanie pakietów między urządzeniami; nie zapewnia ich dostarczenia ani właściwej kolejności. TCP dodaje mechanizmy potrzebne do niezawodnego przesyłania uporządkowanego strumienia bajtów, czyli ciągu danych odczytywanego przez aplikację.

Można to porównać do wysyłki ponumerowanych części dokumentu. IP pomaga skierować przesyłki do odbiorcy, natomiast TCP pilnuje numeracji, potwierdzeń i ponownego wysłania brakujących części. To uproszczenie: w rzeczywistości TCP numeruje bajty, a nie strony dokumentu.

Jak TCP nawiązuje połączenie i przesyła dane?

Zanim rozpocznie się zwykła wymiana danych, TCP ustanawia połączenie. Podstawowa procedura składa się z trzech kroków, określanych jako three-way handshake:

  1. Klient wysyła komunikat SYN, proponując rozpoczęcie połączenia.
  2. Serwer odpowiada SYN-ACK, potwierdzając propozycję i przekazując własne parametry początkowe.
  3. Klient wysyła ACK, czyli potwierdzenie odpowiedzi serwera.

Podczas tego uzgadniania obie strony ustalają między innymi początkowe numery sekwencyjne, które pozwalają śledzić pozycję danych w strumieniu. Samo ustanowienie połączenia nie oznacza jeszcze zalogowania użytkownika ani sprawdzenia tożsamości serwera.

Dane są następnie przesyłane w segmentach, czyli porcjach zawierających fragment danych i informacje sterujące TCP. Odbiorca potwierdza odebrane dane, a nadawca wykrywa prawdopodobne straty na podstawie potwierdzeń lub upływu czasu. Brakujące dane wysyła ponownie — jest to retransmisja.

Jeśli segmenty dotrą w innej kolejności, TCP porządkuje je przed udostępnieniem aplikacji. Usuwa też skutki duplikacji, aby aplikacja nie odczytała tych samych bajtów dwukrotnie. Gdy awaria trwa zbyt długo, połączenie może zostać przerwane zamiast skutecznie dostarczyć całość.

Co TCP zapewnia, a czego nie robi?

Oprócz pilnowania kolejności TCP reguluje tempo transmisji. Kontrola przepływu chroni odbiorcę przed napływem większej ilości danych, niż może chwilowo przyjąć. Kontrola przeciążenia dostosowuje wysyłanie do warunków sieci, ograniczając presję na przeciążone łącza.

TCP zawiera również sumę kontrolną, która pomaga wykrywać przypadkowe uszkodzenia segmentów. Nie jest to jednak zabezpieczenie kryptograficzne przed celową modyfikacją. Szyfrowanie i uwierzytelnianie zapewniają inne mechanizmy, na przykład TLS wykorzystywany w HTTPS.

Istotne są jeszcze dwa ograniczenia:

Przykładowo po zerwaniu połączenia podczas składania zamówienia nie da się z samego błędu TCP ustalić, czy zamówienie powstało. Przed ponowieniem operacji należy sprawdzić jej status w sklepie, zamiast zakładać, że dane nie dotarły.

Czym TCP różni się od UDP?

UDP to inny protokół transportowy. Przesyła niezależne wiadomości, zwane datagramami, bez wbudowanego potwierdzania odbioru, retransmisji i porządkowania. Aplikacja może dodać takie mechanizmy, ale UDP sam ich nie zapewnia.

CechaTCPUDP
Sposób przesyłaniaUporządkowany strumień bajtówOddzielne datagramy
Ponawianie utraconych danychWbudowaneZależne od aplikacji
Ustanowienie połączeniaWymaganeBrak takiej procedury w UDP
Typowy priorytet zastosowaniaKompletność i kolejność danychKontrola aplikacji nad opóźnieniem i stratami

Przy pobieraniu pliku brakujący fragment trzeba uzupełnić, więc mechanizmy TCP są przydatne. Podczas rozmowy głosowej spóźniony fragment dźwięku może być mniej użyteczny niż pominięcie krótkiej przerwy. Dlatego rozwiązania czasu rzeczywistego często wykorzystują UDP.

Nie oznacza to, że UDP zawsze jest szybszy ani że każda strona korzysta z TCP. HTTP/1.1 i HTTP/2 zwykle działają przez TCP, natomiast HTTP/3 korzysta z QUIC opartego na UDP. QUIC sam zapewnia między innymi niezawodne przesyłanie strumieni i szyfrowanie.

Co oznacza port TCP w ustawieniach sieci?

Port to numer pomagający systemowi skierować ruch do właściwej usługi. Adres IP wskazuje punkt w sieci, a port pozwala rozróżniać usługi dostępne pod tym adresem. Typowym przykładem jest port TCP 443, używany przez HTTPS przez TCP.

TCP i UDP mają oddzielne przestrzenie portów. Reguła zapory dopuszczająca TCP 443 nie dopuszcza automatycznie UDP 443, z którego często korzysta HTTP/3. Sam otwarty port nie dowodzi też, że aplikacja działa poprawnie lub bezpiecznie.

Jeśli konfigurujesz zaporę, sprawdź w dokumentacji konkretnej usługi wymagany protokół, numer portu i kierunek ruchu. To pozwoli utworzyć precyzyjną regułę zamiast niepotrzebnie otwierać dostęp dla całego ruchu TCP i UDP.

Zobacz też: Co oznacza www?

Przeczytaj także

Dowiedz się, jak PHP-FPM obsługuje żądania PHP, czym różni się od serwera WWW i jak dobrać ustawienia procesów do ruchu oraz zasobów hostingu.
Poznaj BIND, otwarte oprogramowanie serwera DNS: sprawdź, jak obsługuje domeny, czym różnią się jego role i kiedy warto samodzielnie go wdrożyć.
Poznaj najważniejsze Security Headers, ich rolę w ochronie strony oraz sposób sprawdzania i wdrażania nagłówków bez blokowania potrzebnych funkcji.