Protokół TCP (Transmission Control Protocol) działa w trybie
A. połączeniowym
B. hybrydowym
C. sekwencyjnym
D. bezpołączeniowym
Pytanie z egzaminu CKE, styczeń 2019 (arkusz E.13-X-19.01).
TCP działa w trybie połączeniowym, bo zanim zacznie przesyłać dane między aplikacjami, zestawia logiczne połączenie między hostami. W praktyce odbywa się to przez tzw. three-way handshake: klient wysyła SYN, serwer odpowiada SYN-ACK, a klient potwierdza ACK. Dopiero potem dane lecą normalnie. To nie jest tylko teoria z książki, bo dzięki temu TCP może kontrolować kolejność segmentów, potwierdzać ich odbiór, wykrywać straty i wykonywać retransmisję. Standardowo opisuje to specyfikacja TCP, obecnie m.in. RFC 9293, wcześniej znane RFC 793. Moim zdaniem to jedna z najważniejszych różnic między TCP a UDP, bo TCP stawia na niezawodność transmisji, nawet kosztem większego narzutu. Dlatego używa się go np. w HTTP/HTTPS, SSH, FTP czy SMTP, czyli tam, gdzie brakujące albo pomieszane dane byłyby problemem. Dobre praktyki sieciowe zakładają, że jeśli aplikacja wymaga poprawnego dostarczenia strumienia danych, kontroli przepływu i obsługi przeciążenia, to TCP jest naturalnym wyborem. Warto też pamiętać, że „połączeniowy” nie oznacza fizycznego kabla tylko między dwoma komputerami, tylko stan logiczny utrzymywany przez systemy końcowe: porty, numery sekwencyjne, okna odbioru i potwierdzenia.
TCP nie jest protokołem bezpołączeniowym, bo taki model działania oznaczałby wysyłanie datagramów bez wcześniejszego zestawienia sesji i bez gwarancji, że odbiorca faktycznie je otrzyma w dobrej kolejności. Tak pracuje raczej UDP, używany np. w DNS, VoIP czy transmisjach czasu rzeczywistego, gdzie czasem ważniejsza jest szybkość niż pełna niezawodność. Przy TCP sytuacja wygląda inaczej: zanim dane zostaną przesłane, hosty uzgadniają parametry połączenia, a potem pilnują numerów sekwencyjnych, potwierdzeń ACK, retransmisji oraz kontroli przepływu. Określenie „sekwencyjny” może kusić, bo TCP faktycznie używa numerów sekwencyjnych i składa dane w poprawnej kolejności. To jednak cecha mechanizmu działania, a nie nazwa trybu pracy protokołu. Podobnie „hybrydowy” brzmi technicznie i czasem kojarzy się z połączeniem różnych metod transmisji, ale w klasyfikacji protokołów transportowych nie opisuje poprawnie TCP. Typowy błąd myślowy polega tu na mieszaniu właściwości protokołu z jego trybem pracy. TCP jest połączeniowy, ponieważ utrzymuje stan połączenia między punktami końcowymi, wykorzystuje handshake oraz mechanizmy niezawodnego dostarczania danych. W praktyce administrator albo technik sieciowy musi to rozumieć, bo inaczej trudno poprawnie diagnozować problemy z usługami WWW, pocztą, SSH czy zaporami sieciowymi filtrującymi ruch według portów i stanu połączenia.