HTTP/1.1,HTTP/2.0和HTTP/3.0 各版本协议的详解(2024-04-24)

1、HTTP介绍

HTTP 协议有多个版本,目前广泛使用的是 HTTP/1.1 和 HTTP/2,以及正在逐步推广的 HTTP/3。

HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个 TCP 连接传输,减少了建立和关闭连接的消耗。

HTTP/2:基于二进制分帧,支持多路复用,允许同时通过单一的 HTTP/2 连接发起多重的、独立的、双向的交流。

HTTP/3:基于 QUIC 协议,旨在减少网络延迟,提高传输速度和安全性。

2、HTTP/1.1

HTTP1.1默认使用 Connection:keep-alive长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。

特性:

  1. 持久连接也称为(Http  keep-alive),只要任意一端没有明确提出断开连接,则保存TCP连接状态,允许在一个TCP连接上发送多个请求和响应。这样可以减少连接建立和关闭的开销,提高性能。

  2. 持久连接使得多数请求以管线化方式成为可能。可以同时并行发送多个请求,而不需要一个接一个的等待响应了。(请求打包一次传输过去,响应打包一次传递回来),管线化的前提是在持久连接下。

  3. 虚拟主机支持:HTTP/1.1支持虚拟主机,允许在同一个IP地址上托管多个域名,并根据请求中的Host头部字段来区分不同的网站。

  4. 缓存控制增强:HTTP/1.1引入了更多的缓存控制机制,例如通过Cache-Control头部字段来指定缓存的行为,以及通过ETag和If-None-Match头部字段来进行缓存验证。

  5. 断点续传:HTTP/1.1支持断点续传,允许客户端在下载大文件时可以从上次中断的地方继续下载,而不需要重新下载整个文件。

优点:

  1. 减少了TCP连接的重复建立和断开所造成的额外开销,减去了服务器端的压力。

  2. 高效的网络利用率:管道化机制允许同时发送多个请求,提高了网络利用率。

  3. 灵活的缓存控制:HTTP/1.1引入了更多的缓存控制机制,使得缓存更加灵活和高效。

  4. 更高效的请求和响应处理:通过 PUT、DELETE 和 OPTIONS,可以促进对服务器上资源的细粒度控制。它还支持 HTTP 流水线和分块传输编码,从而减少发送大型有效负载的延迟。

缺点:

  1. 队头阻塞:由于HTTP/1.1使用单个TCP连接来发送多个请求和响应,如果某个请求或响应被阻塞或丢失,后续的请求或响应也会被阻塞。这种情况称为队头阻塞,可能导致性能下降。(网络延迟问题只要由于队头阻塞,导致宽带无法被充分利用)

  2. 无法处理大量并发请求:由于HTTP/1.1仍然使用单个TCP连接来处理请求和响应,当有大量并发请求时会导致服务器资源消耗过大。(巨大的Http头部)

  3. 明文传输不安全。

  4. 不支持服务器推送消息。

3、HTTP/2.0

HTTP/2(超文本传输协议第2版,最初命名为HTTP 2.0),简称为h2(基于TLS/1.2或以上版本的加密连接)或h2c(非加密连接), HTTP/2 是 HTTP 协议的第二个主要版本,用于在 Web 服务器和客户端之间传输数据。

HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 的改进版 RFC 发布后的首个更新,主要基于 SPDY 协议。

多数主流浏览器已经在 2015 年底支持了该协议。

HTTP/2是一种网络协议,是HTTP/1.1的升级版,由IETF在2015年发布。HTTP/2旨在提高Web性能,减少延迟,增加安全性,使Web应用更加快速、高效和可靠。

特点:

  1. 多路复用:HTTP/2 允许同时发送多个请求和响应,而不是像 HTTP/1.1 一样只能一个一个地处理。这样可以减少延迟,提高效率,提高网络吞吐量。

  2. 二进制传输:HTTP/2 使用二进制协议,与 HTTP/1.1 使用的文本协议不同。二进制协议可以更快地解析,更有效地传输数据,减少了传输过程中的开销和延迟。

  3. 头部压缩:HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩,减少了头部传输的数据量,从而减少了网络延迟。

  4. 服务器推送:HTTP/2 支持服务器推送,允许服务器在客户端请求之前推送资源,以提高性能。

  5. 改进的安全性:HTTP/2 默认使用 TLS(Transport Layer Security)加密传输数据,提高了安全性。

  6. 兼容 HTTP/1.1:HTTP/2 可以与 HTTP/1.1 共存,服务器可以同时支持 HTTP/1.1 和 HTTP/2。如果客户端不支持 HTTP/2,服务器可以回退到 HTTP/1.1。

总的来说,HTTP/2在性能、安全性和可用性方面都有显著的改进,可以使 Web 应用更加快速、高效和可靠。

缺点:

  1. TCP以及TCP+TLS建立连接的延迟(握手延迟)

  2. TCP的队头阻塞没有彻底解决(http2.0中,多个请求是跑在一个TCP管道中的,一旦丢包,TCP就要等待重传(丢失的包等待重新传输确认),从而阻塞该TCP连接中的所有请求)

因为HTTP2.0存在这些缺点,所以出现了HTTP3.0。

对数据传输采用多路复用,让多个请求合并在同一 TCP 连接内,如下图所示:

HTTP/2 使用二进制格式来传输数据,而不是像 HTTP/1.1 一样使用文本格式。这提高了效率并降低了数据传输的延迟。

HTTP/2 使用头部压缩来减少传输数据的大小。这有助于减少网络带宽的使用量,并提高页面加载速度。

 HTTP/2 允许服务器在不被请求的情况下主动向客户端发送数据。这有助于减少请求延迟,并提高页面加载速度。

4、HTTP/3.0

Google在推行SPDY的时候意识到了上述http2.0一系列问题,于是又产生了基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。

将传输层协议由TCP替换为QUIC。QUIC是一个基于UDP(User Datagram Protocol,用户数据报协议)的新型传输层协议,由Google在2013年首次公开发布。QUIC旨在解决TCP的一些固有问题,如连接建立的延迟和拥塞控制算法的不足。

从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题。

特点:

  1. 实现了类似TCP的流量控制,传输可靠性的功能。

  2. 实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快)

  3. 成了TLS加密功能

  4. 多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)

  5. 连接迁移 QUIC支持快速的连接迁移,即使在网络切换或IP地址变更的情况下,连接也能够快速恢复,提高了网络的稳定性和可靠性。

  6. 抗拥塞控制 HTTP/3.0内置了先进的拥塞控制算法,能够更好地适应网络环境的变化,提供更稳定和可靠的网络性能

HTTP/3.0作为HTTP协议的下一代版本,代表了网络通信协议的最新发展方向。通过引入QUIC协议和一系列创新特性,HTTP/3.0将为互联网应用带来更高的性能和效率,推动互联网的进一步发展和创新。

随着HTTP/3.0的普及和应用,我们相信未来的互联网世界将会更加快速、稳定和智能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode面试经典150题】73. 从中序与后序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

BUUCTF-MISC-09文件中的秘密1

9.文件中的秘密1 题目:flag包含在图片的属性中

CentOS 7.9.2009 中 Docker 使用 GPU

一、安装nvidia驱动 1.1,查看显卡驱动 # 查看显卡型号 lspci | grep -i nvidia 1.2,进入 PCI devices ,输入上一步查询到的 2204 1.3,进入 官方驱动 | NVIDIA,查询 Geforce RTX 3090 驱动并下载 1.4,禁用…

【java、微服务】MQ

MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。 同步通讯 优点 时效性较强,可以立即得到结果 问题 微服务间基于Feign的调用就属于同步方式,存在一些问题。 耦合度高。每次加…

无人机干扰技术及干扰设备突破性发展

无人机干扰技术主要指的是通过各种手段干扰无人机的正常运行,从而达到使其失去控制、降低其性能或获取其信息的目的。这些干扰手段可以包括无线电干扰、GPS干扰、信号屏蔽、光学干扰等。 1.无线电干扰:由于无人机在遥控、定位、数据传输等方面都依赖于无…

云服务器搭建XSS-platform、DVWA靶机和Permeate论坛

目录 前言准备环境安装步骤一、 部署MySQL二、 系统部署三、系统安装主页介绍 前言 我发现目前网上的xss-platform的搭建教程都是基于本地搭建的,这样搭建好的xss平台只能在本地使用,无法测试别的网站。而网络上的大部分xss平台又几乎都是收费的&#x…

三维图形程序员入门-openmesh

三维网格入门第一篇,学习使用openmesh,三维模型的读取、存储有自己的数据结构,要想详细了解就开始学习openmesh,openmesh是开源的一个三角网格处理库,有三维顶点、面片、边、半边等,还有遍历算法、法向求解…

常见大厂面试题(SQL)02

小鹏面试题: 小鹏汽车充电每辆车连续快充最大次数 原表charging_data idcharge_timecharge_typeXP10012023/11/20 8:45快充XP10012023/11/21 20:45快充XP10012023/11/22 8:45快充XP10012023/11/23 8:45慢充XP10012023/11/25 8:45快充XP10022023/11/25 8:45快充XP10022023/11/…

Orange3数据可视化组件概览

概要 大家见过Orange3提供的丰富数据可视化组件吗? Orange3为您提供了一系列生动的图表工具,包括树图、箱线图、小提琴图、分布图、散点图、折线图、条形图、筛图、马赛克图、自由投影、线性投影、雷达图、热力图、韦恩图、轮廓图、毕达哥拉斯树、毕达哥…

C++_第八周做题总结

id:45 A.Equation(类与对象构造) 题目描述 建立一个类Equation,表达方程ax2bxc0。类中至少包含以下方法: 无参构造(abc默认值为1.0、1.0、0)与有参构造函数,用于初始化a、b、c的值; set方法,…

【AI学习】Transformer的Token嵌入表示为什么那么长

有朋友问,BERT等大模型的参数量怎么计算的?这个问题,李沐在BERT那篇论文中讲过,主要包括几部分。1、词嵌入:token数量乘以token表示的向量长度,就是 VH;2、注意力计算没有参数,只计算…

MT2041 三角形的个数

思路:找规律,推公式 4等分: 头朝上的三角形: 边长为1:1234s1; 边长为2:123s2; 边长为3:12s3; 边长为4:1s4; 即si12...n-i1(n-i2)*(n-i…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中,已经讲解过了MQTT的通讯原理和组包过程,现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互,实际上这篇文章已经拖更接近两年了,非常…

VS2019中配置C++ OpenCV 4.5.4完整指南

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

基于STM32的报警器

参考前面的内容:STM32点灯大师(中断法)-CSDN博客 同样是使用中断的方式触发警报 一、GPIO口配置起来 二、代码 打开gpio.c 重写虚函数,实现我们想要的功能 -----------------------------------------------------------------…

变频器基础原理

文章目录 0. 基本知识1.三相的电压之和为02.正弦交流相量的相量表示法(相量只是表示正弦量,而不等于正弦量 ;只有正弦量才能用相量表示)引入相量表示法目的:一种正弦量的产生方式:正弦量的相量表示,使用欧拉公式表示复数 3.用复数表示正弦量&…

Redis入门到通关之Redis网络模型-用户空间和内核态空间

文章目录 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端开发者。 博客特色: 在我的…

25考研数学可以全程跟张宇吗?

先说结论:25可以全程跟张宇。除了这三种情况。 总的来说,张宇的知识点是全的,不需要担心漏知识点、漏经典方法。不单高数,线代概率也是这样。 但是,老师讲得好,不能保证你上岸。 如果遇到这三种情况&…

java银行存取款程序设计

银行存取款的流程是人们非常熟悉的事情,用户可在银行对自己的资金账户进行存款、取款、查询余额等操作,极大的便利了人民群众对资金的管理。 本任务要求,使用所学知识编写一个银行存取款程序,实现存取款功能。编写一个帐户类实现…

LeetCode //C - 38. Count and Say Medium Topics Companies

38. Count and Say The count-and-say sequence is a sequence of digit strings defined by the recursive formula: countAndSay(1) “1”countAndSay(n) is the way you would “say” the digit string from countAndSay(n-1), which is then converted into a differen…