1. 程式人生 > >遊戲開發中網路通訊協議對比

遊戲開發中網路通訊協議對比

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

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

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

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