TCP (Transmission Control Protocol) — надёжный, connection-oriented протокол. Устанавливает соединение (3-way handshake SYN → SYN-ACK → ACK), гарантирует порядок пакетов, повторяет потерянные, контролирует перегрузку. Используется HTTP, HTTPS, SSH, SMTP, IMAP, MySQL. Overhead — 20 байт заголовок + retransmit.
UDP (User Datagram Protocol) — быстрый, connectionless. Никакого handshake, никакого гарантированного порядка или доставки. Отправил пакет и забыл. 8 байт заголовок. Используется DNS-запросами, WireGuard, QUIC (HTTP/3), video/voice-стримами, играми, DHCP.
Когда что выбрать: (1) надёжность важнее скорости (веб, файлы, БД) — TCP. (2) скорость важнее надёжности (голос, видео, игры — потеря пакета лучше задержки) — UDP. (3) надёжность + скорость одновременно — QUIC/HTTP/3 (реализует надёжность поверх UDP лучше TCP).
Порты: 0-1023 — well-known (HTTP 80, HTTPS 443, SSH 22, DNS 53), требуют root для bind. 1024-49151 — registered. 49152-65535 — ephemeral (клиентские). TCP и UDP-порты независимы: порт 53/tcp и 53/udp — разные (DNS слушает оба).