ProximaMPProximaMP

TCP или UDP: в чём разница и что выбрать

TCP и UDP решают одну задачу — доставить данные от программы к программе, — но подходят к ней противоположно. Разберём, чем отличается TCP от UDP, как понять, какой протокол нужен твоему сервису, и что произойдёт, если ошибиться.

Главное различие в одном предложении

TCP гарантирует, что данные дойдут целиком и по порядку, но ради этого готов ждать. UDP не гарантирует ничего, зато не ждёт никогда.

Всё остальное — следствия этого выбора.

Таблица различий

TCPUDP
СоединениеУстанавливается заранееНет, пакеты шлются сразу
Подтверждение доставкиЕстьНет
Повтор потерянногоАвтоматическиНет (или силами приложения)
Порядок пакетовВосстанавливаетсяКак пришли, так пришли
Контроль перегрузкиЕстьНет
ЗадержкаВыше и плавает при потеряхНиже и стабильнее
Накладные расходыБольшеМинимальные
Типичное применениеСайты, файлы, SSH, базы данныхГолос, видео, игры, DNS

Как понять, какой протокол у твоего сервиса

Гадать не нужно — это фиксированное свойство сервиса, и почти всегда оно есть в документации. Короткий ориентир:

  • Передаются файлы, текст, команды, страницы — TCP. Потеря куска ломает смысл.
  • Передаётся поток в реальном времени — UDP. Устаревший кусок не нужен.
  • Игра — смотри конкретную игру, единого правила нет.

Последний пункт — главный источник путаницы:

СервисПротокол
Minecraft Java EditionTCP 25565
Minecraft Bedrock EditionUDP 19132
CS 1.6, Day of Defeat, Condition Zero, Sven Co-opUDP 27015 (RCON — TCP)
ValheimUDP 2456–2458
TerrariaTCP 7777
RustUDP 28015
TeamSpeak 3UDP 9987 (голос) + TCP
Веб-сервер, APITCP

Два издания Minecraft — разные протоколы. Одна игра CS 1.6 — UDP для игры и TCP для админской консоли. Поэтому проверять стоит конкретный сервис, а не «игры вообще».

Что будет, если выбрать не тот

Ничего драматичного — просто не заработает. Трафик уйдёт в протокол, который на той стороне никто не слушает: клиент будет видеть сервер как недоступный или бесконечно подключаться.

Это самая частая причина «туннель поднят, а зайти не могу»: сервер на UDP, а туннель создан TCP. Лечится пересозданием туннеля с правильным протоколом.

Можно ли просто включить оба

Иногда именно это и нужно: у TeamSpeak голос идёт по UDP, а передача файлов и запрос к серверу — по TCP; у серверов GoldSrc игра на UDP, RCON на TCP.

Но «оба» — это не переключатель, а два независимых канала. В туннеле на каждый протокол создаётся свой туннель со своим внешним адресом. Тратить на это слоты имеет смысл только если сервису действительно нужны оба — большинству хватает одного.

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

Какой протокол безопаснее? Ни один. Шифрование — отдельный слой: HTTPS шифрует поверх TCP, WireGuard — поверх UDP.

Какой быстрее? UDP даёт меньшую задержку. По объёму переданных данных на хорошем канале разница невелика — она проявляется при потерях, когда TCP начинает ждать и замедляться.

Почему TCP-порт и UDP-порт с одним номером — разные? Нумерация у протоколов независимая. Операционная система различает их по паре «протокол + номер».

Что использует HTTP/3? UDP — через протокол QUIC, который добавляет надёжность и шифрование поверх UDP по собственным правилам, без задержек, свойственных TCP.

Открыть порт любого из них

Туннель поддерживает оба протокола плюс режим HTTPS — выбор делается одним переключателем при создании. Общий разбор — в статье Как открыть локальный порт в интернет.

Подробнее про каждый: что такое TCP · что такое UDP

Скачать ProximaClient для Windows →

Все статьи