TCP - 长连接 vs 短连接

回到顶部(go to top)

一 前言

TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接。

TCP连接的建立是通过三次握手,而连接的释放是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间成本的。

回到顶部(go to top)

二 TCP短连接

模拟一种TCP短连接的情况:

  1. client 向 server 发起连接请求
  2. server 收到连接请求,双方建立TCP连接
  3. client 向 server 发送消息
  4. server 回应 client 消息
  5. 一次读写完成,此时双方任何一方都可以发起关闭连接请求,即close操作。

在步骤5中,一般都是 client 先发起close操作。从上面的描述来看,短连接一般只会在 client 和 server 之间传递一次读写操作。

短连接的操作过程:建立连接 ——> 传输数据 ——> 关闭连接。

回到顶部(go to top)

三 TCP长连接

模拟一种长连接的情况:

  1. client 向 server 发起连接请求
  2. server 收到连接请求,双方建立TCP连接
  3. client 向 server 发送消息
  4. server 回应 client 消息
  5. 一次读写完成,TCP连接不关闭
  6. 后续读写操作...
  7. 长时间操作之后,client 发起关闭连接请求

TCP长连接是指在连接成功建立之后,即使通信双方没有数据传输也要保持连接,使其不断开。

长连接的操作步骤:建立连接 ——> 传输数据 ——> ... (保持连接) ... ——> 传输数据 ——> 关闭连接

回到顶部(go to top)

四 长连接和短连接的优缺点

4.1 短连接的优缺点

优点:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。

缺点:由于TCP的建立和关闭操作需要一定的系统开销,如果客户端连接请求频繁,会降低服务器的处理速度、浪费系统资源和带宽。

4.2 长连接的优缺点

优点:长连接可以省去较多的TCP连接的建立和关闭的操作,减少浪费,节约时间。

缺点:client 与 server 之间的连接如果一直不关闭的话,会存在一个问题,随着客户端的连接越来越多,服务器的负载压力会增大,降低服务器的整体性能,更严重者,可能导致服务器崩溃;其次,如果大量处于连接状态的TCP通信双方长时间没有进行数据传输,这也会浪费系统和网络资源。

 

回到顶部(go to top)

五 长连接/短连接的应用场景

  • 长连接一般多用于需要频繁进行读写操作,点对点通讯,而且连接数不太多的情况。
例如:数据库的连接通常使用长连接,如果用短连接的话,频繁的TCP socket创建和关闭,会造成socket错误,也是对资源的一种浪费。
  • 短连接一般用于不需要频繁进行读写操作,并且连接数很大的情况下。
例如:web网站的http服务一般都用短连接。因为长连接对于服务器来说是要耗费一定的系统资源的,像web网站服务,通常会有大量的客户端连接请求,并发连接量大,使用短连接会更节省系统资源,能够及时响应客户请求。

总结:长连接和短连接的选择要具体需求、实际情况而定。

 

回到顶部(go to top)

参考文献

TCP协议-长连接和短连接详解 https://zhuanlan.zhihu.com/p/598303451

 

posted on   frank_cui  阅读(264)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2022-09-26 Debug - Oracle索引未生效的问题
2021-09-26 Redis - Redis 和 Memecache 有什么区别?
2021-09-26 Redis - Redis有哪些优缺点?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示