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

举报
伯约同学 发表于 2022/02/21 22:40:54 2022/02/21
【摘要】 从HTTP/0.9到HTTP/3:细数http协议的进化史http协议是前端工作者必须了解的知识,也是面试的重要考点,今天就讲一下http协议的发展历程。一、http0.9http0.9是在1991年发布的协议,考虑到当时的社会情况和计算机发展,我们不难想象,彼时的电脑最多就是向服务器请求一个页面,所以协议也就较为简单,规定服务器只能返回html格式的字符串。二、http1.0到了1996年...

从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了,让我们期待它的使用吧!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。