
ŚrednioPoczątkującyDevOps
Jaka jest główna różnica między protokołami TCP i UDP?
Krótka odpowiedź
TCP to zorientowany połączeniowo, niezawodny protokół, który gwarantuje dostawę, zamawianie,
i sprawdzanie błędów kosztem kosztów ogólnych. UDP to prosty protokół bezpołączeniowy
bez gwarancji dostawy ani zamówienia, ale jest szybszy i lżejszy.
TCP i UDP to dwa główne protokoły warstwy transportowej działające na bazie protokołu IP. Podstawowe rozróżnienie: protokół TCP jest zorientowany na połączenie i niezawodny, podczas gdy UDP jest bezpołączeniowy i działa na zasadzie „odpal i zapomnij”.
TCP (RFC 9293)
- Zorientowany na połączenie. Przed wysłaniem danych punkty końcowe wykonują trójstronne uzgadnianie (3WHS): SYN → SYN-ACK → ACK, synchronizując początkowe numery sekwencyjne.
- Niezawodny i uporządkowany. Każdy bajt otrzymuje numer sekwencyjny; odbiornik wysyła potwierdzenia (ACK), utracone segmenty są retransmitowane, a dane są ponownie składane w pierwotnej kolejności. Integralność jest weryfikowana za pomocą sumy kontrolnej. RFC 9293 stwierdza, że protokół TCP „zapewnia niezawodną usługę strumienia bajtów o uporządkowanej kolejności”.
- Strumień bajtów, brak granic wiadomości. TCP dostarcza nieustrukturyzowany strumień bajtów: granice wiadomości nie są zachowywane (aplikacja musi tworzyć własne ramki w ramkach). Z kolei protokół UDP jest zorientowany na komunikaty — każdy datagram jest dostarczany jako oddzielna, kompletna jednostka lub w ogóle nie jest dostarczany (jedno wysłanie do = jedno odtworzenie).
- Kontrola przepływu i zatorów. TCP ogranicza szybkość wysyłania, tak aby nie przeciążał ani odbiornika, ani sieci.
- Kompromis: większy narzut i opóźnienia oraz większy nagłówek — 20–60 bajtów (20 bez opcji, z możliwością rozszerzenia za pomocą opcji takich jak MSS, skalowanie okien, SACK).
UDP (RFC 768)
- Bez połączenia. Nie ma uścisku dłoni; każdy datagram jest niezależny.
- Brak gwarancji. RFC wyraźnie stwierdza, że „nie gwarantuje się dostarczania ani ochrony przed duplikatami” — protokół UDP nie odzyskuje utraconych, zduplikowanych ani nieaktualnych pakietów.
- Naprawiono 8-bajtowy nagłówek z zaledwie czterema polami: Port źródłowy, Port docelowy, Długość, Suma kontrolna.
- Zalety: małe opóźnienia i obciążenie, a także obsługa transmisji rozgłoszeniowej/multicastowej.
Kiedy którego używać
- TCP: internet (HTTP/HTTPS przez TCP), poczta e-mail, przesyłanie plików, SSH — wszędzie tam, gdzie liczy się integralność danych.
- UDP: wyszukiwanie DNS, gry online, VoIP, strumieniowe przesyłanie wideo na żywo – gdzie prędkość ma większe znaczenie niż pojedynczy utracony pakiet.
Wspólne punkty kontrolne
- Sam protokół UDP nie porządkuje danych, ale aplikacja może nałożyć na nie własną logikę (QUIC robi to poprzez UDP).
- HTTP/3 działa na QUIC przez UDP, podczas gdy HTTP/1.1 i HTTP/2 działają przez TCP.
- Suma kontrolna UDP jest technicznie opcjonalna w IPv4 (wartość zerowa oznacza „nieobliczona”), ale obowiązkowa w IPv6.
