← Все вопросы

Чем UDP отличается от TCP и когда его вообще стоит использовать?

Задан 13 месяцев назад1.2к просмотров2 ответа
11

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

2 ответа

17
✓ Принятый ответ — помог автору

UDP (User Datagram Protocol) — это транспортный протокол поверх IP, который отправляет данные пакетами-дейтаграммами без установления соединения и без гарантий доставки. Отправил и забыл.

Ключевое отличие от TCP проще всего показать таблицей:

Признак TCP UDP
Соединение устанавливается (рукопожатие SYN/SYN-ACK/ACK) нет, пакеты летят сразу
Гарантия доставки да, есть подтверждения и переотправка нет, потерянный пакет просто теряется
Порядок пакетов сохраняется не гарантируется
Контроль перегрузки есть нет
Накладные расходы выше (заголовок 20+ байт, ACK'и) ниже (заголовок всего 8 байт)
Скорость/задержка медленнее быстрее, минимальная задержка

Когда брать UDP:

  • видео- и аудиозвонки, стриминг (потерять кадр не страшно, ждать переотправку — хуже);
  • онлайн-игры (важна свежесть данных, а не их полнота);
  • DNS-запросы (один маленький запрос — один ответ);
  • VoIP, метрики, телеметрия.

Когда TCP: загрузка файлов, веб-страницы (HTTP), почта, базы данных — везде, где нельзя терять ни байта.

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

7

Простая аналогия, которая мне в своё время помогла:

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

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

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект