Вопрос проверяет понимание различий между транспортными протоколами и причин использования UDP, несмотря на отсутствие гарантий доставки.
UDP (User Datagram Protocol) работает поверх IP и предоставляет минимальные функции транспортного уровня: мультиплексирование через порты и проверку целостности данных через контрольную сумму. В отличие от TCP, UDP не гарантирует доставку, порядок пакетов или устранение дубликатов. Однако именно это делает его идеальным для приложений, где скорость критична, а потеря отдельных пакетов не фатальна.
import socket
# Создаем UDP сокет
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Отправляем данные без установки соединения
sock.sendto(b"Hello, UDP!", ("127.0.0.1", 12345))
# Получаем ответ
data, addr = sock.recvfrom(1024)
print(f"Received: {data} from {addr}")
sock.close()В этом примере сокет не вызывает connect(), а сразу отправляет данные. Это демонстрирует простоту и скорость UDP.
UDP применяется в сценариях, где допустима потеря данных ради снижения задержки и уменьшения нагрузки на сеть. Он незаменим для потокового мультимедиа, игр и систем реального времени, где TCP был бы слишком медленным из-за своих механизмов надежности.