Перейти к содержимому
Skip to content
← Все статьи

TCP vs UDP: различия, применение и производительность

TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) — два фундаментальных протокола транспортного уровня в интернете. Каждое сетевое приложение использует один из них или оба для передачи данных между хостами. Понимание их различий необходимо для принятия обоснованных архитектурных решений о надёжности, задержке и пропускной способности.

Как работает TCP

TCP — протокол с установлением соединения. Перед обменом данными клиент и сервер выполняют трёхстороннее рукопожатие для создания надёжного соединения с сохранением состояния:

Клиент → Сервер: SYN (seq=x)
Сервер → Клиент: SYN-ACK (seq=y, ack=x+1)
Клиент → Сервер: ACK (ack=y+1)

После установления соединения TCP обеспечивает несколько гарантий:

Структура заголовка TCP

Заголовок TCP имеет размер минимум 20 байт и содержит ключевые поля для обеспечения надёжности:

ПолеРазмерНазначение
Source Port16 битИдентификатор приложения-отправителя
Destination Port16 битИдентификатор приложения-получателя
Sequence Number32 битаПозиция байта в потоке данных
Acknowledgment Number32 битаСледующий ожидаемый байт от другой стороны
Window Size16 битУправление потоком — сколько данных может принять получатель
Checksum16 битОбнаружение ошибок заголовка и данных
Flags6 битSYN, ACK, FIN, RST, PSH, URG — управление состоянием

Как работает UDP

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

ПолеРазмерНазначение
Source Port16 битИдентификатор отправителя
Destination Port16 битИдентификатор получателя
Length16 битОбщий размер датаграммы
Checksum16 битОбнаружение ошибок (обязательно в IPv6)

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

Сравнение TCP и UDP

ХарактеристикаTCPUDP
СоединениеС установлением (3-way handshake)Без установления
НадёжностьГарантированная доставка с повторной передачейБез гарантий, best-effort
ПорядокДоставка по порядкуБез упорядоченности
Накладные расходыЗаголовок 20+ байтЗаголовок 8 байт
ЗадержкаВыше (рукопожатие + подтверждения)Ниже (без установки)
Управление потокомДа (скользящее окно)Нет
Контроль перегрузкиДа (встроенные алгоритмы)Нет
ШироковещаниеНе поддерживаетсяПоддерживается (multicast/broadcast)

Когда использовать TCP

TCP подходит, когда целостность и полнота данных важнее скорости:

Когда использовать UDP

UDP эффективен, когда скорость и низкая задержка важнее идеальной доставки:

Влияние на производительность веб-приложений

Накладные расходы на соединение

Рукопожатие TCP добавляет один RTT перед началом передачи данных. С TLS это становится два RTT. При задержке 100 мс это 200–300 мс до первого байта данных приложения.

# Измерение времени TCP-соединения
curl -w "tcp_connect: %{time_connect}s\ntls_handshake: %{time_appconnect}s\nfirst_byte: %{time_starttransfer}s\n" -o /dev/null -s https://example.com

Медленный старт TCP и окно перегрузки

Новые TCP-соединения начинают с малого окна перегрузки (обычно 10 сегментов, около 14 КБ). Для веб-сайтов критический путь рендеринга в идеале должен помещаться в начальное окно.

QUIC: лучшее из обоих миров

HTTP/3 использует QUIC — протокол поверх UDP с надёжностью на уровне приложения. QUIC сочетает надёжность TCP со скоростью UDP:

Мониторинг TCP и UDP сервисов

При мониторинг сайтов сетевых сервисов понимание базового протокола помогает диагностировать проблемы:

# Проверка состояний TCP-соединений
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn

# Мониторинг повторных передач TCP
watch -n1 'netstat -s | grep -i retransmit'

# Тест доступности UDP-порта
nc -zuv example.com 53

Итоги

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

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: Сети
Сети
IPv4 vs IPv6: различия, миграция и что это значит для вашего сайта
16.03.2026 · 14 просм.
Сети
Настройка TCP-соединений: Keepalive, размер окна и алгоритм Нейгла
16.03.2026 · 21 просм.
Сети
Точность IP-геолокации: как это работает и где ошибается
11.03.2026 · 12 просм.