Networking Reference

TCP и UDP: в чём разница и когда это важно

Чем отличаются TCP и UDP, как работает 3-way handshake, почему DNS использует UDP а SSH — TCP. Порты и практика проверки соединений.

Проверено: —

Большинство сетевых проблем описываются словами «не работает порт», «соединение сброшено», «пакеты теряются». Чтобы правильно их диагностировать, нужно понимать как данные передаются по сети — через TCP или UDP, и почему это важно.

Два способа отправить данные по сети

TCP и UDP — два протокола транспортного уровня. Они отвечают за то, как данные передаются между двумя точками в сети.

TCPUDP
РасшифровкаTransmission Control ProtocolUser Datagram Protocol
Установка соединенияОбязательное рукопожатие (3-way handshake)Нет, данные сразу
Гарантия доставкиДа — повторная отправка при потереНет — «best effort»
Порядок пакетовГарантированНе гарантирован
СкоростьМедленнее (overhead на контроль)Быстрее (нет overhead)
Где используетсяHTTP/HTTPS, SSH, SMTP, FTPDNS, VoIP, видеоконференции, игры, VPN

TCP: надёжность важнее скорости

Перед передачей данных TCP устанавливает соединение через «трёхстороннее рукопожатие» (3-way handshake):

  1. Клиент → Сервер: SYN (хочу подключиться)
  2. Сервер → Клиент: SYN-ACK (принял, готов)
  3. Клиент → Сервер: ACK (начинаем)

После этого данные передаются, и каждый пакет подтверждается получателем. Потерянный пакет отправляется повторно. Порядок восстанавливается на стороне получателя.

Совет: Именно поэтому SSH, HTTP и SMTP работают через TCP — для них критично что команды дойдут целиком и в правильном порядке.

UDP: скорость важнее надёжности

UDP не устанавливает соединение. Данные отправляются без подтверждения и без гарантии порядка. Звучит ненадёжно, но для многих задач это лучший выбор:

  • VoIP и видеозвонки — лучше потерять кадр, чем ждать его повторной отправки (будет заикание)
  • Онлайн-игры — актуальная позиция важнее пропущенного устаревшего пакета
  • DNS — запрос короткий, ответ быстрый, легче переотправить запрос чем держать соединение
  • VPN (WireGuard, OpenVPN UDP) — меньше overhead, выше скорость
  • Стриминг видео — мелкие потери незаметны, задержка критична

Порты: дверь к конкретному сервису

Порт — это число от 0 до 65535, которое указывает какому сервису на сервере адресованы данные. IP-адрес находит компьютер, порт — конкретный сервис на нём.

ПортПротоколСервис
22TCPSSH
53UDP (и TCP)DNS
80TCPHTTP
443TCPHTTPS
25TCPSMTP (почта)
3389TCPRDP (Windows)
51820UDPWireGuard

Практика: проверить TCP-порт

# Linux/macOS
nc -zv server.example.com 443

# Windows (PowerShell)
Test-NetConnection -ComputerName server.example.com -Port 443

# Посмотреть открытые порты на своём сервере
sudo ss -tlnup
# t=TCP, l=listening, n=числа, u=UDP, p=process

Итог

TCP — когда нужна гарантия: веб, email, SSH, базы данных. UDP — когда нужна скорость: видео, голос, DNS, VPN. Понимание этого помогает правильно читать ошибки «Connection refused» (порт закрыт TCP), «Request timeout» (пакеты не возвращаются) и настраивать firewall.