Ответ
Протокол UDP (User Datagram Protocol) — это легковесный протокол транспортного уровня без установки соединения, который используется в веб-приложениях для сценариев, где скорость и низкие задержки критичнее гарантий доставки и порядка пакетов.
Почему UDP? UDP минимизирует накладные расходы, не требуя установления соединения (handshake), подтверждений доставки или повторной передачи потерянных пакетов. Это делает его идеальным для приложений, где небольшие потери данных допустимы или могут быть компенсированы на уровне приложения, но задержки неприемлемы.
Основные сценарии применения в веб-приложениях:
- WebRTC (Real-time Communication): Для потоковой передачи видео и аудио в реальном времени (например, видеоконференции, VoIP). Потеря нескольких кадров менее заметна, чем задержка, вызванная повторной передачей.
 - Онлайн-игры: Быстрая передача данных о состоянии игры (позиции игроков, действия) для обеспечения отзывчивости. Небольшие потери могут быть скорректированы следующим пакетом или предсказаны.
 - DNS-запросы: Быстрое разрешение доменных имен в IP-адреса. Большинство DNS-запросов используют UDP для минимизации задержек при загрузке веб-страниц.
 - IoT и телеметрия: Передача частых, но небольших объемов данных от датчиков и устройств, где повторная отправка не всегда требуется или может быть избыточной.
 
Пример UDP-сервера на Python:
import socket
# Создаем UDP-сокет
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Привязываем сокет к адресу и порту
server_address = ('127.0.0.1', 8888)
sock.bind(server_address)
print(f"UDP-сервер запущен на {server_address[0]}:{server_address[1]}")
while True:
    # Получаем данные и адрес отправителя
    data, address = sock.recvfrom(4096) # Буфер 4KB
    print(f"Получено {len(data)} байт от {address}: {data.decode()}")
    # Отправляем ответ
    response = b"ACK: " + data
    sock.sendto(response, address)
    print(f"Отправлен ответ {len(response)} байт на {address}")
Преимущества UDP:
- Низкие задержки: Отсутствие handshake и подтверждений.
 - Меньше накладных расходов: Упрощенный заголовок пакета.
 - Высокая пропускная способность: Может отправлять данные быстрее, не дожидаясь подтверждений.
 
Недостатки UDP:
- Нет гарантии доставки: Пакеты могут быть потеряны.
 - Нет гарантии порядка: Пакеты могут прийти не по порядку.
 - Нет контроля перегрузки: Может привести к перегрузке сети.
 - Уязвимость к DDoS: Например, UDP-флуд.