【心得】一文梳理高频面试题 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://www.mzph.cn/diannao/72187.shtml

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

相关文章

大模型部署与调优:从基础到高效优化全解析

大模型部署与调优:从基础到高效优化全解析 1. 引言 随着深度学习的快速发展,大模型(Large Models) 在自然语言处理(NLP)、计算机视觉(CV)、推荐系统等领域的应用日益广泛。然而&am…

小红书app复制短链,分享链接转直接可访问链接

简介:小红书手机app分享的链接需要点击才能获取完成链接,本文教大家如何通过代码的方式将xhs的短连接转化为长链接。 1.正常我们分享的链接是这样的: 44 小猪吃宵夜发布了一篇小红书笔记,快来看吧! 😆 KeA…

DeepSeek 助力 Vue3 开发:打造丝滑的弹性布局(Flexbox)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

DeepSeek开源周Day5压轴登场:3FS与Smallpond,能否终结AI数据瓶颈之争?

2025年2月28日,DeepSeek开源周迎来了第五天,也是本次活动的收官之日。自2月24日启动以来,DeepSeek团队以每天一个开源项目的节奏,陆续向全球开发者展示了他们在人工智能基础设施领域的最新成果。今天,他们发布了Fire-F…

SQL AnyWhere 的备份与恢复

目录 一、备份 二、恢复 1、自动恢复 2、映像恢复 3、日志恢复-指定时间点 4、日志恢复-指定偏移 5、完整的恢复流程 6、恢复最佳实践 三、其他操作 1、dbtran 2、SQL Shell 工具 数据库的安装与基本使用内容请参考博客: SAP SQLAnyWhere 17 的安装与基本使用_sql…

入门基础项目(SpringBoot+Vue)

文章目录 1. css布局相关2. JS3. Vue 脚手架搭建4. ElementUI4.1 引入ElementUI4.2 首页4.2.1 整体框架4.2.2 Aside-logo4.2.3 Aside-菜单4.2.4 Header-左侧4.2.5 Header-右侧4.2.6 iconfont 自定义图标4.2.7 完整代码 4.3 封装前后端交互工具 axios4.3.1 安装 axios4.3.2 /src…

unity学习61:UI布局layout

目录 1 布局 layout 1.1 先准备测试UI,新增这样一组 panel 和 image 1.2 新增 vertical layout 1.3 现在移动任意一个image 都会影响其他 1.3.1 对比 如果没有这个,就会是覆盖效果了 1.3.2 对比 如果没有这个,就会是覆盖效果了 1.4 总结&#xf…

翻译: 深入分析LLMs like ChatGPT 一

大家好,我想做这个视频已经有一段时间了。这是一个全面但面向普通观众的介绍,介绍像ChatGPT这样的大型语言模型。我希望通过这个视频让大家对这种工具的工作原理有一些概念性的理解。 首先,我们来谈谈你在这个文本框里输入内容并点击回车后背…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_add_dump

ngx_conf_add_dump 定义在src\core\ngx_conf_file.c static ngx_int_t ngx_conf_add_dump(ngx_conf_t *cf, ngx_str_t *filename) {off_t size;u_char *p;uint32_t hash;ngx_buf_t *buf;ngx_str_node_t *sn;ngx_conf_dump_t *cd;has…

Oracle 导出所有表索引的创建语句

在Oracle数据库中,导出所有表的索引创建语句通常涉及到使用数据字典视图来查询索引的定义,然后生成对应的SQL语句。你可以通过查询DBA_INDEXES或USER_INDEXES视图(取决于你的权限和需求)来获取这些信息。 使用DBA_INDEXES视图 如…

快速搭建多语言网站的 FastAdmin 实践

快速搭建多语言网站的 FastAdmin 实践 引言 在全球化的背景下,越来越多的网站需要支持多种语言,以便满足不同用户的需求。FastAdmin 是一个基于 ThinkPHP 的快速后台开发框架,提供了丰富的功能和灵活的扩展性,非常适合用于快速搭…

Python 实战:构建分布式文件存储系统全解析

Python 实战:构建分布式文件存储系统全解析 在当今数据爆炸的时代,分布式文件存储系统凭借其高可扩展性、高可靠性等优势,成为了数据存储领域的热门选择。本文将详细介绍如何使用 Python 构建一个简单的分布式文件存储系统。从系统架构设计&…

【综合项目】api系统——基于Node.js、express、mysql等技术

目录 0 前言 1 初始化 2 注册登录 2.1 注册 2.1.1 功能:密码加密(2.3.3) 2.1.1.1 操作 2.1.1.2 bcryptjs详解 2.1.2 插入新用户(2.3.4) 2.1.3 优化:表单数据验证(2.5) …

tableau之标靶图、甘特图和瀑布图

一、标靶图 概念 标靶图(Bullet Chart)是一种用于显示数据与目标之间关系的可视化图表,常用于业务和管理报告中。其设计旨在用来比较实际值与目标值,同时展示额外的上下文信息(如趋势)。 作用 可视化目标…

Linux下的网络通信编程

在不同主机之间,进行进程间的通信。 1解决主机之间硬件的互通 2.解决主机之间软件的互通. 3.IP地址:来区分不同的主机(软件地址) 4.MAC地址:硬件地址 5.端口号:区分同一主机上的不同应用进程 网络协议…

网络七层模型—OSI参考模型详解

网络七层模型:OSI参考模型详解 引言 在网络通信的世界中,OSI(Open Systems Interconnection)参考模型是一个基础且核心的概念。它由国际标准化组织(ISO)于1984年提出,旨在为不同厂商的设备和应…

530 Login fail. A secure connection is requiered(such as ssl)-java发送QQ邮箱(简单配置)

由于cs的csdN许多文章关于这方面的都是vip文章,而本文是免费的,希望广大网友觉得有帮助的可以多点赞和关注! QQ邮箱授权码到这里去开启 授权码是16位的字母,填入下面的mail.setting里面的pass里面 # 邮件服务器的SMTP地址 host…

Sqlserver安全篇之_TLS的证书概念

证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…

【SQL】掌握SQL查询技巧:数据分组与排序

目录 1. GROUP BY 1.1 定义与用途1.2 示例说明1.3 注意事项1.4 可视化示例 2. ORDER BY 2.1 定义与用途2.2 升序说明(默认)2.3 降序排序2.4 多列排序2.5 可视化示例 3. GROUP BY 与 ORDER BY 的结合使用4. 可视化示例总结 在数据库管理中,S…

SOME/IP-SD -- 协议英文原文讲解6

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.3.1 E…