RUTP協(xié)議是通過(guò)UDP數(shù)據(jù)包來(lái)實(shí)現(xiàn)數(shù)據(jù)可靠傳輸?shù)膮f(xié)議,其協(xié)議是建立在無(wú)連接的UDP協(xié)議基礎(chǔ)上的應(yīng)用層協(xié)議,主要通過(guò)發(fā)送確認(rèn)包給接受者,然后對(duì)數(shù)據(jù)包進(jìn)行丟包重發(fā),實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。在視頻會(huì)議系統(tǒng)的開發(fā)當(dāng)中,需要處理實(shí)時(shí)的音、視頻及其他的一些數(shù)據(jù),RUTP協(xié)議怎樣用于我們的視頻會(huì)議系統(tǒng)的開發(fā)呢?首先,我們先要了解RUTP協(xié)議的特點(diǎn),然后我們分析一下在網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)中的哪些數(shù)據(jù)傳輸可以通過(guò)RUTP協(xié)議進(jìn)行,最后我們列舉一下幾個(gè)重要的開源RUTP庫(kù)。
1、RUTP協(xié)議特點(diǎn)
RUTP協(xié)議主要是解決TCP協(xié)議和UDP協(xié)議存在的弊端,TCP協(xié)議是面對(duì)有連接的傳輸協(xié)議,其傳輸?shù)臄?shù)據(jù)通過(guò)三次握手和滑動(dòng)窗口協(xié)議實(shí)現(xiàn)了數(shù)據(jù)的可靠傳輸,但TCP協(xié)議由于需要三次握手,因此其傳輸實(shí)時(shí)性比較差,很難應(yīng)用于實(shí)時(shí)的數(shù)據(jù)傳輸;UDP協(xié)議剛好于TCP協(xié)議相反,UDP協(xié)議是面向無(wú)連接的傳輸協(xié)議,數(shù)據(jù)只是在不斷地進(jìn)行發(fā)送,而沒(méi)有對(duì)數(shù)據(jù)進(jìn)行丟包和排序處理,不能進(jìn)行網(wǎng)絡(luò)的QOS保證,因此UDP協(xié)議不能保持?jǐn)?shù)據(jù)的可靠性。而RUTP協(xié)議能在TCP協(xié)議和UDP協(xié)議中尋求了最好的平衡點(diǎn),它主要是通過(guò)滑動(dòng)窗口、丟包重發(fā)、擁塞控制等算法,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)可靠傳輸,因此RUTP既能實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸,又能保證數(shù)據(jù)的可靠性。由此可見,在我們的視頻會(huì)議系統(tǒng)的開發(fā)過(guò)程中,使用RUTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,比我們直接單純用TCP協(xié)議或者UDP協(xié)議要好。
2、在視頻會(huì)議系統(tǒng)中的應(yīng)用
RUTP協(xié)議有那么多好處,我們是不是在視頻會(huì)議系統(tǒng)的開發(fā)中,全部的數(shù)據(jù)都要用RUTP協(xié)議進(jìn)行傳輸呢?答案是否定的,RUTP協(xié)議只是在TCP協(xié)議和UTP協(xié)議中尋求最好的平衡點(diǎn),但其可靠性和實(shí)時(shí)性都處于兩者的中間,比如可靠性,RUTP的在正常的網(wǎng)絡(luò)條件下,數(shù)據(jù)是可靠的,但如果在極端的網(wǎng)絡(luò)條件下,其可靠性不如TCP協(xié)議的三次握手和滑動(dòng)窗口協(xié)議;而在實(shí)時(shí)性方面,RUTP協(xié)議須要對(duì)數(shù)據(jù)進(jìn)行帶外數(shù)據(jù)的控制,其實(shí)時(shí)性比無(wú)連接UDP協(xié)議要低許多。因此在視頻會(huì)議系統(tǒng)中,數(shù)據(jù)如果符合既要保持實(shí)時(shí)性和可靠性,才需要使用到RUTP協(xié)議,這些數(shù)據(jù)一般是音頻、視頻及屏幕共享等數(shù)據(jù),而一些如控制信令、文本信息等數(shù)據(jù),其數(shù)據(jù)只要求可靠性而不要求實(shí)時(shí)性,一般建議使用TCP協(xié)議來(lái)進(jìn)行傳輸。
3、開源的RUTP庫(kù)
在開源的項(xiàng)目當(dāng)中,有幾個(gè)非常值得我們關(guān)注的RUTP開源庫(kù),利用這些RUTP庫(kù),可以加快我們的視頻會(huì)議系統(tǒng)的開發(fā)進(jìn)度,從而迅速實(shí)現(xiàn)音、視頻的實(shí)時(shí)可靠的傳輸。在RUTP開源庫(kù)中,最著名的是UDT開源庫(kù),UDT傳輸庫(kù)主要是用RUTP協(xié)議來(lái)實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)可靠傳輸,它的數(shù)據(jù)傳輸效率非常高,在網(wǎng)絡(luò)條件較好的情況下能傳輸流量非常大的可靠性實(shí)時(shí)數(shù)據(jù),但在網(wǎng)絡(luò)堵塞非常嚴(yán)重的情況下,UDP還會(huì)一直傳輸數(shù)據(jù),會(huì)導(dǎo)致網(wǎng)絡(luò)越來(lái)越堵塞、數(shù)據(jù)可靠性不能保證的情況發(fā)送。因此我們需要對(duì)網(wǎng)絡(luò)進(jìn)行判斷,如果出現(xiàn)網(wǎng)絡(luò)堵塞的情況下,就不再使用UDT庫(kù)進(jìn)行數(shù)據(jù)傳輸,因此在網(wǎng)絡(luò)堵塞情況下,還采用它會(huì)造成網(wǎng)絡(luò)的更堵塞的情況。另外一個(gè)RUTP開源庫(kù)是Raknet,Raknet開源庫(kù)是一個(gè)游戲引擎,主要是應(yīng)用于游戲中的音頻數(shù)據(jù)的實(shí)時(shí)傳輸,因此Raknet庫(kù)也非常適合于視頻會(huì)議系統(tǒng)的實(shí)時(shí)數(shù)據(jù)傳輸。但Raknet庫(kù)也存在一些問(wèn)題,經(jīng)過(guò)在不同的網(wǎng)絡(luò)條件下的測(cè)試,當(dāng)在網(wǎng)絡(luò)條件比較差的情況下,其數(shù)據(jù)傳輸較慢,一些數(shù)據(jù)不能實(shí)時(shí)地達(dá)到接送方,而Raknet庫(kù)的版本較多,不同的版本其傳輸效率都不一樣,因此我們需要對(duì)這些庫(kù)進(jìn)行實(shí)際的測(cè)試。綜合這兩個(gè)RUTP開源庫(kù),它們?cè)诘蛶挼那闆r下,都存在數(shù)據(jù)越來(lái)越堵塞的情況下,因此我們?cè)谝曨l會(huì)議系統(tǒng)中利用這些RUTP庫(kù),需要了解這些庫(kù)的優(yōu)點(diǎn)和缺點(diǎn),在網(wǎng)絡(luò)條件較差的情況下,要及時(shí)進(jìn)行數(shù)據(jù)流量控制,保證數(shù)據(jù)的實(shí)時(shí)可靠的傳輸。