http历史版本特性

http历史版本特性

版本 发行年代 特性 使用情况
http/0.9 1991 GET method only 废弃
http/1.0 1996 头, 缓存,语言 爬虫
http/1.1 1999 keepalive, upgrade,ranges,hosts 流行
SPDY(google过渡版本) 2009 NPN、 单一连接、gzip header、流控制 升级为h2
http/2 2005 ALPN、 HPACK、priorities, server push 流行 (40% 2019)
http/3 2018 quic draft

版本发展与现状

http/1.1: 传输协议为TCP,可选TLS,为上一代流行http协议版本,通过keepalive实现连接复用,节省了TCP建连时间开销。

http/2: 同样使用TCP作为传输协议,在http1.1时代我们会使用图片拼接、内联分片等优化手段,这是因为http1.1提供keepalive方法做到连接复用,尽量使用减少的连接来传输资源。
然而浏览器复用连接会产生新的问题,http1.x传输方式为队首阻塞(Head of line blocking,),队列中存在耗时较常操作(协议规定可使用管道复用连接,但大部分浏览器默认关闭)依然会影响整站的加载速度,http/2通过增加一个二进制分帧层 实现多路复用,并报头压缩(SPDY无此特性)、流优先化增加传输效率,详解可参阅 HTTP/2 幕后原理

http2 在实际使用中一般与TLS绑定,但另外有个h2c(http/2 cleartext)版本可以允许客户端不使用https,比如grpc就可以工作在h2c上来减少通信计算压力。

http/3:
作为未来版本HTTP-over-QUIC 2018年被IETF接受成为事实上的http/3。
不同于之前版本,http/3使用Quic作为控制协议,工作在UDP协议上,天生支持多路复用。http/3简化了https握手过程,并强制使用TLS1.3传输层安全协议
目前Chrome(Canary build)、Firefox Nightly 已经支持http/3。
HTTP/3最新草案为h3-24