Большинство сетевых проблем описываются словами «не работает порт», «соединение сброшено», «пакеты теряются». Чтобы правильно их диагностировать, нужно понимать как данные передаются по сети — через TCP или UDP, и почему это важно.
Два способа отправить данные по сети
TCP и UDP — два протокола транспортного уровня. Они отвечают за то, как данные передаются между двумя точками в сети.
| TCP | UDP | |
|---|---|---|
| Расшифровка | Transmission Control Protocol | User Datagram Protocol |
| Установка соединения | Обязательное рукопожатие (3-way handshake) | Нет, данные сразу |
| Гарантия доставки | Да — повторная отправка при потере | Нет — «best effort» |
| Порядок пакетов | Гарантирован | Не гарантирован |
| Скорость | Медленнее (overhead на контроль) | Быстрее (нет overhead) |
| Где используется | HTTP/HTTPS, SSH, SMTP, FTP | DNS, VoIP, видеоконференции, игры, VPN |
TCP: надёжность важнее скорости
Перед передачей данных TCP устанавливает соединение через «трёхстороннее рукопожатие» (3-way handshake):
- Клиент → Сервер: SYN (хочу подключиться)
- Сервер → Клиент: SYN-ACK (принял, готов)
- Клиент → Сервер: ACK (начинаем)
После этого данные передаются, и каждый пакет подтверждается получателем. Потерянный пакет отправляется повторно. Порядок восстанавливается на стороне получателя.
UDP: скорость важнее надёжности
UDP не устанавливает соединение. Данные отправляются без подтверждения и без гарантии порядка. Звучит ненадёжно, но для многих задач это лучший выбор:
- VoIP и видеозвонки — лучше потерять кадр, чем ждать его повторной отправки (будет заикание)
- Онлайн-игры — актуальная позиция важнее пропущенного устаревшего пакета
- DNS — запрос короткий, ответ быстрый, легче переотправить запрос чем держать соединение
- VPN (WireGuard, OpenVPN UDP) — меньше overhead, выше скорость
- Стриминг видео — мелкие потери незаметны, задержка критична
Порты: дверь к конкретному сервису
Порт — это число от 0 до 65535, которое указывает какому сервису на сервере адресованы данные. IP-адрес находит компьютер, порт — конкретный сервис на нём.
| Порт | Протокол | Сервис |
|---|---|---|
| 22 | TCP | SSH |
| 53 | UDP (и TCP) | DNS |
| 80 | TCP | HTTP |
| 443 | TCP | HTTPS |
| 25 | TCP | SMTP (почта) |
| 3389 | TCP | RDP (Windows) |
| 51820 | UDP | WireGuard |
Практика: проверить 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.