TCP keepalive、HTTP keep-alive和长短链接的思考记录
TCP keepalive(保活机制)
TCP keepalive是TCP协议的保活机制。
为什么说保活呢,因为TCP连接建立后是一直存在的,虽然理想情况下,这个TCP连接的通讯链路肯定是能通的,但是现实情况是会受一些其他因素影响导致通讯链路不同,但是TCP连接还是在客户端和服务端之间保持着,也就是双方都还是维护着消耗着一些资源。
应用层心跳保活机制
HTTP keep-alive
HTTP是基于TCP的。但是早期的1.0版本没有keep-alive,只能每次请求都建立一个TCP链接,请求完毕就把链接关闭。HTTP1.1版本开始加入keep-alive,可以复用一个TCP链接。但是有一个超时时间keep-alive timeout,时间到了最后还是会关闭这个链接。上图是文件nginx.conf配置的http keep-alive timeout。
HTTP协议的Keep-Alive意图在于TCP连接复用,同一个连接上串行方式传递请求-响应数据;TCP的Keepalive机制意图在于探测连接的对端是否存活,提高TCP连接的可靠性和稳定性,避免死连接的问题,同时也可以减少网络资源的占用,提高网络的效率。(在一定的时间内没有数据交换,可能会出现网络故障、设备故障或软件故障等问题,这将导致连接不能正常工作,但连接仍然保持打开状态,这被称为死连接。)
长短链接
简单说每次请求都关闭链接就是短链接,不关闭的话就是长连接。
需要注意的是,长连接并不意味着连接会一直保持开启状态,通常都会在一段时间内没有活动时自动关闭连接,以避免资源浪费。例如,在TCP协议中,可以使用心跳包来检测连接是否还处于活动状态,从而避免长时间的空闲连接,节省系统资源。
长短链接的优缺点那就很明显了,长链接耗资源,但实时性好,短链接时效差,节省资源。
参考:
https://blog.csdn.net/chrisnotfound/article/details/80111559
《NACOS架构与原理》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异