Надежный транспортный протокол поверх UDP

У UDP есть одна хорошая особенность - это отсутствие соединения. Но у него много плохих функций - пакеты могут быть потеряны, приходить несколько раз, последовательность пакетов отсутствует - пакет 2 может прибыть быстрее, чем 1. Как сохранить хорошее и удалить плохое? Есть ли хорошие реализации, которые обеспечивают надежный транспортный протокол поверх udp, так что мы все еще не подключены, но без упомянутых проблем. Одним из примеров того, что можно с этим сделать, является mosh.

1 ответ

Решение

То, что вы описываете как плохое, на самом деле не плохо в зависимости от контекста. Например, UDP часто используется для потоковой передачи в реальном времени, в этом контексте подтверждение доставки и повторная отправка бесполезны.

При этом есть несколько реализаций, на которые вы, возможно, захотите взглянуть:

ENet ( http://enet.bespin.org/)

RUDP ( https://en.wikipedia.org/wiki/Reliable_User_Datagram_Protocol)

UDT ( https://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol)

Я работаю во встроенном контексте:

CoAP ( https://en.wikipedia.org/wiki/Constrained_Application_Protocol) также реализует многие из этих функций, поэтому его стоит посмотреть.

По какой причине вы не выбрали TCP?

Другие вопросы по тегам