Co to jest TCP?
Autor: Redakcja Domeny.ForSale 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:
- Klient wysyła komunikat SYN, proponując rozpoczęcie połączenia.
- Serwer odpowiada SYN-ACK, potwierdzając propozycję i przekazując własne parametry początkowe.
- 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:
- TCP nie zachowuje granic wiadomości. Jeśli aplikacja wyśle dwa komunikaty, odbiorca może odczytać je razem albo w kilku częściach. To protokół aplikacji musi określić, gdzie kończy się każdy komunikat.
- Potwierdzenie TCP nie oznacza wykonania operacji. Odbiór danych przez warstwę TCP serwera nie dowodzi, że sklep zapisał zamówienie lub system zaksięgował płatność. Do tego potrzebna jest odpowiedź aplikacji.
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.
| Cecha | TCP | UDP |
|---|---|---|
| Sposób przesyłania | Uporządkowany strumień bajtów | Oddzielne datagramy |
| Ponawianie utraconych danych | Wbudowane | Zależne od aplikacji |
| Ustanowienie połączenia | Wymagane | Brak takiej procedury w UDP |
| Typowy priorytet zastosowania | Kompletność i kolejność danych | Kontrola 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?
