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

«В чем разница между протоколами TCP и UDP?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Характеристика TCP UDP
Соединение Установка соединения (handshake) Без установки соединения (connectionless)
Надежность Гарантированная, с подтверждениями и повторной отправкой Без гарантий (возможна потеря пакетов)
Порядок данных Гарантирует порядок доставки Не гарантирует порядок
Контроль перегрузки Есть, регулирует скорость отправки Отсутствует
Заголовок Больше (20+ байт), содержит управляющую информацию Меньше (8 байт)
Использование HTTP/HTTPS, SSH, FTP, Email (SMTP/IMAP) DNS, VoIP (SIP), видеостриминг, онлайн-игры

Почему такие различия? TCP жертвует скоростью ради надежности, что критично для веб-страниц или файлов. UDP жертвует надежностью ради минимальной задержки, что важно для реального времени.

Пример создания сокетов на Python:

import socket

# TCP-сокет (надежный, потоковый)
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.connect(("example.com", 80))

# UDP-сокет (быстрый, дейтаграммный)
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.sendto(b"Hello", ("example.com", 53))

Практический выбор:

  • Используйте TCP, когда важна целостность данных (загрузка файла, отправка формы).
  • Используйте UDP, когда важна низкая задержка и некоторые потери допустимы (видеозвонок, игровая позиция).