TCP的长连接和短连接,以及它们分别适用于什么场合

news/2025/3/31 4:47:46/

TCP长连接与短连接详解

一、核心概念对比
特性长连接(Persistent Connection)短连接(Short-lived Connection)
连接生命周期一次建立后长期保持,多次数据交互复用同一连接每次数据交互均需新建连接,完成后立即关闭
典型场景即时通讯、WebSocket、数据库连接池HTTP/1.1默认模式、简单API调用
资源消耗长期占用端口和内存,但减少握手/挥手开销每次交互增加三次握手和四次挥手开销
控制机制需要心跳机制维持存活(如TCP Keepalive)无额外维持机制
二、长连接的实现与优化
  1. 技术实现

    • HTTP长连接:通过Connection: keep-alive头部实现(如HTTP/1.1)
    • Socket层面:服务端不主动调用close(),客户端周期性发送心跳包
    # Python示例:设置TCP Keepalive
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
    sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)  # 60秒无数据则发送心跳
    
  2. 适用场景

    • 实时性要求高的系统(如股票行情推送)
    • 需频繁交互的微服务通信
    • 长轮询(Long Polling)架构
三、短连接的优势与应用
  1. 典型协议

    • HTTP/1.1(默认短连接)
    • DNS查询
    • 简单文件传输(如FTP控制连接)
  2. 优化策略

    • 使用Connection: close强制关闭连接
    • 结合连接池技术(如数据库连接池)实现连接复用
    // Java示例:设置HTTP短连接
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("Connection", "close");
    
四、选型决策树

五、性能对比实验数据
场景长连接短连接
100次请求响应28ms(含初始握手)897ms(每次握手)
连接资源占用持续占用1个端口峰值占用100端口
并发处理能力高(连接复用)低(端口耗尽风险)
六、演进趋势
  • HTTP/2:强制使用长连接+多路复用(Multiplexing)
  • QUIC协议:基于UDP的长连接,减少握手延迟(0-RTT)
  • WebSocket:全双工长连接标准,支持双向实时通信

总结建议:优先选择长连接提升性能,但若存在以下情况则考虑短连接:

  1. 单次交互后无后续通信
  2. 客户端数量极大(如百万级IoT设备)
  3. 网络环境不稳定导致连接维护成本过高

http://www.ppmy.cn/news/1583750.html

相关文章

内网渗透-DLL和C语言加载木马

免杀进阶技术 1、DLL的定义与使用 DLL:Dynamic Link library,动态链接库,是一个无法自己运行,需要额外的命令或程序来对其接口进行调用(类方法、函数)。 (1)在DevCpp中创建一个DLL项目 (2)在dllmain.c中定义源代码函数接口 #i…

CLion配置问题解决

课程笔记 https://www.yuque.com/bigdata-caoyu/newcpp CLion 激活码不可用 https://blog.csdn.net/qq_41973721/article/details/142407716 主机名:localhost 端口号:80 不为以下设置代理:*.github.com,plugins.jetbrains.com 插件无法下…

OkHttp 的证书设置

在 Android 开发中,通过 OkHttp 自定义 SSLSocketFactory 和 X509TrustManager 可以有效增强 HTTPS 通信的安全性,防止中间人攻击(如抓包工具 Charles/Fiddler 的拦截)。以下是实现防抓包的关键技术方案: 一、Okhttp设…

在 Ubuntu 下通过 Docker 部署 Nginx 服务器

1. Docker 和 Nginx 简介以及实验环境 Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成一个轻量级的、可移植的容器。通过 Docker,开发者可以在任何支持 Docker 的环境中运行应用,从而实现一致的开发和生产环境。Docke…

什么是区块链dapp开发?它能做什么?

区块链DApp(去中心化应用)作为区块链技术的核心落地场景,正在重构数字经济的底层逻辑。其核心特征包括去中心化架构(数据存储于分布式网络节点而非中心化服务器)智能合约驱动(业务逻辑通过链上代码自动执行…

Vue实现动态数据透视表(交叉表)

需求:需要根据前端选择的横维度、竖维度、值去生成一个动态的表格,然后把交叉的值放入到对应的横维度和竖维度之下,其实就是excel里面的数据透视表功能,查询交叉语句为sql语句。 实现页面: 选择一下横维度、竖维度、值之后点击查…

Ceph集群部署步骤

博文参考:https://baijiahao.baidu.com/s?id1739195406542186137&wfrspider&forpc 零、centos7配置中文语言环境 1.查看系统是否安装了中文安装包 locale -a |grep "zh_CN"没有输出,说明没有安装,输入下面的命令安装: …

Stable Diffusion绘画插件(ControlNet )

一、前置条件 1.安装Stable Diffusion WebUI版; 2.安装ControlNet插件。文后附模型下载链接。 二、ControlNet中模型的区别 1. canny.pth 输入条件:Canny 边缘图 特点:通过边缘线条控制生成图像结构 场景:需要保留清晰轮廓但…