做者:潘嘉明
野狗科技嵌入式工程師,曾在TP-Link從事相關工做,在嵌入式研究上經驗豐富。
野狗官博:https://blog.wilddog.com/
野狗官網:https://www.wilddog.com/
公衆訂閱號:wilddogbaas算法
隨着網絡技術飛速發展,網速已再也不是傳輸的瓶頸,UDP協議以其簡單、傳輸快的優點,在愈來愈多場景下取代了TCP,如網頁瀏覽、流媒體、實時遊戲、物聯網。緩存
CDN服務商Akamai(NASDAQ: AKAM)報告從2008年到2015年7年時間,各個國家網絡平均速率由1.5Mbps提高爲5.1Mbps,網速提高近4倍。網絡環境變好,網絡傳輸的延遲、穩定性也隨之改善,UDP的丟包率低於5%,若是再使用應用層重傳,可以徹底確保傳輸的可靠性。網絡
爲了提高瀏覽速度,Google基於TCP提出了SPDY協議以及HTTP/2。Google在Chrome上實驗基於UDP的QUIC協議,傳輸速率減小到100ms之內。性能
Google採用QUIC後鏈接速率能有效提高75%。
Google搜索採用QUIC後頁面加載性能提高3%。
YouTube採用QUIC後從新緩衝次數減小了30%。測試
TCP爲了實現網絡通訊的可靠性,使用了複雜的擁塞控制算法,創建了繁瑣的握手過程以及重傳策略。因爲TCP內置在系統協議棧中,極難對其進行改進。優化
4.1 網頁瀏覽google
使用UDP協議有三個優勢 :spa
可以對握手過程進行精簡,減小網絡通訊往返次數;設計
可以對TLS加解密過程進行優化;視頻
收發快速,無阻塞。
4.2 流媒體
採用TCP,一旦發生丟包,TCP會將後續包緩存起來,等前面的包重傳並接收到後再繼續發送,延遲會愈來愈大。基於UDP的協議如WebRTC是極佳的選擇。
2010年google 經過收購 Global IP Solutions,得到了WebRTC(網頁實時通訊,Web Real-Time Communication)技術,用於提高網頁視頻速率。
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的主導地位。