視頻會議系統的數據傳輸需要滿足實時、大數據量的要求,因此我們在傳輸模塊中,需要對數據進行QOS的保障,而這些QOS保障通常是通過在應用層中實現的。通常數據的傳輸我們可以采用TCP或者UDP的方式進行,但兩者方式各有弊端,TCP是可靠的連接,但傳輸效率不高,不能進行實時、大數據量的傳輸,而UDP雖然效率高,但其是不可靠連接,經常會出現數據不能及時到達的情況,從而形成丟包現象。因此我們在視頻會議系統開發中,應該在應用層上進行數據傳輸的QOS控制,從而減少丟包率和保證實時大流量的數據傳輸,為了達到這個目標我們可以采用UDT(UDP-based Data Transfer Protocol)、Raknet等可靠傳輸庫來實現,在這里我們推薦使用UDT來實現,主要原因是UDT庫體積較少,Raknet是個游戲引擎,UDT使用起來比Raknet更為方便,而傳輸效率與Raknet不相上下。UDT是基于UDP協議基礎上的數據流傳輸庫,其主要是通過數據的擁塞控制與可靠性控制機制來實現數據的QOS保障。其主要的特點如下:
1、 數據具有可靠性
UDT通過雙向的流量控制、發送速度控制等來實現對數據的控制,當網絡較為堵塞的時候,UDT會對數據發送速度進行降低,而不像TCP一樣,在網絡較為堵塞的情況下還一直保持同樣的發送速度,造成網絡越來越堵。UDT的數據分為兩種包:數據包、控制包,通過控制包,UDT可以檢測出數據是否出現丟包,從而通知發送方進行重新發送。因此UDT的數據傳輸具有可靠性保障,可以作為我們的視頻會議系統的傳輸模塊。
2、 傳輸數據量較大
TCP由于進行三次握手,其傳輸效率不高,很難在網絡上實現實時大流量的數據傳輸。而基于UDP協議的UDT除了能傳輸可靠的數據外,還能傳輸實時大流量的數據。UDT傳輸通過建立大容量的緩沖區與滑動窗口技術,實現了大流量數據的實時傳輸,因此利用UDT可以在視頻會議系統里實時傳輸大流量的數據。
3、 支持P2P連接
在不同的內網中,如果需要相互傳輸數據必須要進行NAT穿透,所謂NAT穿透也就是把內外地址映射到外網的一個地址和不同的端口,然后通過這個外網的地址和端口就可以相互連接。通常我們開發P2P的程序的時候,需要一個公網服務器進行地址轉換,才能得到內網的NAT數據,實現這個功能,我們需要進行內網打洞、端口轉換等操作。但如果我們使用UDT傳輸庫,可以以很小代價來實現內網的P2P連接,因此UDT的P2P方式也非常適合于我們的視頻會議系統的P2P傳輸。
4、 支持防火墻穿越
UDT傳輸庫通過NAT轉換,可以輕易穿透防火墻,只需要進行UDT的NAT轉換,就可以穿透不同的防火墻。
總結,UDT傳輸庫可以為我們視頻會議系統提供實時、可靠、大流量的數據傳輸,通過調用UDT的接口函數,我們可以快速開發出穩定、具有QOS保障的數據傳輸模塊。