Wiki
Сеть

TCP vs UDP — в чём разница

TCP — надёжная доставка с очерёдностью (HTTP, SSH, SMTP). UDP — быстрая без гарантий (DNS, WireGuard, QUIC, стримы). Оба поверх IP, порты 0-65535.

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 слушает оба).

Частые вопросы

TCP через VPN тормозит — почему?
TCP-in-TCP (например OpenVPN TCP mode) страдает от двойной retransmit. Используйте OpenVPN UDP или WireGuard (UDP).
Как посмотреть открытые порты?
`ss -tlnp` (TCP listening), `ss -ulnp` (UDP).

Смотрите также