HTTP1.1、HTTP2、HTTP3

2024-02-05 21:04
文章标签 http2 http3 http1.1

本文主要是介绍HTTP1.1、HTTP2、HTTP3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HTTP1.1

HTTP/1.1 相比 HTTP/1.0 性能上的改进:

  • 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

但 HTTP/1.1 还是有性能瓶颈:

  • 请求 / 响应头部(Header)未经压缩就发送,首部信息越多延迟越大。只能压缩 Body 的部分;
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;
  • 服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端一直请求不到数据,也就是队头阻塞;
  • 没有请求优先级控制;
  • 请求只能从客户端开始,服务器只能被动响应。

HTTP2

HTTP/2 协议是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的。基于TLSV1.2。

那 HTTP/2 相比 HTTP/1.1 性能上的改进:

  • 头部压缩
  • 二进制格式
  • 并发传输
  • 服务器主动推送资源

HTTP3

  • HTTP/1.1 中的管道( pipeline)虽然解决了请求的队头阻塞,但是没有解决响应的队头阻塞,因为服务端需要按顺序响应收到的请求,如果服务端处理某个请求消耗的时间比较长,那么只能等响应完这个请求后, 才能处理下一个请求,这属于 HTTP 层队头阻塞。
  • HTTP/2 虽然通过多个请求复用一个 TCP 连接解决了 HTTP 的队头阻塞 ,但是一旦发生丢包,就会阻塞住所有的 HTTP 请求,这属于 TCP 层队头阻塞。

HTTP/2 队头阻塞的问题是因为 TCP,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!基于TLSv1.3+。

 

 

Google的一些初步实验证明,QUIC作为Google部分热门服务的底层传输协议,极大地提高了速度和用户体验。部署QUIC作为YouTube视频的底层传输协议,导致YouTube视频流的缓冲率下降了30%,这直接影响了用户的视频观看体验。在显示谷歌搜索结果时,也有类似的改善。

网络条件较差的情况下提升非常明显,这促使谷歌更加积极地完善该协议,并最终向IETF提出标准化。

由于这些早期的试验所带来的所有改进,QUIC已经成为带领万维网走向未来的重要因素。在QUIC的支持下,HTTP从HTTP/2到HTTP/3的改头换面,朝着这个方向合理地迈出了一步。

这篇关于HTTP1.1、HTTP2、HTTP3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682159

相关文章

HTTP1.1与HTTP1.0的区别

HTTP1.0规定浏览器和服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求后立刻断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。           图1 HTTP1.0中TCP需要建立多次连接 如上图,如果浏览器访问一个网页需要加载3个图片文件和一个网页文档,则需要多次的请求和相应,每次请求和相应都需要建立一个单独的连接,每次连接只

从head of line到http3/quic

1.head of line 队头阻塞     什么是队头阻塞呢?就是第一个人的问题影响了后面的人.一堆人排队过桥,第一个卡住了,那么后面的人谁也别想过去. tcp:     tcp协议为了保证帧的顺序行,每个帧都有编号.接受者会按照编号对数据进行处理.     1.如果2,3,4都传输过去了,但是1没有传输过去,那么2,3,4还是不可读的.同时1234也不能从写缓存中滑走.     2

HTTP 之 HTTP/1.0、HTTP/1.1和HTTP2的缓存策略(六)

HTTP/1.0 缓存策略: Expires 头部:HTTP/1.0 使用 Expires 头部来指定资源的过期时间。浏览器将根据这个时间来判断是否需要从服务器重新获取资源。 Pragma 头部:Pragma: no-cache 用于告诉浏览器或代理服务器不要使用本地缓存的版本。 HTTP/1.1 缓存策略: HTTP/1.1 对缓存机制进行了扩展和改进: Cache-Control

http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解

文章目录 HTTP/0.9HTTP/1.0HTTP/1.1@队头阻塞(Head-of-Line Blocking)1. TCP 层的队头阻塞2. HTTP/1.1 的队头阻塞 HTTP/2HTTP/3 HTTP/0.9 发布时间:1991年 特点: 只支持 GET 方法没有 HTTP 头部响应中只有 HTML 内容,没有任何元数据。 缺点: 功能极其有限,

http2问题以及http3的出现

http2的问题: 队头阻塞 http2 解决http队头阻塞问题,但是没有解决tcp队头阻塞问题 http1.1引入了持久化连接:在一个tcp连接上可以传送多个http的请求和相应,减少建立连接和关闭连接的消耗和延迟 http1.1在持久化连接上支持请求管道,就是在http响应到达之前,可以将多条请求放入队列,当第一条http请求通过网络流向服务器时,第二条和第三条请求也开始发送。再有网

http1.0 http1.1 http2.0 http3.0 超文本传输协议升级转换

关于HTTP/2,最近你可能没少听到过他,首先,如果你了解过Java 9的特性,那么你会发现在Java9中,提供了新的方式来处理HTTP调用,提供了新的HTTP Client,将替代HttpURLConnection,并提供对WebSocket和HTTP/2的支持。还有前两天刚刚发布的Spring Boot 2.0 的新特性中,也会看到,Spring Boot 2.0支持的Web容器中Tomcat

【ssl】启用http2时遇到的重重问题

【背景】 用pyping server传流式数据,必须启用http2,http2又必须有https支持。反复尝试,打破一个个err,最终成功。此篇记录一路上遇到的各类err和解决办法。 【问题和方案】 第一个警告:流式传输必须启用http2或http3(quic) 原本我是用http1.1启动的服务,所以有问题。查了一下,必须开ssl才能支持http2,所以问题就变成如何开ssl https

HTTP3

当我对HTTP的认知还停留在HTTP2.0时,HTTP协议已经发展3.0了。 参考下知乎:HTTP/3 原理实战 - 知乎 大厂对于新技术的追求总是处于行业前列,HTTP3就是其中之一。既然大厂都逐渐在使用了,那说明它经过了一系列的实践的考验,具备投入生产使用的资格了。 最直接有效的学习方式:看官方!看官方!看官方! 下方是原文摘抄: 2015 年 HTTP/2 标准发表后,大多数主

HTTP2协议主要改进点

HTTP2协议主要改进点 1、改成二进制协议,每次传输二进制帧,帧有以下几个字段 类型type,长度length,flag,StringID流标志,Payload负载,最基础的两种类型HEAD类型和DATA类型 2、多路复用,可以在一个连接上,同时传输多个数据流,每个流的传输顺序是固定的,按先后到达拼接 3、支持优先级,通过权重 4、支持重置中断,在HTTP/1.1中,如果一个请求发出去

【已解决】Error in the HTTP2 framing layer

1.问题描述 在使用git将代码上传github的时候在最后一部push的时候遇到这个fatal 2.解决方案 由于我原先设置的origin是http协议下的,如下 git remote add origin https://github.com/Charlesbibi/Simple_Cloud.git http协议下行不通不妨试一试ssh协议下,就有如下解决方案 # 删除原始or