您的位置:首页 > 理论基础 > 计算机网络

游戏开发中网络通讯协议对比

2017-03-12 15:49 309 查看
转自:http://blog.csdn.net/honey199396/article/details/54603860

在网络游戏开发中,通讯协议是一个无法被避免的问题,无论对于客户端开发中还是服务器开发程序猿而言,制定一个合适的通讯协议是很有必要的

游戏联网需求有弱联网游戏,即时互动类游戏

选择通讯协议的时候主要关注于延迟低,易用,低成本等

 

下面对比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还得“打洞”处理)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: