游戏开发中的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应用层协议、无状态,无连接(短链接

### Socket 套接字、TCPUDPHTTPWebSocket 的层级关系与联系 #### 1. 层级关系 在网络通信模型中,Socket 是一种抽象的概念,用于实现应用程序间的通信接口。它位于 OSI 模型中的会话层或传输层之上[^2]。具体来说: - **TCPUDP**:它们属于传输层协议,负责提供可靠的(TCP)或不可靠的(UDP)数据传输服务。 - **Socket**:它是基于 TCPUDP 协议的一种编程接口,允许开发者通过调用 API 来创建网络连接并收发数据。因此,Socket 可以理解为是对底层传输层协议(如 TCPUDP)的一个封装。 - **HTTP**:超文本传输协议是一种应用层协议,通常构建在 TCP/IP 上面运行。这意味着 HTTP 请求和响应最终会被打包成 TCP 数据段发送给目标主机[^4]。 - **WebSocket**:虽然也是应用层协议之一,但它不同于传统的 HTTP 协议之处在于其支持全双工通信模式,并且可以在单个握手之后保持长期连接状态而不必频繁重新建立新的请求/应答周期[^3]。 #### 2. 联系 这些技术之间存在紧密的合作关系: - 当使用 `ClientSocket` 进行开发时,默认情况下会选择 TCP 作为基础传输机制来确保消息传递的成功率;当然也可以选择基于 UDP 实现特定需求下的轻量级解决方案。 - 对于 Web 开发者而言,在大多数场景下他们更倾向于利用高级别的框架或者库间接操作 Sockets (即隐藏了大部分复杂的细节),而直接面对的是像 RESTful APIs 这样的形式化表述方法论——这实际上就是借助 HTTP(S) 完成了整个交互过程[^5]。 - 随着实时通讯需求的增长,单纯依靠短轮询方式已经无法满足高效能要求,于是出现了诸如 WebSocket 技术方案。它不仅继承了原有 HTTP 握手阶段的优点,还突破性地实现了持久化的双向通道功能,从而极大地提升了用户体验质量。 ```python import socket # 创建一个基于 IPv4 和 TCP 的套接字对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = 'localhost' port = 12345 # 绑定地址与端口 s.bind((host, port)) # 设置监听队列长度 s.listen(5) print(f"Listening on {host}:{port}") while True: client_socket, addr = s.accept() print('Got connection from', addr) client_socket.send(b'Thank you for connecting') client_socket.close() ``` 上述代码展示了如何使用 Python 中的标准库模块 `socket` 来设置简单的服务器端逻辑流程图样例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值