В чем разница между TCP и UDP?

«В чем разница между TCP и UDP?» — вопрос из категории Сети, который задают на 31% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — это два основных транспортных протокола стека TCP/IP. Их фундаментальное различие заключается в подходе к надежности доставки данных.

Характеристика TCP (Надежный, с установкой соединения) UDP (Быстрый, без установки соединения)
Соединение Требует установки соединения («рукопожатие»). Работает без установки соединения (датаграммы).
Гарантия доставки Гарантирует доставку пакетов. Использует подтверждения (ACK) и повторные передачи. Не гарантирует доставку. Пакеты могут быть потеряны.
Порядок пакетов Гарантирует, что данные будут получены в том же порядке, в котором были отправлены. Не гарантирует порядок доставки пакетов.
Контроль перегрузки Имеет сложные механизмы контроля перегрузки и потока данных. Отсутствует контроль перегрузки.
Накладные расходы Высокие (заголовок 20+ байт, управляющие пакеты). Низкие (заголовок 8 байт).
Скорость Медленнее из-за накладных расходов и механизмов надежности. Быстрее.

Сценарии использования в DevOps/Инфраструктуре:

  • TCP: Веб-сервисы (HTTP/HTTPS, gRPC), SSH, базы данных (PostgreSQL, MySQL), почта (SMTP). Там, где важна целостность данных.
  • UDP: DNS-запросы, мониторинг (SNMP, StatsD), потоковое видео/аудио, VoIP (SIP, RTP), некоторые игровые протоколы. Там, где важна скорость, а потеря нескольких пакетов допустима.

Пример настройки в контексте инфраструктуры:

  • Балансировщик нагрузки (Nginx): По умолчанию проксирует на бэкенд по TCP. Для работы с UDP (например, для DNS) требуется отдельная директива stream.
  • Брандмауэр (iptables/security groups): Правила часто настраиваются отдельно для -p tcp и -p udp.
  • Мониторинг (Prometheus): По умолчанию «вытягивает» метрики по HTTP (TCP). Но может отправлять алерты в Alertmanager по UDP для скорости.