游戏开发中的TCP、UDP、HTTP、WebSocket四种网络通讯协议对比

您所在的位置:网站首页 网页pc端网络框架是什么 游戏开发中的TCP、UDP、HTTP、WebSocket四种网络通讯协议对比

游戏开发中的TCP、UDP、HTTP、WebSocket四种网络通讯协议对比

2024-07-05 02:09| 来源: 网络整理| 查看: 265

TCP:

优点:可靠性、全双工协议(双向、连续不断地进行通信。)、开源支持多、应用较广泛、面向连接、研发成本低、报文内容不限制(IP层自动分包,重传,不大于1452bytes)

缺点:操作系统:较耗内存,支持连接数有限、设计:协议较复杂,自定义应用层协议、网络:网络差情况下延迟较高、传输:效率低于UDP协议

特性:面向连接、可靠性、全双工协议、基于IP层、OSI参考模型位于传输层、适用于二进制传输, 长链接

UDP:

优点:操作系统:并发高,内存消耗较低、传输:效率高,网络延迟低、传输模型简单,研发成本低

缺点:协议不可靠、单向协议、开源支持少、报文内容有限,不能大于1464bytes、设计:协议设计较复杂、网络:网络差,而且丢数据报文

特性:无连接,不可靠,基于IP协议层,OSI参考模型位于传输层,最大努力交付,适用于二进制传输

HTTP:

优点:协议较成熟,应用广泛、基于TCP/IP,拥有TCP优点、研发成本很低,开发快速、开源软件较多,nginx,apache,tomact等

缺点:无状态无连接、只有PULL模式,不支持PUSH、数据报文较大

特性:基于TCP/IP应用层协议、无状态,无连接(短链接)、支持C/S模式、适用于文本传输. 注意:grpc传输就用的HTTP2

WebSocket:

优点:协议较成熟、基于TCP/IP,拥有TCP优点、数据报文较小,包头非常小、面向连接,有状态协议、开源较多,开发较快

缺点:websocket是应用层协议所以数据包不简洁,相对于tcp来说它有http头部,还需要依赖http服务,直白点说就是相比于tcp,更耗流量,还耗费性能

特性:有状态,面向连接、数据报头较小、适用于WEB3.0,以及其他即时联网通讯 长链接

协议选择

通过以上对协议特性分析,建议:

1、对于弱联网类游戏,必须消除类的,卡牌类的,可以直接HTTP协议,考虑安全的话直接HTTPS,或者对内容体做对称加密;

2、对于实时性,交互性要求较高,且team有过相关经验,可以优先选择TCP,其次websocket协议,我经历的SLG和卡牌类游戏大部分都用TCP,因为比websocket更快,更省流量。

3.用websocket的情况,一是对性能要求不高,二是js没有tcp接口,只有websocket接口,所以web相关的就用websocket,微信小游戏,简单的休闲小游戏。im(微信、qq)发消息、发红包、转账就用的websocket。

4、对于实时性要求极高,且可达性要求一般可以选择UDP协议;

5、局域网对战类,赛车类,直接来UDP协议吧(公网对战,P2P的UDP还得“打洞”处理)

常见问题: 1.TCP与UDP的区别: 1、基于连接(TCP)与无连接(UDP); 2、对系统资源的要求(TCP较多,UDP少); 3、UDP程序结构较简单; 4、流模式(TCP)与数据报模式(UDP) ; 5、TCP保证数据正确性,UDP可能丢包; 6、TCP保证数据顺序,UDP不保证。

2.计算机网络有几层: 常见的大学课本《计算机网络》谢希仁版总结是五层, 从下到上分别是物理层、数据链路层、网络层、传输层和应用层,当然也有4层(少个物理层)、7层的分法。 3.HTTP的长连接: HTTP长连接的概念,以及HTTP与TCP的关系,简单概括一下就是:

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。 每个HTTP连接完成后,其对应的TCP连接并不是每次都会关闭。从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这个头部字段:Connection:keep-alive 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache,Nginx,Nginx中这个默认时间是 75s)中设定这个时间。实现长连接要客户端和服务端都支持长连接。 HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。

可以参考的文章: 1.《Http、Socket、WebSocket之间联系与区别》,https://www.cnblogs.com/aspirant/p/11334957.html

TCP的三次握手和四次挥手: 参考文章: https://blog.csdn.net/challenglistic/article/details/126469582?

https://blog.csdn.net/m0_70952941/article/details/126321711?

tcp为什么三次握手? 答: 原因一:三次是确认对方主机状态及收发能力的最小次数 原因二:降低被攻击的风险的最小次数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3