Samgao0312 / Blog

MIT License
1 stars 1 forks source link

Http协议发展历史 #111

Open Samgao0312 opened 2 years ago

Samgao0312 commented 2 years ago

HTTP/0.9

HTTP/1.0

HTTP/1.1

相对于上一个版本,增加了些功能,优化了网络连接。

HTTP2

在 HTTP 1.1 里面我们大部分的数据传输是通过字符串传输的,所以它们数据的分片方式是不太一样的。在 HTTP2 里面我们所有的数据都是以帧进传输的。

HTTP2其实整体上就是为了解决HTTP 1.1里面它的一些性能低下的问题。头信息压缩什么概念呢,在 HTTP 1.1 里面我们每一次发送请求和返回请求差的很多http头都是必须要进行一个完整的发送和返回的,但其实这一部分头信息里面很多的内容是以字符串的形式保存了,所以它的占用带宽的量是比较大的,在 HTTP2 里面头信息进行了压缩,就可以有效的减少带宽。

第二个是推送的功能。我们知道http请求是只能够我这边发起请求,然后服务器端响应我的请求。就是说客户端永远是主动方,服务器端永远是被动方。HTTP2里面有了推送的功能之后,服务器端是可以主动发送一些数据传输的。

那它解决了什么问题呢?举一个最简单的例子,我们知道html,我们的web页面,因为现在我们在外面都会去要求有一些css/js文件,那么它们都是以链接的方式在html文本信息里面显示着 通过浏览器解析里面的内容之后,然后再根据我这个链接里面它包含的这个url地址,再去请求对应的是css、js文件。那这里面就会包含一个顺序的问题,我们需要去先请求到html文本,然后在浏览器里面运行解析的这个文本之后,我们才能去发送css的请求和js的请求。

HTTP2里面有了推送的功能之后,我们请求这个html的同时,我们可以主动把这个html里面所需要用到的css文件和js文件推送到我们的客户端。这样的话就是我们html、css、js发送顺序是并行的,而不是串行的。这样一想大家应该都能理解了, 就是它整体的一个传输效率和性能肯定是要高非常多的。

OK,这就是我们的HTTP协议发展的一个历史。那么其中当然还包含了HTTPS协议,就是一个安全版本,但是实际使用内容跟HTTP1.1其实没有特别大的区别。