白话入门HTTP家族,HTTP1.1, HTTP/2, HTTP

2021-12-30  本文已影响0人  肥兔子爱豆畜子

本文属于白话简单理解,HTTP版本升级的详细特性可以参考文末所列文章。

HTTP1.1在世纪之交千禧年左右发布的,相对于1.0来说提供了Keep-Alive长连接机制,可以做到连接复用,一般是做连接池模式,连接被线程使用的时候是线程独占的、用完之后归还回池供下次复用。不用每次通信都建立一次连接进行通信然后关闭,大大提升了通信效率。

HTTP/2在15年发布,18年左右开始流行,提供了连接的多路复用机制,多个请求线程可以同时共享1个物理的TCP连接,非独占式复用。共享物理连接的过程中,每个请求线程发出的请求是可以通过称为Stream的逻辑连接来保证顺序性的。另外在传输数据上,与HTTP1.1使用明文文本不同,HTTP/2使用的是二进制分帧传输,且基于TLS做了加密。

HTTP/2的问题或者说可优化空间在于:

于是,在谷歌的QUIC基础上,HTTP over QUIC即HTTP/3于2018年又推出了,没错,就是HTTP/2刚开始流行的时候。底层传输层不用TCP了,而是用的UDP协议。其着重解决了上面提到的HTTP/2的两个问题,丢包只会阻塞其自己的这个Stream逻辑连接,同一物理连接上的其他逻辑连接流不受影响。另外,由于基于的是QUIC和UDP协议,所以提供了快速握手连接建立的功能,只需要0、1RTT即可建立通信。

参考

Java 9 和Spring Boot 2.0纷纷宣布支持的HTTP/2到底是什么?

HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?

Google、Facebook等均开始支持的HTTP3到底是个什么鬼?

一文读懂 HTTP/1HTTP/2HTTP/3 - 知乎 (zhihu.com)

解读HTTP/3

HTTP/2: The Dark Side of Moon - 知乎 (zhihu.com) HTTP/2不好的一面

nginx反向代理http2? - 知乎 (zhihu.com) 介绍为啥nginx到上游服务器不使用HTTP/2 (但作为web服务器对浏览器支持HTTP/2是有收益的,页面图片多、静态资源多的情况)

上一篇下一篇

猜你喜欢

热点阅读