【网络&通信协议系列(五)】长、短链接与WebSocket协议

本文介绍了网络通信中的长连接与短连接概念,及其在HTTP和TCP中的应用。重点讨论了TCP的KeepAlive机制和心跳机制,用于保持长连接的有效性。此外,还探讨了WebSocket协议,它是HTTP协议的升级版,实现了全双工通信,解决了服务器主动推送消息的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大部分开发者接触 长连接 概念可能都是通过:

HTTP 1.1 版本默认采用长连接,通过头部的Connection:Keep-Alive实现。

通过TCP/IP协议栈的学习,我们知道HTTP其实是基于TCP的应用层协议。实际上HTTP是无状态协议,所谓无状态,就是HTTP一个请求对应一次响应,如果不做一点特殊的操作,服务器不可能知道客户端上一次请求的状态。HTTP 1.1版本使用的Keep-Alive是服务器使用超时策略维护相应的TCP连接,当链路空闲,服务器很快就会断开连接。

概念

短连接:每一次客户端请求-服务端响应的过程都需要建立一个新的连接,也就是说每一次连接都需要经过完整的TCP三次握手、四次挥手。
长连接:一次连接建立,多次使用;也就是说多次连接只需要一轮最开始的三次握手、到连接结束/失效的四次挥手操作。
长轮询:客户端发送请求,服务器不立马响应,而是保持当前连接,直到有数据时才返回。

实际上的长连接、短连接都是TCP层面的概念

使用场景

长连接多用于操作频繁,连接数不太多的情况,如:点对点通讯、数据库连接等,优势是不用每次数据传输都进行繁琐的连接建立过程,坏处是每一个连接的维持都需要耗费服务器的资源:句柄、服务端线程等,如果连接数过多,可能造成服务器资源耗费严重,所以服务器通常会指定允许客户端最大连接数防止这种现象发生。

短连接则相反,用于并发量大,但操作没有那么频繁的场景

TCP长连接

TCP连接建立后,服务器如何知道某个客户端连接是否还有效?如果一个连接在使用一次之后就不再继续发送数据了,那么服务器完全没有必要继续保持这个连接。而如果没有一定的检测机制,服务器是无法知道到底哪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值