為什么 UDP 有時比 TCP 更有優勢
隨著網絡技術飛速發展,網速已不再是傳輸的瓶頸,UDP協議以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP,如網頁瀏覽、流媒體、實時游戲、物聯網。
1,網速的提升給UDP穩定性提供可靠網絡保障
CDN服務商Akamai報告從2008年到2015年7年時間,各個國家網絡平均速率由1.5Mbps提升為5.1Mbps,網速提升近4倍。網絡環境變好,網絡傳輸的延遲、穩定性也隨之改善,UDP的丟包率低于5%,如果再使用應用層重傳,能夠完全確保傳輸的可靠性。
2,對比測試結果UDP性能優于TCP
為了提升瀏覽速度,Google基于TCP提出了SPDY協議以及HTTP/2。Google在Chrome上實驗基于UDP的QUIC協議,傳輸速率減少到100ms以內。
Google采用QUIC后連接速率能有效提升75%。
Google搜索采用QUIC后頁面加載性能提升3%。
油Tube采用QUIC后重新緩沖次數減少了30%。
3 , TCP設計過于冗余,速度難以進一步提升
TCP為了實現網絡通信的可靠性,使用了復雜的擁塞控制算法,建立了繁瑣的握手過程以及重傳策略。由于TCP內置在系統協議棧中,極難對其進行改進。
4 , UDP協議以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP
4.1 網頁瀏覽
使用UDP協議有三個優點 :
- 能夠對握手過程進行精簡,減少網絡通信往返次數;
- 能夠對TLS加解密過程進行優化;
- 收發快速,無阻塞。
4.2 流媒體
采用TCP,一旦發生丟包,TCP會將后續包緩存起來,等前面的包重傳并接收到后再繼續發送,延遲會越來越大。基于UDP的協議如WebRTC是極佳的選擇。
2010年google 通過收購 Global IP Solutions,獲得了WebRTC(網頁實時通信)技術,用于提升網頁視頻速率。
4.3 實時游戲
對實時要求較為嚴格的情況下,采用自定義的可靠UDP協議,比如Enet、RakNet(用戶有 sony online game、minecraft)等,自定義重傳策略,能夠把丟包產生的延遲降到最低,盡量減少網絡問題對游戲性造成的影響。
采用UDP的經典游戲如FPS游戲Quake、CS,著名的游戲引擎Unity3D采用的也是RakNet。
4.4 物聯網
2014年google旗下的Nest建立Thread Group,推出了物聯網通信協議Thread,完善物聯網通信。
采用UDP有3個關鍵點:
- 網絡帶寬需求較小,而實時性要求高;
- 大部分應用無需維持連接;
- 需要低功耗。
小結
如今全球將近50%的人都在使用互聯網,人們不斷的追求更快、更好的服務,一切都在變化,在越來越多的領域,UDP將會搶占TCP的主導地位。
參考原文:https://blog.wilddog.com/?p=668