Надежный транспортный протокол поверх 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?