在一些苛刻的網(wǎng)絡條件下TCP要么不能提供正常的通信質(zhì)量保證,要么成本過高。為什么要在UDP之上做可靠保證,究其原因就是在保證通信的時延和質(zhì)量的條件下盡量降低成本,RUDP主要解決以下相關(guān)問題:
端對端連通性問題:一般終端直接和終端通信都會涉及到NAT穿越,TCP在NAT穿越實現(xiàn)非常困難,相對來說UDP穿越NAT卻簡單很多,如果是端到端的可靠通信一般用RUDP方式來解決,場景有:端到端的文件傳輸、音視頻傳輸、交互指令傳輸?shù)鹊取?/p>
弱網(wǎng)環(huán)境傳輸問題:在一些WIFI或者3G/4G移動網(wǎng)下,需要做低延遲可靠通信,如果用TCP通信延遲可能會非常大,這會影響用戶體驗。例如:實時的操作類網(wǎng)游通信、語音對話、多方白板書寫等,這些場景可以采用特殊的RUDP方式來解決這類問題。
帶寬競爭問題:有時候客戶端數(shù)據(jù)上傳需要突破本身TCP公平性的限制來達到高速低延時和穩(wěn)定,也就是說要用特殊的流控算法來壓榨客戶端上傳帶寬,例如:直播音視頻推流,這類場景用RUDP來實現(xiàn)不僅能壓榨帶寬,也能更好的增加通信的穩(wěn)定性,避免類似TCP的頻繁斷開重連。
傳輸路徑優(yōu)化問題:在一些對延時要求很高的場景下,會用應用層relay的方式來做傳輸路由優(yōu)化,也就是動態(tài)智能選路,這時雙方采用RUDP方式來傳輸,中間的延遲進行relay選路優(yōu)化延時。還有一類基于傳輸吞吐量的場景,例如:服務與服務之間數(shù)據(jù)分發(fā)、數(shù)據(jù)備份等,這類場景一般會采用多點并聯(lián)relay來提高傳輸?shù)乃俣,也是要建立在RUDP上的(這兩點在后面著重來描述)。
資源優(yōu)化問題:某些場景為了避免TCP的三次握手和四次揮手的過程,會采用RUDP來優(yōu)化資源的占用率和響應時間,提高系統(tǒng)的并發(fā)能,例如:QUIC.