HTTP协议从0.9-2.0的变化

1,588 阅读2分钟

HTTP是我们前端赖以存在的基础,HTTP协议一直在变化,我们又是否真的了解HTTP协议呢?下面一起学习HTTP协议的变化,了解HTTP协议不同版本改进的地方。

HTTP/0.9

HTTP/0.9是最早的版本,确认了HTTP基于TCP协议。这个版本只支持GET一个方法,且服务器只能返回HTML格式的字符串。

HTTP/1.0

HTTP-1.0新增了许多内容,包括支持不同类型的响应格式,例如图像、视频等等。新增了HEAD和POST请求方法,补充了响应状态码,权限,缓存等功能。

HTTP/1.1

HTTP/1.1引入了持久链接以及管道机制。

HTTP/2.0

HTTP/2.0引入了二进制,多路复用,服务器推送(socket),数据流和头信息压缩优化。

HTTP/3.0

HTTP/3.0据说引入了新的协议(QUIC),该协议解决了以前TCP协议所存在的问题,并且极大的提升了性能与安全性。

不同版本解决的问题

0.9 --> 1.0

从0.9到1.0版本,HTTP协议的变化极大丰富了前端页面可以交互的内容,在最早的时候可能我们所看到的只有一个纯文本的页面,但是到了1.0版本,新增了图像、音频等新的响应内容,前端可交互的内容变得更加丰富了。

1.0 --> 1.1

在1.0版本,因为每个TCP只能发送一个请求,发送数据之后连接就会关闭;每次发送新的请求就需要建立一个新的连接,而建立一个新的连接成本非常高昂,由此产生了连接无法复用的问题,存在性能问题。1.1版本引入的持久连接允许一个请求在数据返回之后保留一段时间,和管道机制允许我们同时发送多个请求。

1.1 --> 2.0

在1.1版本引入的管道机制允许我们同时发送多个请求,例如同时发送A和B请求,但是服务器还是会按照顺序先处理A请求,等A响应后再处理B请求,由此产生了我们所说的线头阻塞(Head-of-line blocking)问题。如果第一个响应处理非常久,则会导致后面的请求必须等待前面的请求处理完之后才能得到响应。

所以在2.0版本引入的多路复用和数据流允许我们不会受到前面处理非常耗时的请求影响,可以分优先级处理响应。同时引入了服务器推送(socket)增加了客户端与服务器双向通信的能力。