【2025最新面试八股常问知识点】HTTP1.0,HTTP1.1,HTTP2.0,HTTP3.0,HTTP的进化之路。

HTTP


超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

HTTP 协议是以 ASCII 码传输,基于请求与响应模式的、无状态的,建立在 TCP/IP 协议之上的应用层规范。。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
 

HTTP协议主要的版本有4个,分别是HTTP/1.0、HTTP/1.1、HTTP/2和HTTP3.0HTTPS是另外一个协议,简单讲是HTTP的安全版。可以看我的另一篇博客

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的-CSDN博客https://blog.csdn.net/gwndjsh/article/details/147373157?spm=1001.2014.3001.5501

1. HTTP/1.0(1996年)

HTTP/1.0中浏览器与服务器只保持短暂的连接,连接无法复用。也就是说每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

  • 核心特点

    • 短连接:每个请求/响应后立即关闭TCP连接,导致高延迟(需频繁三次握手)。

    • 无状态:服务器不记录客户端状态(依赖Cookie等机制扩展)。

    • 基础功能:支持GETPOSTHEAD方法,通过Content-Type支持多种数据类型(如HTML、图片)。

  • 典型问题

    • TCP连接的建立需要三次握手,是很耗费时间的一个过程。所以,HTTP/1.0版本的性能比较差。现在,随便打开一个网页,上面都会有很多图片、视频等资源,HTTP/1.0显然无法满足性能要求。

      每个资源(如图片、CSS)需单独建立连接,页面加载效率极低。


2. HTTP/1.1(1997年,主流版本)

最主要的改进就是引入了持久连接。所谓的持久连接就是:在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。

  • 核心改进

    • 持久连接(Keep-Alive):默认复用TCP连接,减少握手开销(通过Connection: keep-alive)。

    • 管道化(Pipelining):允许客户端发送多个请求而不需等待响应(但服务器必须按顺序返回,易队头阻塞)。

    • 分块传输(Chunked Transfer):支持流式传输(Transfer-Encoding: chunked)。

    • 缓存控制:引入Cache-ControlETag等头部优化缓存策略。

    • Host头:支持虚拟主机(单IP托管多域名)。

  • 遗留问题

    • 队头阻塞(Head-of-Line Blocking):一个慢请求会阻塞后续请求。对于管道连接还是有一定的限制和要求的,其中一个比较关键的就是服务端必须按照与请求相同的顺序回送HTTP响应。这也就意味着,如果一个响应返回发生了延迟,那么其后续的响应都会被延迟,直到队头的响应送达。这就是所谓的HTTP队头阻塞。

    • 头部冗余:每次请求携带大量重复头部(如Cookie)。


SPDY(过度时期)



虽然,HTTP/1.1在HTTP/1.0的基础上提供了持久连接,提升了很大的效率,但是,还是有很大的提升空间。

正所谓时势造英雄,正是因为HTTP存在着诸多不足,所以,才诞生了SPDY。2009年,谷歌公开了自行研发的 SPDY 协议,主要解决 HTTP/1.1 效率不高的问题。它的设计目标是降低 50% 的页面加载时间。SPDY主要提供了以下功能(后文介绍HTTP2的时候再详细介绍):

●多路复用(multiplexing)。多个请求共享一个tcp连接。
●header压缩。删除或者压缩HTTP头
●服务端推送。提供服务方发起通信,并向客户端推送数据的机制。


SPDY位于HTTP之下,TCP和SSL之上,这样可以轻松兼容老版本的HTTP协议。

3. HTTP/2.0(2015年,革命性升级)

HTTP/2主要是解决HTTP中存在的效率问题。它主要引入了二进制分帧、多路复用、header压缩、以及服务端推送的新特性,大大的提升了效率。

而且,在HTTP/2中还解决了一个重要的问题,那就是HTTP的队头阻塞问题。

  • 核心改进

    • 二进制协议:替换文本格式,帧(Frames)和流(Streams)提高解析效率。主要是HTTP/2 会将所有传输的信息分割为更小的消息和帧(frame),并对它们采用二进制格式的编码。这种单连接多资源的方式,减少了服务端的压力,使得内存占用更少,连接吞吐量更大。而且,TCP连接数的减少使得网络拥塞状况得以改善,同时慢启动时间的减少,使拥塞和丢包恢复速度更快。

    • 多路复用(Multiplexing):单连接并行传输多个请求/响应,彻底解决队HTTP头阻塞。多路复用允许同时通过单一的HTTP/2.0连接发起多重的请求-响应消息。

    • 头部压缩(HPACK):减少冗余头部体积(专为HTTP设计的压缩算法)。HTTP/1.1的header带有大量信息,而且每次都要重复发送。HTTP/2 为了减少这部分开销,采用了HPACK 头部压缩算法对Header进行压缩。

    • 服务器推送(Server Push):服务器可主动推送资源(如CSS/JS)到客户端缓存。简单来讲就是当用户的浏览器和服务器在建立连接后,服务器主动将一些资源推送给浏览器并缓存起来的机制。有了缓存,当浏览器想要访问已缓存的资源的时候就可以直接从缓存中读取了。

    • 流优先级:允许设置请求优先级(如优先加载HTML而非图片)。

  • 局限

    • 仍基于TCP,可能受TCP队头阻塞影响(如丢包时重传阻塞所有流)。只能说HTTP/2解决了HTTP的队头阻塞问题,但是并没有解决TCP队头阻塞问题!

    • 部署复杂度高(需TLS加密,依赖ALPN协商)。

  • 关于怎么解决的HTTP头阻塞为问题

    • 在HTTP1.1中的HTTP头阻塞是因为管道化的设计方式造成的。HTTP/2废弃了管道化的方式,而是创新性的引入了帧、消息和数据流等概念。客户端和服务器可以把 HTTP 消息分解为互不依赖的帧,然后乱序发送,最后再在另一端把它们重新组合起来。因为没有顺序了,所以就不需要阻塞了,就有效的解决了HTTP队头阻塞的问题。

  • 关于TCP头阻塞的问题(发生原因)

    • 因为TCP传输过程中会把数据拆分为一个个按照顺序排列的数据包,这些数据包通过网络传输到了接收端,接收端再按照顺序将这些数据包组合成原始数据,这样就完成了数据传输。但是如果其中的某一个数据包没有按照顺序到达,接收端会一直保持连接等待数据包返回,这时候就会阻塞后续请求。这就发生了TCP队头阻塞。
      HTTP/1.1的管道化持久连接也是使得同一个TCP链接可以被多个HTTP使用,但是HTTP/1.1中规定一个域名可以有6个TCP连接。而HTTP/2中,同一个域名只是用一个TCP连接。
      所以,在HTTP/2中,TCP队头阻塞造成的影响会更大,因为HTTP/2的多路复用技术使得多个请求其实是基于同一个TCP连接的,那如果某一个请求造成了TCP队头阻塞,那么多个请求都会受到影响。

  • 放弃TCP(推荐)或者升级TCP(不推荐)

    •  放弃TCP好理解和跟下面的HTTP3一样,但是升级TCP的时候,这就涉及到一个”协议僵化“的问题。需要考虑中间层的问题,中间设备是指插入在数据终端和信号转换设备之间,完成调制前或解调后某些附加功能的辅助设备。例如集线器、交换机和无线接入点、路由器、安全解调器、通信服务器等都是中间设备。一个网络需要经过无数个中间设备的转发才能到达终端用户。操作系统也是一个重要的因素,因为TCP协议需要通过操作系统内核来实现,而操作系统的更新也是非常滞后的。所以,这种问题就被称之为”中间设备僵化”,也是导致”协议僵化”的重要原因。这也是限制着TCP协议更新的一个重要原因。


4. HTTP/3.0(2022年正式标准,基于QUIC(应该是属于传输层),这是一种完全基于UDP的协议

我们知道,HTTP/2之所以"被弃用",是因为他使用的传输层协议仍然是TCP,所以HTTP/3首要解决的问题就是绕开TCP,像上面所说如果改造TCP协议的话那么同样还是会因为受到中间设备僵化的影响,导致无法被大规模应用。所以,研发人员们想到了一种基于UDP实现的方式

  • QUIC协议有以下特点:
    基于UDP的传输层协议:它使用UDP端口号来识别指定机器上的特定服务器。
    可靠性:虽然UDP是不可靠传输协议,但是QUIC在UDP的基础上做了些改造,使得他提供了和TCP类似的可靠性。它提供了数据包重传拥塞控制调整传输节奏以及其他一些TCP中存在的特性。
    实现了无序、并发字节流:QUIC的单个数据流可以保证有序交付,但多个数据流之间可能乱序,这意味着单个数据流的传输是按序的,但是多个数据流中接收方收到的顺序可能与发送方的发送顺序不同!
    快速握手:QUIC提供0-RTT(零往返时间)1-RTT(单往返时间)的连接建立
    使用TLS 1.3传输层安全协议:与更早的TLS版本相比,TLS 1.3有着很多优点,但使用它的最主要原因是其握手所花费的往返次数更低,从而能降低协议的延迟。

  • 优势场景

    • 高延迟网络(如移动端)、频繁切换网络的场景。

    • 对实时性要求高的应用(如视频会议、在线游戏)。


版本对比总结

特性HTTP/1.0HTTP/1.1HTTP/2.0HTTP/3.0
连接方式短连接持久连接多路复用QUIC多路复用
传输协议TCPTCPTCPUDP(QUIC)
头部压缩HPACKQPACK
队头阻塞严重管道化仍存在TCP层存在完全解决
服务器推送不支持不支持支持保留但使用率低
典型应用早期静态页面现代Web(兼容模式)主流高性能Web移动端/实时应用

演进背后的核心目标

  1. 性能优化:减少延迟(从短连接到QUIC)、提高吞吐量(多路复用)。

  2. 安全性:从明文(HTTP/1.0)到强制HTTPS(HTTP/2+)。

  3. 适应新场景:从静态页面到动态应用(SPA)、实时流媒体。


实际建议

  • 兼容性优先:多数服务仍支持HTTP/1.1(如CDN回源)。

  • 性能敏感场景:启用HTTP/2(需TLS)或HTTP/3(如Cloudflare、Google服务已支持)。

  • 未来趋势:HTTP/3将逐步普及,但需客户端/服务器/网络设备全面支持。

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

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

相关文章

【算法练习】归并排序和归并分治

文章目录 1.归并排序1.1 递归版本1.2 非递归版本 2.归并分治2.1 计算数组的小和2.2 计算翻转对 1.归并排序 归并排序的核心步骤是: 拆分:将无序数组不断对半拆分成小块,直到每个小块只剩一个元素(自然有序)。 合并&a…

域对齐是什么

域对齐(Domain Alignment)是在机器学习和计算机视觉等领域中常用的技术 定义 域对齐旨在将不同域(Domain)的数据映射到一个共同的特征空间中,使得来自不同域的数据在该空间中具有相似的分布。这里的“域”可以指代不…

【linux】git安装、升级

git安装、升级 一、快捷安装版本2.18.0二、自定义版本安装(安装、升级)1、移除旧文件2、安装所需依赖3、选择指定版本4、解压文件、编译5、增加环境变量,验证是否版本 三、升级 一、快捷安装版本2.18.0 yum install git git --version二、自…

编程日志4.24

栈的链表基础表示结构 #include<iostream> #include<stdexcept> using namespace std; //模板声明&#xff0c;表明Stack类是一个通用的模板&#xff0c;可以用于存储任何类型的元素T template<typename T> //栈的声明 //Stack类的声明&#xff0c;表示一…

《冰雪传奇点卡版》:探索冰雪世界的传奇旅程!

《冰雪传奇点卡版》以“纯净打金”为核心&#xff0c;摒弃复杂付费坑&#xff0c;回归经典传奇玩法。以下从核心玩法、资源获取、职业搭配、交易变现四维度展开&#xff0c;助你高效开启冰雪传奇之旅。 一、核玩法解析&#xff1a;如何高效获取资源&#xff1f; 1. 职业定位与…

DeepClaude开源程序可以实现代码生成、创作诗句以及内容创作等功能

一、软件介绍 文末提供程序和源码下载 DeepClaude开源程序是增强的 AI&#xff0c;可以实现代码生成&#xff1a;DeepSeek r1 Claude 3.7 十四行诗 - 无与伦比的性能&#xff01;内容创作&#xff1a;DeepSeek r1 Gemini 2.5 Pro - 卓越的质量&#xff01;OpenAI 兼容。流媒…

Java常用注解通俗解释

注解就像是给Java代码贴的"便利贴"&#xff0c;它们不会改变代码本身的逻辑&#xff0c;但能给编译器、开发工具或运行时环境提供额外信息。下面我用最通俗的方式解释Java中最常用的注解&#xff1a; 一、基础篇&#xff1a;人人必知的注解 1. Override - "我…

vscode chrome调试怎么在所有浏览器都好使

chrome调试时只能在打开的浏览器里进行调试&#xff0c;其它打开的chrome浏览器就不能调试了&#xff0c;怎么解决。 右键点击 Chrome 的快捷方式图标&#xff0c;选择属性 在目标一栏&#xff0c;最后加上--remote-debugging-port9222 注意要用空格隔开 lanch.json 文件配置 …

Unity PBR基础知识

PBR原理 基于物理的渲染&#xff08;Physically Based Rendering&#xff0c;PBR&#xff09;是指使用基于物理原理和微平面理论建模的着色/光照模型&#xff0c;以及使用从现实中测量的表面参数来准确表示真实世界材质的渲染理念。 PBR基础理念 微平面理论&#xff08;Micr…

COM组件使用方法

普通COM组件&#xff08;如DLL&#xff09;仅暴露方法/属性接口&#xff0c;而ActiveX控件&#xff08;如OCX&#xff09;需要可视化交互&#xff08;如按钮、表格&#xff09;&#xff0c;需通过 ​​AxInterop​​ 包装器实现宿主环境集成。 项目中引入ActiveX控件流程如下。…

在 Spring Boot 项目中如何使用索引来优化 SQL 查询?

在 Spring Boot 项目中使用索引来优化 SQL 查询是提升数据库性能最常用的方法之一。下面是详细的步骤和实践指南&#xff1a; 核心目标&#xff1a;让数据库能够通过扫描索引&#xff08;小范围、有序的数据结构&#xff09;快速定位到所需数据行&#xff0c;而不是扫描整个表…

Vue3生产环境与Vue Devtools

在 Vue 3 的生产环境中&#xff0c;默认情况下 Vue Devtools 是无法正常使用 的&#xff0c;但开发者可以通过配置强制启用。以下是关键信息总结&#xff1a; &#x1f4cc; 核心结论 默认不可用 Vue 3 生产构建会移除 Devtools 支持以优化性能和安全性。 可强制启用 通过构建…

ARP渗透学习1

ARP协议工作原理 1. 什么是ARP ARP定义: 地址解析协议&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。 2. 工作原理 ARP表: 每台计算机都需要一个ARP表&#xff0c;用来保存IP地址和MAC地址的映射关系。查询过…

甲骨文云2025深度解析:AI驱动的云原生生态与全球化突围

一、战略转型&#xff1a;从数据库巨头到AI云服务先锋 1. 技术重心向AI与云深度迁移 甲骨文在2025年加速向AI原生云架构转型&#xff0c;其核心战略围绕生成式AI与量子计算展开。通过推出Oracle 23ai自治数据库&#xff0c;深度集成AI向量搜索功能&#xff0c;并重构云基础设…

【网络原理】TCP异常处理(二):连接异常

目录 一. 由进程崩溃引起的连接断开 二. 由关机引起的连接断开 三. 由断电引起的连接断开 四. 由网线断开引起的连接断开 一. 由进程崩溃引起的连接断开 在一般情况下&#xff0c;进程无论是正常结束&#xff0c;还是异常崩溃&#xff0c;都会触发回收文件资源&#xff0c;…

想做博闻强记的自己

2025年4月29日&#xff0c;13~25℃&#xff0c;还好 待办&#xff1a; 冶金《物理》期末测试 阅卷&#xff08;冶金《物理》期末测试试卷&#xff09; 重修《物理》《物理2》电子材料归档 规则变更&#xff0c;《高等数学2》期末试卷推倒重来 遇见&#xff1a;直播画面。 感受…

IP属地是实时位置还是自己设置

刷微博、抖音时&#xff0c;评论区总能看到“IP属地”&#xff1f;这个突然冒出来的小标签&#xff0c;让不少网友摸不着头脑&#xff1a;‌IP属地是实时位置&#xff0c;还是可以自己设置&#xff1f;‌别急&#xff0c;今天咱们就来聊聊这个话题&#xff01; 1、什么是IP属地…

水力压裂多裂缝扩展诱发光纤应变演化试验研究

1.概述 本文基于OFDR技术的光纤应变监测方法&#xff0c;监测了真三轴条件下人造岩石试样与页岩的水力压裂试验。结果表明&#xff0c;OFDR技术能以毫米级分辨率实时监测裂缝起裂、扩展及闭合全过程&#xff0c;并建立基于应变演化的裂缝判别准则&#xff0c;为光纤压裂监测的…

4、RabbitMQ的七种工作模式介绍

目录 一、Simple(简单模式) 1.1 概念 1.2 代码实现 消费者 运行结果 二、Work Queue&#xff08;工作队列&#xff09; 2.1 概念 1.2 代码实现 生产者 消费者 运行结果 三、Publish/Subscribe&#xff08;发布/订阅模式&#xff09; 3.1 概念 3.2 代码实现 生产者…

厚铜PCB钻孔工艺全解析:从参数设置到孔壁质量的关键控制点

在现代电子设备中&#xff0c;厚铜PCB&#xff08;印刷电路板&#xff09;扮演着至关重要的角色。它们不仅为电子元件提供了支撑&#xff0c;还实现了电路之间的连接。然而&#xff0c;在生产厚铜PCB时&#xff0c;钻孔是一个关键环节。本文将为您介绍厚铜PCB生产中钻孔的科普知…