TCP/IP

Zestaw protokołów stanowiący fundament komunikacji w internecie. Dzieli dane na pakiety, adresuje je i gwarantuje, że dotrą do celu w całości i we właściwej kolejności.

TCP/IP to rodzina protokołów sieciowych, na której stoi cały internet i większość sieci lokalnych. Nazwa łączy dwa najważniejsze elementy: IP (Internet Protocol), który adresuje i dostarcza pakiety między urządzeniami, oraz TCP (Transmission Control Protocol), który dba o to, żeby dane dotarły w komplecie i w dobrej kolejności. W praktyce mówiąc „TCP/IP” mamy na myśli cały zestaw, czyli także UDP, ICMP czy protokoły aplikacyjne, które na tym fundamencie działają.

Żeby to ogarnąć, wyobraź sobie model warstwowy. TCP/IP dzieli komunikację na cztery warstwy: łącza (Ethernet, Wi-Fi), internetu (IP — trasowanie pakietów po adresach), transportowa (TCP i UDP) oraz aplikacji (HTTP, DNS, SMTP). Każda warstwa robi swoje i przekazuje robotę dalej, dzięki czemu twoja przeglądarka nie musi wiedzieć, czy siedzisz na kablu, czy na Wi-Fi.

Kluczowa różnica, którą warto zapamiętać: TCP jest połączeniowy i niezawodny — nawiązuje połączenie tzw. three-way handshake (SYN, SYN-ACK, ACK), numeruje segmenty, potwierdza odbiór i retransmituje to, co zginęło. Dlatego używają go strony WWW, e-mail czy SSH. UDP z kolei wysyła pakiety „na żywioł”, bez gwarancji dostarczenia, za to szybko i bez narzutu — stąd jego miłość do streamingu, gier online i DNS.

Przykład z praktyki

Chcesz sprawdzić, czy serwer w ogóle przyjmuje połączenia na danym porcie? Zamiast zgadywać, odpalasz w terminalu:

nc -zv example.com 443

To otwiera połączenie TCP na port 443 (HTTPS) i mówi ci, czy port jest otwarty. Jeśli chcesz zajrzeć głębiej i zobaczyć handshake na żywo, łapiesz ruch przez tcpdump -i any port 443 albo otwierasz Wireshark i filtrujesz po tcp.port == 443. Zobaczysz tam dokładnie pakiety SYN i ACK — teoria z podręcznika nagle staje się namacalna.

Częste błędy i mity

  • „TCP/IP to jeden protokół” — nie, to cała rodzina. TCP i IP to tylko dwa najgłośniejsze nazwiska.
  • Mylenie portu z adresem IP — IP wskazuje maszynę, port wskazuje konkretną usługę na niej.
  • Założenie, że „ping działa, więc aplikacja zadziała” — ping to ICMP, a nie TCP. Otwarty host nie znaczy otwarty port.
  • Zapominanie o NAT — w sieci lokalnej masz adres prywatny, na świat wychodzisz pod innym IP.

Pojęcia powiązane: model OSI, UDP, port, gniazdo (socket), DNS, NAT, three-way handshake, pakiet, MTU, IPv4 i IPv6.