RUTP协议是通过UDP数据包来实现数据可靠传输的协议,其协议是建立在无连接的UDP协议基础上的应用层协议,主要通过发送确认包给接受者,然后对数据包进行丢包重发,实现数据的可靠传输。在视频会议系统的开发当中,需要处理实时的音、视频及其他的一些数据,RUTP协议怎样用于我们的视频会议系统的开发呢?首先,我们先要了解RUTP协议的特点,然后我们分析一下在网络视频会议系统中的哪些数据传输可以通过RUTP协议进行,最后我们列举一下几个重要的开源RUTP库。
1、RUTP协议特点
RUTP协议主要是解决TCP协议和UDP协议存在的弊端,TCP协议是面对有连接的传输协议,其传输的数据通过三次握手和滑动窗口协议实现了数据的可靠传输,但TCP协议由于需要三次握手,因此其传输实时性比较差,很难应用于实时的数据传输;UDP协议刚好于TCP协议相反,UDP协议是面向无连接的传输协议,数据只是在不断地进行发送,而没有对数据进行丢包和排序处理,不能进行网络的QOS保证,因此UDP协议不能保持数据的可靠性。而RUTP协议能在TCP协议和UDP协议中寻求了最好的平衡点,它主要是通过滑动窗口、丢包重发、拥塞控制等算法,实现数据的实时可靠传输,因此RUTP既能实现数据的实时传输,又能保证数据的可靠性。由此可见,在我们的视频会议系统的开发过程中,使用RUTP协议进行数据传输,比我们直接单纯用TCP协议或者UDP协议要好。
2、在视频会议系统中的应用
RUTP协议有那么多好处,我们是不是在视频会议系统的开发中,全部的数据都要用RUTP协议进行传输呢?答案是否定的,RUTP协议只是在TCP协议和UTP协议中寻求最好的平衡点,但其可靠性和实时性都处于两者的中间,比如可靠性,RUTP的在正常的网络条件下,数据是可靠的,但如果在极端的网络条件下,其可靠性不如TCP协议的三次握手和滑动窗口协议;而在实时性方面,RUTP协议须要对数据进行带外数据的控制,其实时性比无连接UDP协议要低许多。因此在视频会议系统中,数据如果符合既要保持实时性和可靠性,才需要使用到RUTP协议,这些数据一般是音频、视频及屏幕共享等数据,而一些如控制信令、文本信息等数据,其数据只要求可靠性而不要求实时性,一般建议使用TCP协议来进行传输。
3、开源的RUTP库
在开源的项目当中,有几个非常值得我们关注的RUTP开源库,利用这些RUTP库,可以加快我们的视频会议系统的开发进度,从而迅速实现音、视频的实时可靠的传输。在RUTP开源库中,最着名的是UDT开源库,UDT传输库主要是用RUTP协议来实现数据的实时可靠传输,它的数据传输效率非常高,在网络条件较好的情况下能传输流量非常大的可靠性实时数据,但在网络堵塞非常严重的情况下,UDP还会一直传输数据,会导致网络越来越堵塞、数据可靠性不能保证的情况发送。因此我们需要对网络进行判断,如果出现网络堵塞的情况下,就不再使用UDT库进行数据传输,因此在网络堵塞情况下,还采用它会造成网络的更堵塞的情况。另外一个RUTP开源库是Raknet,Raknet开源库是一个游戏引擎,主要是应用于游戏中的音频数据的实时传输,因此Raknet库也非常适合于视频会议系统的实时数据传输。但Raknet库也存在一些问题,经过在不同的网络条件下的测试,当在网络条件比较差的情况下,其数据传输较慢,一些数据不能实时地达到接送方,而Raknet库的版本较多,不同的版本其传输效率都不一样,因此我们需要对这些库进行实际的测试。综合这两个RUTP开源库,它们在低带宽的情况下,都存在数据越来越堵塞的情况下,因此我们在视频会议系统中利用这些RUTP库,需要了解这些库的优点和缺点,在网络条件较差的情况下,要及时进行数据流量控制,保证数据的实时可靠的传输。
本文转自d1net(转载)