HTTP1.x与HTTP2.0分别是什么

原创
小哥 3年前 (2022-10-21) 阅读数 6 #大杂烩
文章标签 HTTP

HTTP1.0 —— 无状态应用层协议

  • 无状态 :服务器不跟踪请求的状态
  • 无连接 :每次请求时都会创建浏览器。TCP连接

HTTP1.0浏览器和服务器需要保持短连接,浏览器的每个请求都需要一个TCP连接时,服务器在处理后立即断开连接。TCP连接( 无连接 ),服务器不会跟踪每个客户端,也不会记录过去的请求( 无状态

没有连接特征会导致以下缺陷:

  • 连接不能重复使用 。每个发送请求需要建立一次。TCP连接,而TCP连接释放过程非常繁琐,导致网络利用率非常低。
  • 队头堵塞 。由于HTTP1.0下一个请求必须在前一个响应到达之前发送。假设请求响应并不总是到达,则不会发送下一个请求,从而导致阻塞后续请求。

为了解决这些问题,HTTP1.1出现了

HTTP1.1

1.长连接

HTTP1.1添加了一个 Connection 字段,通过设置 keep-alive (默认设置为)您可以保持连接打开,避免在每次客户端和服务器请求时重复建立释放。TCP连接,从而提高网络利用率。如果客户想要关闭HTTP连接,可以携带在请求头中 Connection:false 以将关机请求通知服务器。

2. 支持请求流水线(pipelining)

基于长连接,请求流水线成为可能。管道允许“并行传输”请求。

3.新的请求方法

  • PUT
  • DELETE
  • OPTIONS
  • TRACE
  • CONNECT

HTTP2.0

首先,我们来了解几个概念:

  • 帧: HTTP2.0数据通信最小单位报文:参考HTTP2.0逻辑上的HTTP新闻。例如,请求和响应,消息由一个或多个帧组成。
  • 流:存在于连接中的虚拟频道。该流可以承载双向消息。每个流都有一个唯一的整数ID
  • 消息:对应于逻辑消息的一系列完整的数据帧。

1.二进制成帧

HTTP2.0采用 二进制格式 传输数据,而不是HTTP1.x二进制协议的文本格式更易于解析。HTTP2.0将请求和响应数据拆分为较小的帧并使用二进制编码

2.多路复用

HTTP2.0实现了真正的并行传输,可一机多用。TCP并行发送任意号码。HTTP请求,避免了队头堵塞。而这个强大的功能则是基于“二进制成帧”的特性。

3.头部压缩

HTTP1.x该协议是无状态的,导致每个请求都必须附加所有信息。因此,请求的超长字段被复制,例如Cookie,每个请求必须附加相同的内容,这浪费了大量带宽,也影响了速度。HTTP/2 对此进行了优化,并引入了头信息压缩机制;

4.服务器推送

允许服务器发送页面HTML当您主动推送其他资源时,您不必等到浏览器解析到适当的位置并发起请求后才响应。

例如,服务器可以主动JS和CSS无需客户端解析即可将文件推送到客户端。HTML在下列情况下发送这些请求。

服务器可以主动推送,客户端也有权选择是否接收。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除