主流的流媒体协议,如HTTP,HLS,RTMP是TCP协议,而RTSP既可以基于TCP也可基于UDP协议进行数据传输。
从趋势来看,新的流媒体协议大都选择UDP作为底层传输协议,其主要原因和流媒体业务本身的特性及TCP特性有关。 流媒体最常见的业务直播来看,用户需要直播出流快,延时低,不卡顿,在遇到弱网的情况下,能接受损失一部分画面,但是希望能快速恢复。
1.TCP协议的局限性
首先,TCP协议握手耗时长。TCP协议建立链接需要3次握手,如要通过TLS加密则还需要4次的握手。在建立链接方面,TCP协议交互流程太多,不适合快速出流。
其次,窗口阻塞导致耗时严重。TCP协议是一个高可靠且有序的协议,因此如果出现序号较低的数据包丢了,即使序号高的已经收到了,也要等序号低的重传接收后才能使用,导致当前窗口阻塞在原地(TCP队头阻塞),要是重传的数据包也丢失,触发再次重传需要等待的时间会加倍(重传策略温和),而这个机制会影响数据的传输效率,对于实时性要求较高的流媒体业务,是不可接受的。
最后,弱网情况表现差。TCP协议的慢启动和拥塞避免算法都会大幅度的降低自身的带宽占用,