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。