ChiMate.aiТВОЙ ИИ АССИСТЕНТ
← Все вопросы
В чём основное отличие между протоколами TCP и UDP?
СреднеJuniorDevOps

В чём основное отличие между протоколами TCP и UDP?

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

TCP и UDP — это два основных протокола транспортного уровня, работающих поверх IP. Главное различие — TCP ориентирован на соединение и надёжность, а UDP не устанавливает соединение и работает по принципу «отправил и забыл».

TCP (RFC 9293)

  • С установлением соединения. Перед передачей данных стороны проходят «трёхстороннее рукопожатие» (3-way handshake): SYN → SYN-ACK → ACK, синхронизируя начальные номера последовательности.
  • Надёжность и порядок. Каждому байту присваивается sequence number; получатель шлёт подтверждения (ACK), потерянные сегменты переотправляются, а данные собираются в исходном порядке. Целостность проверяется контрольной суммой. RFC 9293 описывает TCP как сервис, предоставляющий «reliable, in-order, byte-stream service».
  • Поток байтов, без границ сообщений. TCP передаёт неструктурированный поток байтов: границы сообщений не сохраняются (приложение само нарезает данные на сообщения). UDP, наоборот, ориентирован на сообщения — одна дейтаграмма доставляется как цельная единица целиком или не доставляется вовсе (один sendto = один recvfrom).
  • Контроль потока и перегрузки. TCP регулирует скорость отправки, чтобы не перегрузить ни получателя, ни сеть.
  • Минусы: больше накладных расходов и задержек, заголовок крупнее — 20–60 байт (20 без опций, расширяется опциями вроде MSS, window scaling, SACK).

UDP (RFC 768)

  • Без соединения. Рукопожатия нет, каждая дейтаграмма независима.
  • Без гарантий. В RFC прямо сказано: «delivery and duplicate protection are not guaranteed» — потерянные, дублированные или пришедшие не по порядку пакеты UDP не исправляет.
  • Фиксированный заголовок — 8 байт, всего четыре поля: Source Port, Destination Port, Length, Checksum.
  • Плюсы: низкие задержки и накладные расходы, поддержка широковещания/мультикаста.

Когда что применять

  • TCP: веб (HTTP/HTTPS поверх TCP), почта, передача файлов, SSH — везде, где важна целостность данных.
  • UDP: DNS-запросы, онлайн-игры, VoIP, видеостриминг — где скорость важнее, чем единичная потеря пакета.

Частые вопросы на собеседовании

  • Сам UDP не упорядочивает данные, но приложение может добавить свою логику (так делает, например, QUIC поверх UDP).
  • HTTP/3 использует QUIC поверх UDP, тогда как HTTP/1.1 и HTTP/2 — поверх TCP.
  • Контрольная сумма в UDP технически опциональна для IPv4 (нулевое значение означает «не вычислялась»), но обязательна для IPv6.
NetworkingTCPUDP