遊戲開發中網路通訊協議對比
在網路遊戲開發中,通訊協議是一個無法被避免的問題,無論對於客戶端開發中還是伺服器開發程式猿而言,制定一個合適的通訊協議是很有必要的
遊戲聯網需求有弱聯網遊戲,即時互動類遊戲
選擇通訊協議的時候主要關注於延遲低,易用,低成本等
下面對比TCP,UDP,HTTP,WebSocket 四種協議優缺點、特性
TCP:
優點: 可靠性 、全雙工協議、開源支援多、應用較廣泛、面向連線、研發成本低、報文內容不限制(IP層自動分包,重傳,不大於1452bytes)
缺點: 作業系統:較耗記憶體,支援連線數有限、設計:協議較複雜,自定義應用層協議、網路:網路差情況下延遲較高、傳輸:效率低於UDP協議
特性:
UDP
優點: 作業系統:併發高,記憶體消耗較低、傳輸:效率高,網路延遲低、傳輸模型簡單,研發成本低
缺點: 協議不可靠、單向協議、開源支援少、報文內容有限,不能大於1464bytes、設計:協議設計較複雜、網路:網路差,而且丟資料報文
特性:無連線,不可靠,基於IP協議層,OSI參考模型位於傳輸層,最大努力交付,適用於二進位制傳輸
HTTP:
優點: 協議較成熟,應用廣泛、基於TCP/IP,擁有TCP優點、研發成本很低,開發快速、開源軟體較多,nginx,apache,tomact等
缺點: 無狀態無連線、只有PULL模式,不支援PUSH、資料報文較大
特性: 基於TCP/IP應用層協議、無狀態,無連線、支援C/S模式、適用於文字傳輸
WebSocket
優點:協議較成熟、基於TCP/IP,擁有TCP優點、資料報文較小,包頭非常小、面向連線,有狀態協議、開源較多,開發較快
缺點:沒發現啥缺點
特性:有狀態,面向連線、資料報頭較小、適用於WEB3.0,以及其他即時聯網通訊
協議選擇
通過以上對協議特性分析,我想大家心裡已經有低兒了。建議:
1、對於弱聯網類遊戲,必須消除類的,卡牌類的,可以直接HTTP協議,考慮安全的話直接HTTPS,或者對內容體做對稱加密;
2、對於實時性,互動性要求較高,且team有過相關經驗,可以優先選擇websocket,其次TCP協議;
3、對於實時性要求極高,且可達性要求一般可以選擇UDP協議;
4、區域網對戰類,賽車類,直接來UDP協議吧(公網對戰,P2P的UDP還得“打洞”處理)