http版本比较
2020 M12 17
http 0.9
http0.9的版本诞生在20世纪90年代初期,此时互联网也就刚处于新兴阶段,网络资源多是纯文本。 麻雀虽小五脏俱全,此时的http已经支持客户端和服务端的通信,http0.9的出现具有划时代的意义。
美中不足的是:
该版本的http协议仅支持纯文本传输
请求方式仅支持get
不支持tcp长连接,每次服务端返回响应数据后都会断开连接。
http 1.0
http1.0 是对http0.9的一个增强,但依然不支持tcp长连接。 它形式上和我们现在常用的http相差无几,但还算不上一个实际上的标准。 相比http0.9,http1.0 增强体现在如下方面:
传输的数据除文本外,还可传输图像,音视频,是真正意义上的超文本传输
引入http header
增加 HEAD、POST请求
增加响应状态码
增加authorization权限头,cache缓存
网络文件的类型和编码规定Content-Type
压缩类型Content-Encoding
引入协议版本号
http 1.1
http1.1是对http1.0的进一步完善,但它被视为一个真正意义上的标准,广泛使用至今。 相比http1.0,http1.1 增强体现在如下方面:
支持tcp长连接,同一个连接可以被多个请求复用,无需声明Connection: keep-alive
支持管线化,无需等上一次响应结束,多个请求可连续发送
增加缓存管理和控制
分块传输,断点续传的关键(Transfer-Encoding: chunked)
新增 PUT、PATCH、OPTIONS、DELETE方法
请求头新增Host字段,用来指定服务器的域名
支持管线化,无需等上一次响应结束,多个请求可连续发送
增加缓存管理和控制
分块传输,断点续传的关键(Transfer-Encoding: chunked)
新增 PUT、PATCH、OPTIONS、DELETE方法
请求头新增Host字段,用来指定服务器的域名
http/2
http1.1虽然被广泛使用,但并不是完美的。 管线化默认关闭,且某个请求的响应如果过慢会阻塞其他请求的响应。 从http/2开始,http后续不再有子版本,都是大版本的变更,如http/3。http/2还未普及,即便有些网站已经支持。 相比http1.1,http/2 增强体现在如下方面:
HTTP/2是彻底的二进制传输协议,效率更高
废弃http1.1的管线化方案
多路复用,允许并发请求,突破浏览器并发请求限制
可在不断开tcp连接情况下取消某次请求
使用专用算法压缩头部,减少数据传输量
服务器推送,允许服务器未经请求,主动向客户端发送资源
废弃http1.1的管线化方案
多路复用,允许并发请求,突破浏览器并发请求限制
可在不断开tcp连接情况下取消某次请求
使用专用算法压缩头部,减少数据传输量
服务器推送,允许服务器未经请求,主动向客户端发送资源
重要变更
http0.9 诞生,纯文本传输
http1.0 超文本传输,有HTTP header
http1.1 tcp长连接,管线化
http2 废弃管线化,二进制传输,多路复用
http1.0 超文本传输,有HTTP header
http1.1 tcp长连接,管线化
http2 废弃管线化,二进制传输,多路复用