可靠UDP传输协议总结
TCP/IP协议栈中,TCP和UDP属于传输层,负责实现数据的传输。其中TCP是面向连接的和基于单个字节流的、保证顺序的可靠传输协议,UDP是无连接的、不可靠的、面向报文的协议。
在实际应用中,TCP由于简单可靠,被大部分应用层协议使用,特别是HTTP,所以占据了互联网流量的主要部分。由于TCP的广泛应用,并且是实现在操作系统中,在参数和算法调整上比较受限,难以进行一些激进的改进和定制。另外TCP的NAT穿越比较困难,一些P2P应用也只能使用UDP,所以就有了各种各样的可靠UDP协议。
可靠传输的原理
实现可靠传输一般有两种途径,一是基于ARQ(Automatic Repeat reQuest)的确认和重传机制,二是使用前向纠错(FEC)。
FEC是纠删码在通信中的应用,一般在链路层用的比较多,特别是无线通信中(包括WiFi,移动通信、卫星通信等)。可靠UDP传输主要还是依靠重传机制,个别协议会用FEC作为辅助手段,所以本文中主要介绍重传相关的技术。
ARQ
ARQ包括停等式、回退N帧、选择重传等机制。由于停等式的效率太低,TCP和可靠UDP协议一般使用的是基于回退N帧机制和滑动窗口协议的连续式ARQ,TCP后来也引入了SACK,以提高性能。
滑动窗口
滑动窗口是一种流量控制技术,接收方可以通过反馈来指示发送方调节数据发送的速度。TCP中使用滑动窗口协议来控制发送的数据量,达到理想的传输速度。