HTTP1.0/1.1/2.0/3.0 的区别?

HTTP(Hypertext Transfer Protocol)是用于传输超文本的协议。各版本的主要区别体现在性能优化、数据传输方式以及支持的功能上

每一次协议的更新都是对旧协议的改进:
在这里插入图片描述

1. HTTP1.0

发布于1996年

  • 无连接(Connectionless):每次请求都会建立一个新的 TCP 连接,请求完成后关闭连接。
  • 无状态(Stateless):服务器无法保存请求间的上下文信息。
  • 单请求:一次请求只能获取一个资源,无法同时请求多个资源。

局限性:

  • 建立和关闭连接成本高,延迟大。
  • 每次请求都会重新建立 TCP 连接,浪费带宽。
  • 没有明确的缓存控制机制,依赖响应头中的 Expires

2. HTTP1.1

发布于1997年

  • 长连接(Persistent Connection):默认启用 Connection: keep-alive,在一个 TCP 连接中可以发送多个请求,减少连接建立和关闭的开销。
  • 管道化(Pipelining):支持在同一个连接中同时发送多个请求,但服务器必须按顺序响应,存在“队头阻塞”(Head-of-line blocking)问题。
  • 更好的缓存支持:引入了 Cache-ControlETag,提供了更灵活的缓存机制。
  • 分块传输编码(Chunked Transfer Encoding):支持动态生成内容时分块传输,不需要提前知道响应体大小。
  • 新增方法和状态码:新增 HTTP 方法如 PUT、DELETE、OPTIONS、TRACE。新增状态码如 100 Continue、206 Partial Content。
  • 虚拟主机支持:使用Host字段支持一个服务器托管多个域名。

局限性:

  • 存在队头阻塞。
  • 单个 TCP 连接的性能受限,适合并发量较低的场景。

3. HTTP2.0

在HTTP/1.x中,数据是以文本形式传输的,而在HTTP/2中,所有的通信数据都被封装成了二进制格式的(Frame)。这也是实现多路复用最根本的原因。

发布于2015年

  • 二进制分帧(Binary Framing):HTTP/2 将所有数据分为二进制帧(Frame),实现数据传输的流(Stream)化。二进制格式更高效,解析速度快。
  • 多路复用(Multiplexing):在一个 TCP 连接中同时发送多个请求和响应,无需按顺序等待,解决了 HTTP/1.x 的队头阻塞问题。
  • 头部压缩(Header Compression):使用 HPACK 算法压缩头部,减少传输数据量,特别适合重复头部(如 User-Agent)的请求。
  • 服务器推送(Server Push):服务器可以主动将资源(如 CSS、JS 文件)推送到客户端,减少请求的往返次数。
  • 流优先级:客户端可以为流设置优先级,优化资源加载顺序。

4. HTTP 3.0

HTTP 3.0第一个草案于2020年发布。它是 HTTP 2.0的建议继承者。它使用 QUIC 代替 TCP 作为底层传输协议,从而消除了传输层中的 队头阻塞(Head of Line Blocking, HOL)

QUIC 是基于 UDP 的。它在传输层将作为一等公民引入。QUIC 流共享相同的 QUIC 连接,因此不需要额外的握手和缓慢启动来创建新的 QUIC 流,但 QUIC 流是独立交付的,因此在大多数情况下,影响一个流的数据包丢失不会影响其他流。
简单来说,QUIC协议就是基于UDP重新实现了一遍HTTP2的特性
用一个等式来描述就是 QUIC = UDP + TLS + HTTP2
在这里插入图片描述
🔍QUIC 协议详解
🔍说说 HTTP1.0/1.1/2.0 的区别?

🔖更多阅读:
🔍HTTP请求中的安全性和幂等性
🔍OPTIONS 预检请求是什么?
🔍什么是 DNS?DNS 的三种查询方式?

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

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

相关文章

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

C++|CRC校验总结

参考: Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验算法,广泛用于检测数据传输或存储过程中的错误。…

迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!

经过前期内测调试,ROS固定翼开源仿真平台今日正式上线!现平台除适配PX4ROS环境外,也已实现APROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。 1 平台简介 ROS固定翼仿真平台旨在实现固定翼无人机决策…

C语言数据结构与算法(排序)详细版

大家好,欢迎来到“干货”小仓库!! 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!无人扶我青云志,我自踏雪至山巅!!&am…

微信小程序获取openid

2025年1月15日: 注意:其中appid,secret,还有服务器网址都按自己实际的填写 1、先在云服务器上安装nodejs,然后写个get接口: const express require(express); const app express();app.get(/getOpenid,(req,res)&…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析: 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数,使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

FPGA工程师成长四阶段

朋友,你有入行三年、五年、十年的职业规划吗?你知道你所做的岗位未来该如何成长吗? FPGA行业的发展近几年是蓬勃发展,有越来越多的人才想要或已经踏进了FPGA行业的大门。很多同学在入行FPGA之前,都会抱着满腹对职业发…

vscode的安装与使用

下载 地址:https://code.visualstudio.com/ 安装 修改安装路径(不要有中文) 点击下一步,创建桌面快捷方式,等待安装 安装中文插件 可以根据自己的需要安装python和Jupyter插件

懒饭 3.0.2 | 谷歌版纯净无广告教做菜软件

这款教做菜的软件是谷歌版,提供了一个纯净无广告的学习环境。即使没有会员,普通版也足够满足日常使用需求。软件内含分类和排行榜功能,支持搜索,教程形式多样,包括文字和视频,是学习烹饪技巧、追女朋友的好…

【数模学习笔记】插值算法和拟合算法

声明:以下笔记中的图片以及内容 均整理自“数学建模学习交流”清风老师的课程资料,仅用作学习交流使用 文章目录 插值算法定义三个类型插值举例插值多项式分段插值三角插值 一般插值多项式原理拉格朗日插值法龙格现象分段线性插值 牛顿插值法 Hermite埃尔…

计算机二级-Java系列(Java的特点)

java语言的特点 简单,面向对象,分布式,结构中立,可移植性,解释执行,健壮,安全,高性能,多线程和动态。 Java具有面向对象的三个基本特性为:封装,…

【Vue3 入门到实战】1. 创建Vue3工程

目录 ​编辑 1. 学习目标 2. 环境准备与初始化 3. 项目文件结构 4. 写一个简单的效果 5. 总结 1. 学习目标 (1) 掌握如何创建vue3项目。 (2) 了解项目中的文件的作用。 (3) 编辑App.vue文件,并写一个简单的效果。 2. 环境准备与初始化 (1) 安装 Node.js 和 …

vim使用指南

🏝️专栏:计算机操作系统 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 一、Vim 的基本概念 1.Vim 的主要模式: 1.1普通模式 (Normal Mode) 1.2插入…

TCP-IP详解卷 TCP的超时与重传

TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission) 一:介绍 1: 与数据链路层的ARQ协议相类似,TCP使用超时重发的重传机制。 即:TCP每发送一个报文段,就对此报文段设置…

卷积神经02-CUDA+Pytorch环境安装

卷积神经02-CUDAPytorch环境安装 在使用Python进行pytorch的使用过程中遇到各种各样的版本冲突问题,在此进行记录 0-核心知识脉络 1)根据自己电脑的CUDA版本安装对应版本的Pytorch,充分的使用GPU性能2)电脑要先安装【CUDA ToolKi…

【STM32-学习笔记-7-】USART串口通信

文章目录 USART串口通信Ⅰ、硬件电路Ⅱ、常见的电平标准Ⅲ、串口参数及时序Ⅳ、STM32的USART简介数据帧起始位侦测数据采样波特率发生器 Ⅴ、USART函数介绍Ⅵ、USART_InitTypeDef结构体参数1、USART_BaudRate2、USART_WordLength3、USART_StopBits4、USART_Parity5、USART_Mode…

为深度学习创建PyTorch张量 - 最佳选项

为深度学习创建PyTorch张量 - 最佳选项 正如我们所看到的,PyTorch张量是torch.Tensor​ PyTorch类的实例。张量的抽象概念与PyTorch张量之间的区别在于,PyTorch张量为我们提供了一个可以在代码中操作的具体实现。 在上一篇文章中,我们看到了…

RabbitMQ(四)

SpringBoot整合RabbitMQ SpringBoot整合1、生产者工程①创建module②配置POM③YAML④主启动类⑤测试程序 2、消费者工程①创建module②配置POM③YAML文件内配置: ④主启动类⑤监听器 3、RabbitListener注解属性对比①bindings属性②queues属性 SpringBoot整合 1、生…

项目练习:若依管理系统字典功能-Vue前端部分

文章目录 一、情景说明二、若依Vue相关代码及配置1、utils代码2、components组件3、api接口代码4、Vuex配置5、main.js配置 三、使用方法1、html部分2、js部分 一、情景说明 我们在做web系统的时候,肯定会遇到一些常量选择场景。 比如,性别:…

【 PID 算法 】PID 算法基础

一、简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义,…