1. HTTP版本时间线
- 1991年:HTTP/0.9,主要是文字描述。
- 1996年:HTTP/1.0,主要是富文本。
- 1997年:HTTP/1.1。
- 2015年:HTTP/2.0,主要是图片、视频。
不同时段的阶段产生内容:
- 1984年 ~ 1995年:合并网络、创建互联网的时代。
- 1995年 ~ 2010年:商业化、私有化、中心化的时代。
- 2010年 ~ 至今:去中心化、内容为主的时代。
2. HTTP/0.9、1.0、1.1、2.0版本功能
- HTTP/0.9:HTTP协议类型;设计雏形,具有缺陷;只支持GET方法;不支持多媒体内容;只有HTML对象。
- HTTP/1.0:使用广泛;增加了许多方法(POST、DELETE、PUT等);支持多媒体对象;无连接,无状态等。设计改良。
- HTTP/1.1:长连接;管道化;缓存处理;断点传输等。性能效率提升。
- HTTP/2.0:二进制分帧;多路复用;首部压缩;服务端发送等。性能极致提升。
3. HTTP/1.1版本的keep-alive长连接
keep-alive长连接是应用层的协议,底层是由传输层TCP进行提供服务。所以在进行keep-alive长连接前,需要客户端和服务端进行TCP连接,而TCP的连接需要三次握手、四次挥手的成本。
Connection: Keep-alive
使用keep-alive和不使用keep-alive的区别:
4. HTTP/2.0版本的多路复用
多路复用通常表示在一个信道上传输多路信号或数据流的过程和技术。通过使用多路复用,通信运营商可以避免维护多条线路,从而有效地节约运营成本。
- 二进制分帧是基础,通信单位为帧(报文 -> 帧)。
- 多请求并行不依赖多TCP连接。
- 并行在一个TCP连接交互多种类型信息。
5. HTTP/2.0版本的头部压缩
头部压缩(HPACK header compression):目的是为了减少客户端和服务端的数据大小。
- 客户端和服务端均维护了一个静态字典。静态字典中包含常见的头部名称、请求方法和数据的组合。
- Huffman编码对字符的压缩。客户端进行Huffman编码,服务器端进行Huffman解码。
HTTP/2.0版本的服务器推送:
服务端的“未卜先知”,主动推送资源给客户端。减少客户端的请求时间。
评论区