前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从HTTP/0.9到HTTP/3:细数http协议的进化史

从HTTP/0.9到HTTP/3:细数http协议的进化史

原创
作者头像
伯约同学
发布2022-02-21 22:41:08
3020
发布2022-02-21 22:41:08
举报

从HTTP/0.9到HTTP/3:细数http协议的进化史

http协议是前端工作者必须了解的知识,也是面试的重要考点,今天就讲一下http协议的发展历程。

一、http0.9

http0.9是在1991年发布的协议,考虑到当时的社会情况和计算机发展,我们不难想象,彼时的电脑最多就是向服务器请求一个页面,所以协议也就较为简单,规定服务器只能返回html格式的字符串。

二、http1.0

到了1996年,计算机飞速发展,http协议随之升级。它增加了更多格式内容的传输,诸如图像、视频、二进制文件等,此外还增加了post请求和head请求,丰富了浏览器与服务器的互动手段。同时引入缓存、状态码等功能。

三、http1.1

但很快,到了1997年的时候,http1.1版本就发布了。这是因为http1.0有着明显的缺点:http1.0协议规定每个数据发送完毕后,对应传输层的tcp连接就要中断。如果资源请求频率过高的话,会导致tcp连接的重复连接和中断。为了解决这一问题,1.1版本引入和持久连接,使得请求可以基于tcp连接多次复用。同时还引入了管道机制,允许请求可以同时发送,不必再等上一次的请求结果返回。这里值得注意的时,服务器端的请求返回仍然是按顺序的。此外,它还增加了put、patch、options、delete请求等。这一协议直到今天仍然广泛使用。

四、http2

http1.1用了二十多年了,使用情况也还ok,但工程师们不满足于此,觉得有必要进一步优化。主要是针对http1.1的请求头数据太大(毕竟现在cookie都老长了,还经常来回传输)、response是按照顺序返回的、不支持服务器推送等等缺点做了优化。

五、http3

http3以前的协议都是基于更底层的tcp协议,tcp协议有一个很好的优点就是它很可靠。如果有一个数据包丢失了没传到客户端,那它会要求服务器再次发送,直到接收到完整的数据(当然,实在接收不到就算这个请求超时相应挂掉了)。对于网络连接状况好的地方来说,这都不是事,可对于网络连接差的地区,要是有一个数据包丢失,那这个请求剩余的数据包就要等待了。如果有多个请求的话,他还会影响后面请求的处理。同时,由于现在基于一个tcp管道有了复用功能,很多响应几乎都可以同时响应,这对服务器的压力其实也蛮大的,导致瞬时 QPS 暴增。再者,网络宽带以及客户端、服务端的性能或者说资源也有限制,不可能一瞬间全部传输完毕。工程师们觉得,那干脆基于UDP协议弄一个新版本出来,于是http3应声落地。它是基于UDP的一个新协议,改掉了底层的tcp协议并对传输做了优化和调整以保证数据传输的完整性。

总结

除了功能之外,可以看到http协议的发展主要往数据更轻、连接更快的方向发展。当然,当下主要是http1.1和http2的天下,不过也有一些大厂尝试http3了,让我们期待它的使用吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com