本文参考:
网络基础------如何让UDP实现可靠性传输_网络信息传输使用udp tcp实现双向传输-优快云博客
ChatGPT 仅用于自用复习
传输层UDP无法保证数据的可靠性的传输,只能通过应用层来进行实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。
实现确认机制,重传机制,窗口确认机制。
如果不利用linux协议栈以及上层socket机制。自己通过抓包和发包的方式去实现可靠性传输,那么必须要实现的功能就如下所示:
简单来讲,要使用UDP来构建可靠的面向连接的数据传输,就要实现类似于TCP协议的
超时重传(定时器)
有序接受 (添加包序号)将数据包进行编号,按照包的顺序接收并存储。
应答确认 (Seq/Ack应答机制)
滑动窗口流量控制等机制 (滑动窗口协议)
等于说要在传输层的上一层(或者直接在应用层)实现TCP协议的可靠数据传输机制,比如使用UDP数据包+序列号,UDP数据包+时间戳等方法。
目前有如下的开源程序实现利用UDP实现了可靠的数据传输。分别为RUDP、RTP、UDT。
RUDP
RUDP(Reliable User Datagram Protocol,可靠用户数据报协议)是一种基于 UDP 的增强协议,旨在提供与 TCP 类似的可靠性,同时保持 UDP 的灵活性和高效性。RUDP 添加了额外的机制,例如确认应答(ACK)、超时重传和流量控制,以实现可靠的数据传输。
RTP
RTP(Real-time Transport Protocol,实时传输协议)是一种专门为实时应用设计的网络传输协议,广泛应用于音视频流、在线会议、IP 语音(VoIP)等场景。它通常与 UDP 协同工作,用于高效传输实时数据。
UDT
UDT(UDP-based Data Transfer Protocol)是一种基于 UDP 的高效、可靠的数据传输协议,设计初衷是为了满足大规模数据传输和高带宽网络环境(如高速科研网络、数据中心互联)中的需求。它结合了 UDP 的高性能和 TCP 的可靠性,同时通过专门的拥塞控制和流量控制算法优化了性能。
3165

被折叠的 条评论
为什么被折叠?



