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