想象你在快餐店点餐:

  1. 你:“一个汉堡”
  2. 收银员:“好的,15元”
  3. 交易结束,你离开队伍
  4. 你想加杯可乐,重新排队
  5. 你:“一杯可乐”
  6. 收银员:“好的,8元”
  7. 再次离开…

这种每次沟通后立即断开的模式,就是HTTP短连接的日常写照。

1. 短连接:频繁握手的代价

短连接工作流程:

  1. 建立TCP连接(三次握手)
  2. 发送HTTP请求
  3. 接收HTTP响应
  4. 立即断开连接(四次挥手)

致命痛点:加载一个含20张图片的网页时,浏览器需重复20次握手挥手流程!

2. 长连接:咖啡店会员的智慧

现在换到熟悉的咖啡店:

  1. 你:“我是会员小明”
  2. 店员:“欢迎!今天需要什么?”
  3. 你:“一杯拿铁”
  4. 店员:“好的,马上做”
  5. 你:“再加个牛角包”
  6. 店员:“已记录,稍等”
  7. 你继续点单直到说"结账"

这种持续会话复用通道的模式,正是HTTP长连接的精髓。

HTTP长连接时序图

3. 技术实现揭秘

HTTP版本与长短连接支持情况

核心机制

  • 协议协商:通过HTTP头部控制(HTTP/1.0、HTTP/1.1)

    GET / HTTP/1.1
    Host: www.example.com
    Connection: keep-alive  # 请求长连接HTTP/1.1 200 OK
    Keep-Alive: timeout=30, max=100  # 服务器声明超时30秒,最多100请求
    

    HTTP长连接工作机制

  • 请求复用:同一TCP连接传输多个HTTP事务

    HTTP/2在长连接基础上实现多请求并行

  • 应用层超时:Nginx等服务器控制(如30秒空闲关闭)

4. 性能视角:长连接完胜

对比项短连接长连接
加载含50资源的网页50次握手+50次挥手1次握手+1次挥手
延迟消耗高(数百ms级)极低(ms级)
服务器压力CPU占用高连接数减少80%
适用场景低频请求场景现代Web应用标配

案例:某电商网站在启用HTTP/2长连接后:

  • 页面加载时间从3.2s → 1.4s
  • 服务器CPU使用率下降40%

长连接的管理

长连接并非永久保持,服务器通过精妙机制控制资源:

# Nginx配置示例
http {keepalive_timeout 30s;  # 超时自动关闭keepalive_requests 100; # 最多服务100请求
}

当遇到以下情况时连接终止:

  1. 超时(如30秒无活动)
  2. 达到最大请求数
  3. 客户端主动关闭
  4. 传输错误

5. 安全视角:长连接完败

连接维持资源消耗

资源类型长连接占用短连接占用
内存30-50KB/连接瞬时占用后释放
文件描述符长期占用短暂占用
CPU心跳包持续消耗仅握手时消耗

实验数据:Apache服务器维持10,000长连接需消耗 500MB内存,而同等短连接攻击仅消耗 50MB

防御策略

# 使用iptables限制单IP连接数
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j DROP

攻击面对比

攻击类型长连接表现短连接表现
SYN Flood高危(需多次握手)高危(每次请求都握手)
HTTP Flood极高危(单连接多请求)中危(需频繁重建连接)
Slowloris极高危(长期占用连接)免疫(连接立即释放)
资源耗尽攻击高危(内存/描述符占用)中危(瞬时压力大)

6. HTTP长连接 vs TCP长连接

HTTP长连接是建立在TCP连接的基础上,HTTP/2 基于 TCP,但HTTP/3 基于 QUIC(UDP)。

HTTP长连接依赖TCP长连接

关键差异维度对比

特性TCP长连接HTTP长连接
协议层级传输层(OSI第4层)应用层(OSI第7层)
控制主体操作系统内核Web服务器/客户端
维持机制TCP Keepalive探针HTTP报文传输
超时时间小时级(默认2小时)秒级(通常30-60秒)
数据传输纯ACK包(无应用数据)携带实际HTTP请求/响应
配置位置操作系统内核参数Web服务器配置文件
连接复用对象任意应用层协议仅HTTP协议

TCP长连接时序图

7. 结语:连接的艺术

当你在微信聊天时持续发送消息,当股票软件实时刷新数据,背后都是长连接在默默支撑。而浏览静态宣传页时,短连接仍在发挥余热。

技术选择启示

  • 移动端APP/实时系统:必用长连接(WebSocket基于此)
  • 静态内容/CDN分发:智能组合两种模式
  • 安全防护:长连接需配套限流策略

关注我,带你看懂技术本质!用最接地气的"人话"拆解硬核知识,让复杂概念变得简单易懂 🔥

每周更新

  • 💡 技术原理图解:一图胜千言,直观呈现技术架构
  • 🛠️ 实战案例解析:结合真实项目经验,分享避坑指南
  • 🤖 前沿技术追踪:第一时间解读AI、区块链等新兴领域

适合人群

  • ✅ 技术小白想系统入门
  • ✅ 开发者想提升技术深度
  • ✅ 产品经理需要技术洞察
  • ✅ 所有对科技充满好奇的人

在这里你能获得

  • ✨ 复杂技术简单化
  • ✨ 抽象概念具象化
  • ✨ 理论知识实用化
  • ✨ 学习路径清晰化

点击关注,开启你的技术认知升级之旅! 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90055.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90055.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90055.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软徽标认证是什么?如何快速获取驱动签名?

在Windows系统中安装硬件驱动时,是否遇到过“无法验证发布者”的警告?这正是驱动数字签名在背后发挥作用。对于软件开发者而言,驱动数字签名不仅是系统兼容性的保障,更是企业品牌信任度的核心。一、驱动数字签名的核心作用驱动数字…

Apache Ignite缓存基本操作

这段内容主要讲解了 Apache Ignite 中缓存(IgniteCache)的基本操作,包括获取缓存、创建缓存、销毁缓存、执行原子操作以及异步操作等。下面我将用中文对这些内容进行详细解释,帮助你更好地理解。一、获取缓存实例(Gett…

最新基于R语言结构方程模型分析与实践技术应用

现代统计学理论和方法的不断完善,使科研工作对统计方法的要求也越来越高,面对纷繁复杂的数据,如何选择最为合适的数据分析方法已成为科研工作者,尤其是广大刚处于科研生涯起步阶段的研究生们最为棘手问题。随着科学的发展&#xf…

物联网_TDengine_EMQX_性能测试

一、Tdengine接口开发文档 1、数据库 1.创建数据库 URL /dp/createdb/ method post 请求示例 {"db_name":"demo01" // 必填 }响应示例 // 成功 {"code": 1,"data": {"成功创建数据库": "demo04"},"error…

从分析到优化:Amazon Q CLI 助力 EKS 网络调用链剖析与运维实践

1. 引言 在 Amazon EKS(Elastic Kubernetes Service)环境中,理解从 ALB(Application Load Balancer)到 Pod 的完整网络调用链对运维人员至关重要。本文将展示如何利用 Amazon Q CLI 这一 AI 助手工具,通过…

Class10简洁实现

Class10简洁实现 import torch from torch import nn from d2l import torch as d2l# 输入为28*28,输出为10类,第1、2隐藏层256神经元 num_inputs, num_outputs, num_hiddens1, num_hiddens2 784, 10, 256, 256 # 第1个隐藏层丢弃率为0.2,第…

【多线程篇22】:ConcurrentHashMap的并发安全原理剖析

文章目录一、HashMap 的“不安全”:问题的根源1. 数据结构回顾 (JDK 1.8)2. 并发下的致命缺陷:put 操作二、ConcurrentHashMap 的安全之道 (JDK 1.8)1. 核心数据结构2. 安全的 put 操作:分场景精细化加锁3. 安全的 size() 计算:并…

【Java + Vue 实现图片上传后 导出图片及Excel 并压缩为zip压缩包】

系统环境: Java JDK:1.8.0_202 Node.js:v12.2.0 Npm:6.9.0 Java后端实现 Controller /*** xxxx-导出* param response 返回信息体* param files 上传的图片文件* param param1 参数1* param param2 参数2*/PostMapping("/ex…

安科瑞:能源微电网助力工业园区“绿色”发展

朱以真近日,厦门市工业和信息化局印发工业园区绿色智慧微电网建设,拟开展全市工业园区绿色智慧微电网试点通知,那么对于如何实现绿色园区的建设是今天的话题。对工业园区绿色智慧微电网建设需求,其核心价值体现在“源-网-荷-储-充…

VUE2 学习笔记3 v-on、事件修饰符、键盘事件

事件处理v-on用于事件交互。语法:v-on:要绑定的事件“事件触发时执行的函数” (函数这里可以写括号,也可以不写,没有影响)简写::事件触发时要执行的函数,在Vue配置参数中,通过method…

变换域通讯系统CCSK的matlab仿真

CCSK(Cyclic Code Shift Keying)通信系统的MATLAB仿真。实现完整的CCSK调制、AWGN信道传输和解调过程,并计算了误码率(BER)。 % CCSK通信系统仿真 clear; clc; close all;% 参数设置 L 31; % m序列…

技术演进中的开发沉思-40 MFC系列:多线程协作

今天说说MFC的线程,当年用它实现中间件消息得心应手之时,可以实现一边实时接收数据,一边更新界面图表图文信息,顺滑得让人想吹声口哨。 MFC 多线程它像给程序装上了分身术,让原本只能 “单任务跑腿” 的代码&#xff0…

高速公路自动化安全监测主要内容

近年来,随着社会经济的快速发展,高速公路的通车里程不断增加,交通流量日益增大。与此同时,高速公路交通事故数量也呈现出一定的增长趋势。这些事故不仅造成了大量的人员伤亡和财产损失,还严重影响了社会的稳定和经济的…

完美解决 Ubuntu 中自定义启动器图标重复的问题(以 MATLAB 为例)

如果你在 Ubuntu 上为 MATLAB、PyCharm、Android Studio 或其他第三方应用创建了自定义启动器,并把它固定到了左侧的 Dock 栏,你很可能遇到过这个令人抓狂的场景: 当你满心欢喜地点击固定的图标启动程序后,Dock 栏上竟然“凭空”冒…

一文读懂深度模型优化器,掌握炼丹工具

深度模型优化器是训练神经网络的核心工具,其目标是高效地找到损失函数的最小值。从基础的随机梯度下降(SGD)到结合一阶动量修正与两阶段更新的Ranger,优化器的发展始终围绕着加速收敛、提升稳定性、适应参数差异和增强泛化能力四大…

关于虚拟机部署的k8s集群calico组件在开机恢复快照时的问题

在恢复虚拟机开机快照的时候总会出现各种的网络问题,连接不到自己的443端口,集群状态异常等等,绕一圈都发现不了问题,其实根本就没问题。虚拟机环境再现,恢复快照后的k8s环境,nfs莫名宕掉提示此报错&#x…

从感知到决策:虚拟仿真系统与视觉算法融合下的多路RTSP视频接入技术探究

1️⃣ 背景概述 随着国防信息化和智能化进程的不断加快,虚拟仿真系统 与 智能视觉算法平台 正逐步成为现代化装备研发、测试验证与战术训练的重要技术支撑。相比传统的静态建模或离线推演,新一代作战仿真与智能系统更强调 实时性、感知能力与动态交互&a…

Android app如果不适配Android 15会怎么样

深度思考完成 用时49秒 首先,用户的问题是:“Android app如果不适配Android 15会怎么样?”我需要基于搜索结果来回答。 让我回顾搜索结果: ‌1:标题是“Android 15应用适配指南”,内容强调了不适配Androi…

Vue-21-利用Vue3的axios+Python的flask实现前后端交互功能

文章目录 1 任务需求 2 前端 2.1 模板template 2.2 JS代码script 2.3 Calculate.vue(子组件) 2.4 App.vue(根组件) 3 后端 3.1 导入模块 3.2 创建应用实例 3.3 配置CORS 3.4 定义路由 3.5 处理请求 3.6 main.py 4 附录 4.1 CORS 4.1.1 全局启用CORS 4.1.2 限制允许的域名(更安…

动态规划之最长回文子串

题目:最长回文子串 给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 1: 输入:s “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2: 输入:s “cbbd” 输…