【心得】一文梳理高频面试题 HTTP 1.0/HTTP 1.1/HTTP 2.0/HTTP 3.0的区别并附加记忆方法
面试时很容易遇到的一个问题—— HTTP 1.0/HTTP 1.1/HTTP 2.0/HTTP 3.0的区别,其实这四个版本的发展实际上是一环扣一环的,是逐步完善的,本文希望帮助读者梳理清楚各个版本之间的区别,并且给出当前各个版本的应用情况,以及总结了两个记忆口诀,希望对大家有帮助。
文章目录
- 一、HTTP各版本协议的应用情况
- 二、HTTP 1.0与HTTP 1.1的区别
- 1.连接方式
- 2.Host头字段
- 3.请求方式
- 4.管道化
- 5.状态码
- 6.缓存处理
- 7.断点续传
- 记忆口诀
- 三、HTTP 1.1与HTTP 2.0的区别
- 1.头部压缩
- 2.传输格式
- 3.数据包发送顺序(多路复用)
- 4.记忆口诀
- 四、HTTP 2.0与HTTP 3.0的区别
- 1、 传输层协议
- 2、 连接建立速度:
- 3、 队头堵塞
- 4、 错误恢复
- 5、 安全性
- 总结
一、HTTP各版本协议的应用情况
HTTP协议自诞生以来,有一下几个比较重要的版本:
HTTP/1.0
HTTP/1.1
HTTP/2(也可以叫做HTTP 2.0)
HTTP/3(也可以叫做HTTP 3.0)
其中:
• HTTP/1.1 是目前最广泛使用的版本。
• HTTP/2 和 HTTP/3 是现代高性能 Web 应用的首选协议,HTTP/3 正在逐步普及。
而HTTP/1.0已经被废弃了。
二、HTTP 1.0与HTTP 1.1的区别
1.连接方式
HTTP 1.0默认为短连接,每次请求需新建TCP连接(三次握手),响应后立即关闭。HTTP 1.1默认持久连接,允许复用TCP连接发送多个请求,减少握手开销。
2.Host头字段
HTTP1.0 无强制HOST头,无法区分同一IP的不同虚拟主机,而HTTP1.1必须包含Host头,支持虚拟主机技术(如多域名共享服务器)
3.请求方式
HTTP 1.0:仅支持GET、HEAD、POST三种方法
HTTP 1.1:新增OPTIONS、PUT、DELETE、TRACE、CONNECT方法,功能更丰富
4.管道化
HTTP 1.0 必须等待响应后再发送新请求
HTTP 1.1 支持管道化,可连续发送多个请求(但响应需按顺序返回)
5.状态码
HTTP 1.1新增了24个错误状态响应码,如100 Continue 410 Gone
6.缓存处理
HTTP 1.0:仅支持Expires和If-Modified-Since,依赖绝对时间36。
HTTP 1.1:新增Cache-Control(如max-age)、ETag,支持更灵活的相对时间缓存策略
7.断点续传
HTTP 1.1增加了Range字段,支持断点续传,而HTTP 1.0则没有
记忆口诀
持久连接省握手,区分节点HOST头,请求方式更多有,管道连发多请求,状态缓存续传牛。
三、HTTP 1.1与HTTP 2.0的区别
1.头部压缩
HTTP 1.1:头部字段重复传输(如Cookie),占用带宽。
HTTP 2.0:如果你发出了多个请求,并且它们的头部(header)是相同的,那么 HTTP2 协议会帮你消除同样的部分。
2.传输格式
HTTP 1.1:基于文本格式解析,兼容性强但效率低。
HTTP 2.0:采用二进制分帧传输(二进制帧),解析更快、健壮性更强。
3.数据包发送顺序(多路复用)
HTTP 1.1:单个TCP连接需按顺序处理请求,存在队头阻塞问题,需建立多个连接并行传输。
HTTP 2.0: HTTP/2 的数据包不是按顺序发送的,同⼀个连接⾥⾯连续的数据包,可能属于不同的回应。(对数据包做了标记,标志其属于哪一个请求,其中规定客户端发出的数据流编号为奇数,服务器发出的数据流编号为偶数。客户端还可以指定数据流的优先级,优先级⾼的请求,服务器就先响应该请求)
4.记忆口诀
二部曲(二:二进制格式传输,部:头部压缩,曲(序):数据包发送不按顺序)
四、HTTP 2.0与HTTP 3.0的区别
这个呢是一环扣一环的 只要记住一个是TCP 一个是UDP 其余的区别都是可以推理出来的,故不需要口诀
1、 传输层协议
HTTP 2.0:基于TCP
HTTP 3.0: 基于UDP(并基于QUIC协议来实现可靠连接)
2、 连接建立速度:
HTTP 2.0: 需要TCP三次握手+TLS三次握手,建立速度较慢
HTTP 3.0:只需要QUIC的三次握手( 0-RTT 或 1-RTT 连接建立),速度很快
3、 队头堵塞
需要说明的是,HTTP 2.0相比于HTTP 1.1,基于多路复用(就是那个数据包的发送顺序),已经解决了应用层的队头阻塞。
但是由于HTTP 2.0是基于TCP的,所以在传输层,若底层 TCP 数据包丢失或延迟,所有通过该连接传输的 HTTP/2 流需等待 TCP 重传,导致传输层队头阻塞。
而HTTP 3.0通过改用 QUIC(基于 UDP)彻底规避了传输层阻塞。
4、 错误恢复
HTTP 2.0 依赖 TCP 的重传机制,恢复速度受限于 TCP 拥塞控制算法
HTTP 3.0 QUIC 内置快速重传与恢复机制,通过前向纠错(FEC)减少丢包影响
5、 安全性
HTTP 2.0:通常依赖 HTTPS(需额外 TLS 握手),但协议本身未强制加密
HTTP 3.0:QUIC 原生集成 TLS 1.3,加密为默认且不可关闭,安全性更高
总结
HTTP协议的迭代始终围绕性能优化、效率提升、安全性增强展开,不同版本的核心区别也需从上述方面进行理解记忆。
相关文章:
【心得】一文梳理高频面试题 HTTP 1.0/HTTP 1.1/HTTP 2.0/HTTP 3.0的区别并附加记忆方法
面试时很容易遇到的一个问题—— HTTP 1.0/HTTP 1.1/HTTP 2.0/HTTP 3.0的区别,其实这四个版本的发展实际上是一环扣一环的,是逐步完善的,本文希望帮助读者梳理清楚各个版本之间的区别,并且给出当前各个版本的应用情况,…...

Navicat连接虚拟机数据库详细教程
Navicat连接虚拟机数据库详细教程 以Windows主机 上的navicat 连接ubuntu虚拟机为例 确认虚拟机ip地址和主机ip地址 主机地址查询 cmd输入ipconfig 登录mysql 创建用户 CREATE USER newuserlocalhost IDENTIFIED BY password; CREATE USER newuser% IDENTIFIED BY passwor…...

委托者模式(掌握设计模式的核心之一)
目录 问题: 举例: 总结:核心就是利用Java中的多态来完成注入。 问题: 今天刷面经,刷到装饰者模式,又进阶的发现委托者模式,发现还是不理解,特此记录。 举例: 老板…...

DeepSeek-R1 论文笔记:通过强化学习提升大语言模型的推理能力
论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 作者团队:DeepSeek-AI 发表时间:2025 前置知识 & 术语 模型蒸馏 语言模型蒸馏的目标是将大型教师模型的知识(如语义理解、上…...
实现Unity shader扭曲效果
实现思路 1、扭曲材质赋于面片 2、抓取当前一帧的图片内容 3、获取屏幕坐标 4、利用屏幕坐标对抓取的图片采样 5、再采样张扰动贴图做扭曲 Shader "Unlit/NewUnlitShader" {Properties {_DistortTex ("扰动贴图 (RGB)", 2D) "bump" {}_Di…...

七星棋牌 6 端 200 子游戏全开源修复版源码(乐豆 + 防沉迷 + 比赛场 + 控制)
七星棋牌源码 是一款运营级的棋牌产品,覆盖 湖南、湖北、山西、江苏、贵州 等 6 大省区,支持 安卓、iOS 双端,并且 全开源。这个版本是 修复优化后的二开版本,新增了 乐豆系统、比赛场模式、防沉迷机制、AI 智能控制 等功能&#…...
C++STL---<limits>
C <limits> 头文件: <limits> 头文件是 C 标准库中用于获取各种数据类型的数值范围、精度等信息的工具。它通过模板类 std::numeric_limits 提供了对基本数据类型(如 int、float、double 等)的详细属性查询功能。通过 std::nume…...

一键安装Mysql部署脚本之Linux在线安装Mysql,脚本化自动化执行服务器部署(附执行脚本下载)
相关链接 一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDK一键安装Nginx部署脚本之Linux在线安装NginxNavicat最新版(17)详细安装教程Xshell客户端免费版无需注册XFtp客户端免费版无需注册 前言…...

ES、OAS、ERP、电子政务、企业信息化(高软35)
系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统(ES)二、办公自动化系统(OAS)三、企业资源规划(ERP)四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…...
文生图开源模型发展史(2014-2025年)
文生图开源模型的发展历程是一段充满技术革新、社区生态繁荣与商业化竞争的多维度演进史。 一、技术萌芽期(2014-2020年) 核心突破 2014年:GAN(生成对抗网络)诞生,首次实现数据驱动式图像生成࿰…...
OA办公系统自动渗透测试过程
目录 一、下载环境源码 二、部署环境 三、测试 XSS漏洞 SQL注入 文件上传漏洞 一、下载环境源码 OA源码打包地址: https://download.csdn.net/download/weixin_43650289/90434502?spm=1001.2014.3001.5503 二、部署环境...
Python标准库【os】5 文件和目录操作2
文章目录 8 文件和目录操作8.7 浏览目录下的内容8.8 查看文件或目录的信息8.9 文件状态修改文件标志位文件权限文件所属用户和组其它 8.10 浏览Windows的驱动器、卷、挂载点8.11 系统配置信息 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面…...
[代码规范]接口设计规范
一个优雅的接口要如何设计?有哪些设计规范可以遵循? 下面抛砖引玉,分享一些规范。 目录 1、RESTful API 设计最佳实践 2、Shneiderman 的 8 条黄金法则 3、Nielsen 的 10 条启发式规则 1、RESTful API 设计最佳实践 一共18条,参考…...

什么是最终一致性,它对后端系统的意义是什么
最终一致性(Eventual Consistency)是分布式系统中的一种一致性模型。与传统的强一致性模型不同,最终一致性并不要求系统在任何时刻都保持一致,而是保证在足够的时间后,所有节点的数据最终会达到一致的状态。换句话说,系统允许短时间内出现数据的不一致性,但最终会通过某…...
Unity学习笔记之——ugui的性能优化
在Unity中UI优化的核心问题就是重绘和批处理之间的平衡 一、Canvas优化要点 1.优化原因: (1)Unity为了性能优化,会合并Canvas下的所有元素; (2)如果把所有面板放到一个Canvas下,会…...
Python接口自动化中操作Excel文件的技术方法
在Python接口自动化测试中,操作Excel文件是一项常见且关键的技术需求。Excel作为数据存储和数据分析的重要工具,在自动化测试中通常用于存储测试用例、测试数据以及测试结果。通过Python操作Excel,可以大大提高测试的效率和灵活性。以下是一些…...

[Windows] 免费电脑控制手机软件 极限投屏_正式版_3.0.1 (QtScrcpy作者开发)
[Windows] 极限投屏_正式版 链接:https://pan.xunlei.com/s/VOKJf8Z1u5z-cHcTsRpSd89tA1?pwdu5ub# 新增功能(Future): 支持安卓14(Supports Android 14)提高投屏成功率(Improve the success rate of mirror)加快投屏速度(Accelerate screen mirrorin…...

游戏引擎学习第131天
仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化,特别是针对渲染和多线程的部分。目前,我们的目标是让地面块在独立线程上进行渲染,以提高性能。在此过程中,我…...

Visual Studio Code集成MarsCode AI
Visual Studio Code集成MarsCode AI 1、搜索MarsCode AI 安装包 2、点击install安装即可 小编这里已经安装过了 3、登录自己的账号 点击链接,注册账号 https://www.marscode.cn/events/s/i5DRGqqo/ 4、登录后可以自己切换模型...

partner‘127.0.0.1:3200‘ not reached
在SAP虚拟机中,如果LRPSAP 0显示黄色,通常表示服务启动异常或存在配置问题。以下是一些可能的处理方法: 检查主机文件配置 确保主机文件(hosts)中已正确配置SAP服务的域名解析。例如,添加以下内容到hosts文…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...

麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...