美文网首页
HTTP1和HTTP2的区别

HTTP1和HTTP2的区别

作者: 三省吾身_9862 | 来源:发表于2021-05-14 16:23 被阅读0次
  1. Http1.x
    缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞。

  2. Http1.0(短连接)
    缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求;
    解决方案:添加头信息——非标准的Connection字段Connection: keep-alive

  3. Http1.1
    改进点:

持久连接(与Http1其它版本的最大区别)
引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
管道机制
即在同一个TCP连接里面,客户端可以同时发送多个请求。
分块传输编码
即服务端每产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。
新增请求方式
PUT:请求服务器存储一个资源;
DELETE:请求服务器删除标识的资源;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
CONNECT:保留将来使用
缺点:
虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着。这将导致“队头堵塞”
避免方式:一是减少请求数,二是同时多开持久连接

  1. Http/2.0
    特点:

采用二进制格式而非文本格式;
完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行;(解决了线头阻塞的问题,与Http1最重要的区别)
使用报头压缩,降低开销
服务器推送
4.1 二进制协议
HTTP/1.1 版的头信息肯定是文本(ASCII编码),数据体可以是文本,也可以是二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为”帧”:头信息帧和数据帧。
二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。

4.2 完全多路复用
HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了”队头堵塞”。

4.3 报头压缩
HTTP 协议是没有状态,导致每次请求都必须附上所有信息。所以,请求的很多头字段都是重复的,比如Cookie,一样的内容每次请求都必须附带,这会浪费很多带宽,也影响速度。
对于相同的头部,不必再通过请求发送,只需发送一次;
HTTP/2 对这一点做了优化,引入了头信息压缩机制;
一方面,头信息使用gzip或compress压缩后再发送;
另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同样字段了,只需发送索引号。
4.4 服务器推送
HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS.

相关文章

  • http1和http2的区别

    Http1.x缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞。 Http1....

  • HTTP1和HTTP2的区别

    Http1.x缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞。 Http1....

  • http1 和 http2 的区别

    一、HTTP/1.1的缺陷 1.高延迟--带来页面加载速度的降低 网络延迟问题主要由于队头阻塞(Head-Of-L...

  • OKHttp3源码阅读

    OKHttp牛逼之处 1.支持HTTP2/SPDY黑科技 --->okHttp中分包就分为Http1 和Http2...

  • grpc与Protobuf&go-micro基础原理

    http2支持多路复用,http1不支持。 Broker:异步通讯Codec:消息编码,比如基于protobuf和...

  • http1与http2的主要区别?

    二进制传输 http2采用二进制传输,相较于文本传输的http1来说更加安全可靠。 多路复用 http1一个连接只...

  • http1、http1.1和http2的区别

    1. HTTP的基本优化方向 影响一个HTTP网络请求的因素主要有2个:带宽和延迟 带宽,如果我们还在拨号上网的时...

  • 【包学包会】从一次请求开始,深入探索OkHttp

    OkHttp是Android开发中非常常用的一个网络请求库了,它支持HTTP1、HTTP2等多种协议,是我们日常开...

  • 《图解HTTP》读后感

    感谢图灵社区的电子书阅读奖励计划。 在阅读完「HTTP2基础教程」后,意识到自己对于 HTTP1 还不够了解,于是...

  • http2笔记

    http2的特点: 二进制传输:所有请求响应都以二进制编码,流式传输,最小单位是帧;传统http1传输的是文本,最...

网友评论

      本文标题:HTTP1和HTTP2的区别

      本文链接:https://www.haomeiwen.com/subject/nliqjltx.html