UDP 之上的可靠传输协议
Reliable transport protocol on top of UDP
UDP 有一个很好的特性——它是无连接的。但它有很多不好的特性——数据包可能丢失,多次到达,没有数据包序列——数据包 2 可以比 1 更快到达。如何保持好的和去除坏的?。是否有任何好的实现可以在 udp 之上提供可靠的传输协议,以便我们仍然无连接但没有提到的问题。可以用它完成的一个例子是 mosh。
根据上下文,您描述的糟糕情况并非真正糟糕。
例如,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的原因是什么?
UDP 有一个很好的特性——它是无连接的。但它有很多不好的特性——数据包可能丢失,多次到达,没有数据包序列——数据包 2 可以比 1 更快到达。如何保持好的和去除坏的?。是否有任何好的实现可以在 udp 之上提供可靠的传输协议,以便我们仍然无连接但没有提到的问题。可以用它完成的一个例子是 mosh。
根据上下文,您描述的糟糕情况并非真正糟糕。 例如,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的原因是什么?