HTTP 连接复用机制详解

news2025/5/15 20:14:08

文章目录

  • HTTP 连接复用机制详解
    • 为什么需要连接复用?
    • 连接复用的实现方式
      • HTTP/1.1 的 Keep-Alive
      • HTTP/2 多路复用
    • HTTP/1.1 的队头阻塞问题

HTTP 连接复用机制详解

在这里插入图片描述
HTTP 连接复用是 HTTP/1.1 及更高版本中的核心优化机制,旨在减少 TCP 连接建立和关闭的开销,以显著提升性能。

为什么需要连接复用?

说到这一点,其实就是在聊 HTTP/1.0 不使用连接复用,而是为每一次 HTTP 请求建立一次短连接存在的缺点:

  • 三次握手延迟:每次 HTTP 请求增加 1.5 RTT 的时间开销;
  • TCP 慢启动:新连接需要逐步提升传输速率,原因在于连接刚刚建立时,客户端和服务端需要相互告知当前可用的滑动窗口大小,初始时滑动窗口采用指数增长的形式不断扩大;
  • 资源浪费:高并发时服务器需要维护大量连接。

自 HTTP/1.1 开始引入了连接复用机制,即 HTTP 请求会复用同一个 TCP 连接并发送多个请求。

连接复用的实现方式

HTTP/1.1 的 Keep-Alive

机制

  • 客户端请求头携带 Connection: keep-alive(HTTP/1.1 默认开启);
  • 服务端响应头携带 Connection: keep-alive,表示同意复用;
  • 连接空闲时,不会立即关闭,而是等待后续请求。

示例

GET /page1.html HTTP/1.1
Host: example.com
Connection: keep-alive  # 显式声明(可选)

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html

连接真正关闭时的所需条件

  • 达到 Keep-Alive: max 的请求数;
  • 超过 Keep-Alive: timeout 空闲时间;
  • 显式发送 Connection: close

HTTP/2 多路复用

HTTP/2 在传输时使用二进制协议传输数据,这一点已经和初代 HTTP 采用纯文本进行数据传输有了很大的区别。针对连接复用,HTTP/2 进一步引入了多路复用机制,具体来说:

  • 在单个 TCP 连接上并行交错多个请求/响应(二进制分帧)「比如客户端同时发送请求 A 和 B,服务器无需按序返回」;
  • 彻底解决了 HTTP/1.1 的队头阻塞问题。

HTTP/1.1 的队头阻塞问题

队头阻塞问题指的是,客户端和服务端采用 HTTP/1.1 协议进行通信时,如果请求 1 的响应延迟,那么会阻塞后续请求,即使后续的请求 2 已经准备好。

为什么在 HTTP/1.1 会出现队头阻塞问题?本质原因在于需要复用已经建立的 TCP 连接。需要先明确一点,一个{源 IP, 源 Port, 目标 IP, 目标 Port}四元组唯一标识一条 TCP 连接,因此如果客户端与服务端通过相同的四元组意图建立一个新的 TCP 连接,连接请求将会被拒绝。此时如果客户端改变一个端口(通过随机分配的方式),就可以建立一个新的 TCP 连接(服务端不需要改变端口,比如 HTTP 服务一直在 80 端口监听)。

由于 HTTP/1.1 采用多路复用,所以如果客户端有新的请求,会复用之前的 TCP 连接,而不是新建一个 TCP 连接,因此如果之前的请求延迟没有得到恢复,新的请求需要在队列中等待,之前的请求得到响应之后新的请求才会发送。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络协议分析 实验六 TCP和端口扫描

文章目录 实验6.1 TCP(Transfer Control Protocol)练习二 利用仿真编辑器编辑并发送TCP数据包实验6.2 UDP端口扫描实验6.3 TCP端口扫描练习一 TCP SYN扫描练习二 TCP FIN扫描 实验6.1 TCP(Transfer Control Protocol) 建立:syn,syn ack,ack 数据传送:tcp…

Spring Web MVC————入门(2)

1,请求 我们接下来继续讲请求的部分,上期将过很多了,我们来给请求收个尾。 还记得Cookie和Seesion吗,我们在HTTP讲请求和响应报文的时候讲过,现在再给大家讲一遍,我们HTTP是无状态的协议,这次的…

每日算法-250514

每日算法学习记录 (2024-05-14) 今天记录三道 LeetCode 算法题的解题思路和代码。 1. 两数之和 题目截图: 解题思路 这道题要求我们从一个整数数组中找出两个数,使它们的和等于一个给定的目标值 target,并返回这两个数的下标。 核心思路是使用 哈希…

嵌入式培训之数据结构学习(三)gdb调试、单向链表练习、顺序表与链表对比

目录 一、gdb调试 (一)一般调试步骤与命令 (二)找段错误(无下断点的地方) (三)调试命令 二、单向链表练习 1、查找链表的中间结点(用快慢指针) 2、找出…

虚拟机安装CentOS7网络问题

虚拟机安装CentOS7网络问题 1. 存在的问题1.1 CentOS7详细信息 2. 解决问题3.Windows下配置桥接模式 1. 存在的问题 虽然已经成功在虚拟机上安装了CentOS7,但是依旧不能上网。 1.1 CentOS7详细信息 [fanzhencentos01 ~]$ hostnamectlStatic hostname: centos01Ic…

迅为RK3588开发板安卓GPIO调用APP运行测试

将网盘上的安卓工程文件复制到 Windows 电脑上。确保工程路径中使用英文字符,不包含中文。接着,启动 Android Studio,点击“Open”按钮选择应用工程文件夹,然后点击“OK”。由于下载 Gradle 和各种 Jar 包可能需要一段时间&#x…

Unity 红点系统

首先明确一个,即红点系统的数据结构是一颗树,并且红点的数据结构的初始化需要放在游戏的初始化中,之后再是对应的红点UI侧的注册,对应的红点UI在销毁时需要注销对红点UI的显示回调注册,但是不销毁数据侧的红点注册 - …

尼康VR镜头防抖模式NORMAL和ACTIVE的区别(私人笔记)

1. NORMAL 模式(常规模式) 适用场景:一般手持拍摄,比如人像、静物、风景或缓慢平移镜头(如水平追拍)等。工作特性: 补偿手抖引起的小幅度震动(比如手持时自然的不稳)&am…

从索引中排除 Elasticsearch 字段

作者:来自 Elastic Kofi Bartlett 说明如何配置 Elasticsearch 排除字段、为什么要这样做,以及应遵循的最佳实践。 更多阅读:Elasticsearch:inverted index,doc_values 及 source 想获得 Elastic 认证?了解…

超详细Docker教程

前言:大家在在Linux上部署mysql及其他软件时,大家想一想自己最大的感受是什么? 我相信,除了个别天赋异禀的人以外,大多数人都会有相同的感受,那就是麻烦。核心体现在三点: 命令太多了&#xff…

Java项目拷打(外卖+点评)

一、点评星球(黑马点评) 1、项目概述 1.1、项目简介 本项目是基于Spring Boot与Redis深度整合的前后端分离的点评平台。系统以Redis为核心技术支撑,重点解决高并发场景下的缓存穿透、击穿、雪崩等问题,涵盖商户展示、优惠券秒杀…

微信小程序仿淘宝拍照/照片点位识图、点位裁剪生图、图片裁剪组件、图片点位框选、裁剪生成图片,canvasToImg

实现效果 效果: 1.微信小程序仿淘宝拍照/照片点位识图、根据点位裁剪生图、图片可裁剪、图片高度可控 2.识别点位自动生成标准构图方案,支持手动微调实现像素级精准裁剪 3.可以根据接口识别的点位信息实现拍照/相册图片特征点自动识别并裁剪 实现步骤 …

Qt/C++开发监控GB28181系统/录像文件查询/录像回放/倍速播放/录像文件下载

一、前言 搞定了实时预览后,另一个功能就是录像回放,录像回放和视频点播功能完全一致,唯一的区别就是发送点播的sdp信息中携带了开始时间和结束时间,因为是录像文件,所以有这个时间,而实时视频预览这个对应…

季报中的FPGA行业:U型反转,春江水暖

上周Lattice,AMD两大厂商相继发布2025 Q1季报,尽管恢复速度各异,但同时传递出FPGA行业整体回暖的复苏信号。 5月5日,Lattice交出了“勉强及格”的答卷,报告季度营收1亿2000万,与华尔街的预期基本相符。 对于这家聚焦在中小规模器件的领先厂商而言,按照其CEO的预期,长…

嵌入式机器学习平台Edge Impulse图像分类 – 快速入门

陈拓 2025/05/08-2025/05/11 1. 简介 官方网址 https://edgeimpulse.com/ 适用于任何边缘设备的人工智能: Gateways - 网关 Sensors & Cameras - 传感器和摄像头 Docker Containers - Docker容器 MCUs, NPUs, CPUs, GPUs 构建数据集、训练模型并优化库以…

zst-2001 上午题-历年真题 计算机网络(16个内容)

网络设备 计算机网络 - 第1题 ac 计算机网络 - 第2题 d 计算机网络 - 第3题 集线器不能隔离广播域和冲突域,所以集线器就1个广播域和冲突域 交换机就是那么的炫,可以隔离冲突域,有4给冲突域,但不能隔离广播域&#xf…

使用termius连接腾讯云服务器

使用termius连接腾讯云服务器 1.下载termius termius官网 安装配置教程 这里安装的window版本> 默认安装到C盘,不建议修改路径 可以选择谷歌登录,也可以不登录,软件是免费的,试用的是付费版本,不需要点 2.配置 这里…

实景三维建模软件应用场景(众趣科技实景三维建模)

实景三维建模软件应用场景概述 实景三维建模软件,作为数字化时代的重要工具,不仅能够真实、立体、时序化地反映和表达物理世界,还为国家的基础设施建设和数字化发展提供了有力的支撑。 在测绘与地理信息领域,实景三维建模软件是构…

【Linux】基础指令(Ⅱ)

目录 1. mv指令 2. cat指令 3.echo指令 补:输出重定向 4. more指令 5. less指令 6. head指令和tail指令 7.date指令 时间戳: 8. cal指令 9. alias指令 10.grep指令 1. mv指令 语法:mv [选项]... 源文件/目录 目标文件/目录 …

【ios越狱包安装失败?uniapp导出ipa文件如何安装到苹果手机】苹果IOS直接安装IPA文件

问题场景: 提示:ipa是用于苹果设备安装的软件包资源 设备:iphone 13(未越狱) 安装包类型:ipa包 调试工具:hbuilderx 问题描述 提要:ios包无法安装 uniapp导出ios包无法安装 相信有小伙伴跟我一样&…