ENIGMA AI
ENIGMA AI

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

встречается 16× junior networking

Как ответить

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

TCP (Transmission Control Protocol) работает так: перед отправкой данных клиент и сервер обмениваются SYN, SYN-ACK, ACK пакетами — это называется тройным рукопожатием. После этого устанавливается виртуальное соединение. Каждый отправленный пакет нумеруется, и получатель отправляет подтверждение (ACK) о получении. Если отправитель не получает ACK в течение таймаута (обычно 200-500 мс), он переотправляет пакет. TCP также управляет потоком — например, если получатель медленный, он может отправить окно нулевого размера, и отправитель приостановится. Из-за этих механизмов TCP медленнее, но надёжнее.

UDP (User Datagram Protocol) — это как почтовая открытка: вы пишете адрес и отправляете. Нет подтверждения, нет повторной отправки, нет гарантии порядка. Пакеты могут прийти в любом порядке или не прийти вообще. UDP быстрее, потому что не тратит время на handshake и подтверждения. Например, в DNS-запросах: клиент отправляет UDP-пакет на порт 53, сервер отвечает, и всё — никаких подтверждений. Если пакет потерялся, клиент просто повторяет запрос через таймаут.

В реальных проектах выбор зависит от задачи. TCP используют там, где важна целостность данных: HTTP/HTTPS, SSH, FTP, электронная почта (SMTP). UDP — там, где важна скорость и допустимы потери: видеозвонки (WebRTC), стриминг (RTMP), онлайн-игры (например, в Counter-Strike используется UDP для позиций игроков), DNS, DHCP.

Ещё стоит упомянуть, что есть гибридные решения. Например, QUIC (используется в HTTP/3) работает поверх UDP, но добавляет контроль потерь и шифрование. Это компромисс между скоростью UDP и надёжностью TCP.

На практике для junior-разработчика важно: если пишете сетевое приложение и не уверены — берите TCP. Он прощает ошибки. UDP требует ручной обработки потерь и переупорядочивания пакетов.

Ключевые тезисы

  • TCP — с установлением соединения, гарантирует доставку и порядок пакетов через подтверждения (ACK) и повторные отправки.
  • UDP — без соединения, не гарантирует доставку и порядок, быстрее за счёт отсутствия handshake и ACK.
  • Примеры использования: TCP — HTTP, SSH, FTP; UDP — DNS, видеозвонки, онлайн-игры.
  • QUIC — современный компромисс: работает поверх UDP, но добавляет надёжность и шифрование (HTTP/3).
  • Для junior: если не уверены — выбирайте TCP, он прощает ошибки; UDP требует ручной обработки потерь.

Что спросят дальше

  • — Как работает контроль перегрузки (congestion control) в TCP? Назовите хотя бы один алгоритм.
  • — Что такое MTU и как фрагментация пакетов работает в UDP?
  • — Приведите пример, когда UDP предпочтительнее TCP, даже если данные критически важны.

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение