美文网首页
HTTP进化历程回顾

HTTP进化历程回顾

作者: 丑人林宗己 | 来源:发表于2021-03-13 23:08 被阅读0次

HTTP,全称是Hypertext Transfer Protocol,译作超文本传输协议,在OSI模型中处于应用层,所以常常称之为应用层协议。如今的HTTP协议在整个互联网应用中当属翘楚,相较于其他各类诸如TCP/UDP/IP等等协议,也是最广为流传。

粗略回顾一下HTTP协议的发展历程,知悉HTTP协议是如何推演,进化。

1.0 ~ 0.9

HTTP协议整个职业生涯中,不得不提的一个版本就是1.0这个版本,因为正是这个版本加上了版本号这样的东西,那么HTTP 1.0版本究竟都有哪些内容呢?

  • 增加了Version,它展示着整个协议进化的历程
  • 增加了Http Header,将协议的元数据与业务数据进行了隔离
  • 增加了Status Code,统一了通信双方对结果的认知
  • ...

第一个版本定的是HTTP 1.0,那么在没有版本号的HTTP协议就被认为是0.9(我猜测的,暂时没有找到作证的资料),而这个版本相当粗糙,只有简单的GET,算是最纯粹的一个文本协议,所以能看出1.0版本对原来版本做的扩展与补充,属于功能性上的扩展。

1.1

HTTP协议整个职业生涯中,目前最为大众所知的,应该是1.1这个版本,那么这个版本又给我们带来了什么核心的内容?这要回到1.0协议中有什么样的内容是急需解决的?HTTP每一次请求都需要建立新的TCP连接,意味着需要重复进行三次握手四次挥手,这是一个相当大的性能损耗。所以HTTP 1.0协议带来了什么值得关注的内容呢?

  • 增加了Kee Alive,连接得以复用,节省了大量的三次握手的成本。
  • 增加了Pipleline,优化了传输效率,使得上一个请求不用等待下一个请求即可继续写入。

其他的也包括一些内容,比如:

  • 增加了Cache Controller
  • 增加了Option
  • 增加了Chunked Responses
  • ....

2.0

至此,HTTP 1.1协议一直沿用至今,作为它可以表述足够负责的语义,能满足极多的业务场景,但是HTTP 1.1协议还存在一些问题,比如:

  • Http Header中存在大量的重复性的内容
  • 协议使用的是ZIP压缩,在传输前后占用较高的客户端/服务端CPU,传输成本不低
  • 在互联网发展如此迅猛下,网页对资源性的内容下载诉求成爆炸式增长,Kee Alive+Pipleline的方式并不足以大范围提高协议的性能,因为请求还是需要一个一个串行写入。

HTTP 2.0(谷歌出过一个SPDY协议,可以称之为HTTP 2.0前身)在这个基础上做出了几点需要重点关注的优化:

  • Http Header 使用** HPACK**算法进行压缩优化,消除大量重复性的内容
  • 2.0是一个二进制协议,在传输效率上大大提高
  • 增加了多路复用,在一个TCP连接上可以并行的写入请求内容。

HTTP 2.0协议对请求引入几个重要的概念,分别为帧,消息,流HTTP 2.0会在发送端将请求拆分成二进制帧,包括Http Header帧Request Body处理成Data帧,这些帧在TCP通道上可以并行写入,所以在接收端需要重新将这些帧分门别类,重新归整为消息,原理就是每个帧上都带着一个流ID

3.0

毫无疑问,相比较于HTTP 1.1版本,2.0版本在性能上的提升是显而易见的,网上也有一些压测对比,可以了解一下。但是不要忘记一个问题,HTTP协议截止2.0版本一直都是构建在TCP协议上的应用层协议,所以TCP协议本身携带的问题无疑也会影响到HTTP,比如众所周知的Head-of-line Blocking问题,译作线头阻塞问题。它是什么问题?简而言之,站在TCP协议的视角并不能窥其HTTP协议的内容,故而当TCP发生丢包导致的超时重传等问题,HTTP上层应用是无法解决的,该阻塞还是会阻塞,上层的并行能力在底层是完全不可知的。那么,基于TCP协议构建的HTTP协议似乎是无解的问题。

TCP确实是无解的,所以谷歌又搞了个QUIC协议出来,全称Quick UDP Internet Connections,基于UDP协议构建的一个HTTP协议,也就是HTTP 3.0。为何UDP可以解决TCP无法解决的问题?因为UDP没有丢包重传等机制,所以前面的包丢了并不会影响后边的包。

但是,说话的时候你总不能对着谁说,然后也不管他听不听得到吧?所以HTTP 3.0需要把TCP协议的重传机制在应用层上再实现一遍。

关于QUIC协议参考资料:
https://mp.weixin.qq.com/s/CbdlTq1xb2N1WSnmGfmEQQ
https://mp.weixin.qq.com/s/ciR-1N4z0zvGOJSoyrvMUA

很粗糙,这并不是想科普HTTP协议,毕竟该协议内容即为庞杂,三言两语也说不完,何况笔者所学也是寥寥无几。笔者更想表达的是在回顾HTTP这样的全民协议的发展历程后,期望于对HTTP协议有一些本质的认知,以及未来对协议的选择与设计上有独立的思考与见解。

相关文章

  • HTTP进化历程回顾

    HTTP,全称是Hypertext Transfer Protocol,译作超文本传输协议,在OSI模型中处于应用...

  • 进化历程

    墨记·日歌(壹仟贰佰肆拾陆·2022.5.20) · 进化历程 文/叶潇(湖北) · 我和你,是两只还未确定性别的...

  • 有关历程回顾的历程回顾

    这里记录的是我们学习心理咨询与实操课的一节内容。这次课的主题是历程回顾,作业就是对这节课的历程进行回顾。课...

  • 我在牛人进化营的半年生活

    牛人进化营的生活已经接近尾声,回顾半年的心路历程,虽然不乏遗憾,但其中的收获,是以往不曾有的,也是终生难以忘怀的。...

  • HTTP发展历程

    HTTP 1.1 协议的不足 同一时间,一个连接只能对应一个请求 。针对同一个域名,大多数浏览器允许同时最多6个并...

  • HTTP发展历程

    (1)HTTP/0.9: 只有一个命令 GET 没有HEADER等描述数据的信息 服务器发送完毕内容,就关闭TCP...

  • 成长历程回顾

    2006年爆发家庭危机,受情绪困扰日益严重; 2007年开始接触身心灵成长并开始了自我探索; 2008年第一次参加...

  • 写作历程回顾

    加入007写作群已有10个月了,是时候回顾自己的写作历程。 1.我是怎样发现007写作群和为什么要加入? 那时候,...

  • 绘画历程―回顾

    2018年重拾画笔,很是不安,因为多年不摸画笔,不仅手抖,心也是抖得厉害,很怕贻笑大方。不过还好,总算渡过了紧张、...

  • 孕期历程回顾

    我和先生6.1号领证,预计9月办婚礼,当时都还没有已经结婚了的感觉。我们还是像谈恋爱时一样的心态,每天上班...

网友评论

      本文标题:HTTP进化历程回顾

      本文链接:https://www.haomeiwen.com/subject/lkffcltx.html