網絡遊戲中的協議選擇

在網絡遊戲開發中,通訊協議是一個無法被避免的問題,無論對於客戶端開發中還是服務器開發程序猿而言,制定一個合適的通訊協議是很有必要的

遊戲聯網需求有弱聯網遊戲,即時互動類遊戲

選擇通訊協議的時候主要關注於延遲低,易用,低成本等

 

下面對比TCP,UDP,HTTP,WebSocket 四種協議優缺點、特性

TCP:

優點: 可靠性 、全雙工協議、開源支持多、應用較廣泛、面向連接、研發成本低、報文內容不限制(IP層自動分包,重傳,不大於1452bytes)

缺點: 操作系統:較耗內存,支持連接數有限、設計:協議較複雜,自定義應用層協議、網絡:網絡差情況下延遲較高、傳輸:效率低於UDP協議

特性: 面向連接、可靠性、全雙工協議、基於IP層、OSI參考模型位於傳輸層、適用於二進制傳輸

 

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還得“打洞”處理)
--------------------- 

轉載自:https://blog.csdn.net/honey199396/article/details/54603860 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章