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的普及和应用,我们相信未来的互联网世界将会更加快速、稳定和智能。

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

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

相关文章

基于PaddlePaddle平台训练物体分类——猫狗分类

学习目标: 在百度的PaddlePaddle平台训练自己需要的模型,以训练一个猫狗分类模型为例 PaddlePaddle平台: 飞桨(PaddlePaddle)是百度开发的深度学习平台,具有动静统一框架、端到端开发套件等特性&#xf…

node.js 解析post请求 方法一

前提:依旧以前面发的node.js服务器动态资源处理代码 具体见 http://t.csdnimg.cn/TSNW9为模板,在这基础上进行修改。与动态资源处理代码不同的是,这次的用户信息我们借用表单来实现。post请求解析来获取和展示用户表单填写信息 1》代码难点&…

【项目实战】基于高并发服务器的搜索引擎

【项目实战】基于高并发服务器的搜索引擎 目录 【项目实战】基于高并发服务器的搜索引擎搜索引擎部分代码index.htmlindex.hpplog.hppparser.cc(用于对网页的html文件切分且存储索引关系)searcher.hpputil.hpphttp_server.cc(用于启动服务器和…

WPForms Pro插件下载:简化您的在线表单构建,提升用户互动

在当今的数字化世界中,表单是网站与用户互动的关键。无论是收集信息、处理订单还是进行调查,一个好的表单可以极大地提升用户体验和转化率。WPForms Pro插件,作为一款专业的WordPress表单构建工具,旨在帮助您轻松创建美观、功能强…

深度学习基础:循环神经网络中的Dropout

深度学习基础:循环神经网络中的Dropout 在深度学习中,过拟合是一个常见的问题,特别是在循环神经网络(RNN)等复杂模型中。为了应对过拟合问题,研究者们提出了许多方法,其中一种被广泛应用的方法…

TensorFlow进阶一(张量的范数、最值、均值、和函数、张量的比较)

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

短视频评论ID批量爬虫提取获客软件|视频评论下载采集工具

短视频评论批量抓取软件:智能拓客,精准抓取用户反馈 主要功能一览 1. 智能抓取任务创建: 软件提供了任务创建功能,用户只需输入任务名称、搜索关键词以及评论监控词,即可开始智能抓取。不仅能够搜索关键词匹配的视频…

Gradio 最快创建Web 界面部署到服务器并演示机器学习模型,本文提供教学案例以及部署方法,避免使用繁琐的django

最近学习hugging face里面的物体检测模型,发现一个方便快捷的工具! Gradio 是通过友好的 Web 界面演示机器学习模型的最快方式,以便任何人都可以在任何地方使用它! 一、核心优势: 使用这个开发这种演示机器学习模型的…

就业班 第三阶段(负载均衡) 2401--4.19 day3

二、企业 keepalived 高可用项目实战 1、Keepalived VRRP 介绍 keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。 ​ keepalived工作原理keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundan…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的,没依赖任何组件库,因此您可以随意又轻松的改变代码,以实现您的需求。 2、代码清爽干净,逻辑精妙,您可以好好品尝。 3、好戏开场。 3、代码(Vue3写法&#xff…

探索Web3:去中心化的互联网新时代

引言 在过去的几十年里,互联网已经改变了我们的生活方式、商业模式以及社交互动方式。然而,一个新的技术浪潮——Web3正在崭露头角,预示着一个去中心化的互联网新时代的来临。本文将深入探讨Web3技术的定义、特点以及其对未来互联网发展的影…

【数据结构-图】

目录 1 图2 图的定义和基本概念(在简单图范围内)3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

vue cli3开发自己的插件发布到npm

具体流程如下: 1、创建一个vue项目 vue create project 2、编写组件 (1)新建一个plugins文件夹(可自行创建) (2)新建Button组件 (3)组件挂载,为组件提供 in…

Python绘制3D曲面图

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Python中绘制3D曲面图的艺术 在数据可视化的世界中,3D曲面图是一种强大的工…

数据链路层(计算机网络,待完善)

0、前言 本文大多数图片都来自于 B站UP主:湖科大教书匠 的教学视频,对高军老师及其团队制作出这么优质的课程表示感谢。文章增加了部分个人理解,内容并不是对视频的静态化翻译。 1、概述 1.1、数据链路层在计算机网络体系中的位置 1.2、对…

Jenkins集成Terraform实现阿里云CDN自动刷新

在互联网业务中,CDN的应用已经成了普遍,SRE的日常需求中,CDN的刷新在前端需求逐渐中占了很大比例,并且比较琐碎。做为合格的SRE,把一切自动化是终极使命,而今天就分享通过JenkinsTerraform实现阿里云的CDN自…

CISSP通关学习笔记:共计 9 个章节(已完结)

1. 笔记说明 第 0 章节为开篇介绍,不包括知识点。第 1 - 8 章节为知识点梳理汇总,8 个章节的知识框架关系如下图所示: 2. 笔记目录 「 CISSP学习笔记 」0.开篇「 CISSP学习笔记 」1.安全与风险管理「 CISSP学习笔记 」2.资产安全「 CISSP…

机器学习/算法工程师面试题目与答案-深度学习部分1

机器学习/算法工程师面试题目与答案-深度学习部分 BatchNormalization的作用梯度消失循环神经网络,为什么好?什么是GroupConvolution什么是RNN神经网络中权重共享的是?神经网络激活函数?为什么在深度学习中常进行finetuning画GRU结构图什么是…

Flink CDC详解

文章目录 Flink CDC一 CDC简介1.1 CDC定义1.2 CDC应用场景1.3 CDC实现机制1.4 开源CDC工具对比 二 Flink CDC简介2.1 Flink CDC介绍2.2 Flink CDC Connector(连接器)2.3 Flink CDC && Flink版本2.4 Flink CDC特点 三 Flink CDC发展3.1 发展历程3.2 背景Dynamic Table &…

51单片机入门_江协科技_35~36_OB记录的自学笔记_AD与DA转换(XPT2046)

35. AD_DA 35.1. AD/DA介绍 •AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 •DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换…