史前时期

  • 20 世纪 60 年代,美国国防部高等研究计划署(ARPA)建立了 ARPA 网,被认为互联网 “始祖”!
  • 20 世纪 70 年代,基于 ARPA,研究人员发明了著名的 TCP/IP 协议,具有良好分层结构和稳定性能

创世纪

1989年,任职于 CERN 的 蒂姆▪伯纳斯-李 发表一篇论文,提出了在互联网上构建超链接文档系统的构想。在这篇论文中他确立了三项关键技术:

  • URI:统一资源标识符,作为互联网上资源的唯一身份
  • HTML:超文本标记语言,描述超文本文档
  • HTTP:超文本传输协议,用来传输超文本

这个系统被称为 万维网 World Wide Web,这一年,HTTP 诞生了

HTTP / 0.9

20 世纪 90 年代初期, 此时互联网世界非常简陋,计算机处理能力低,存储容量小,网速慢。诞生于这一时期的 HTTP 被定义为 0.9 版

  • 采用纯文本格式
  • 只支持 GET 请求
  • 响应请求之后立即关闭连接

HTTP / 0.9 作为一个 原型,充分验证了 Web 服务的可行性

早期的 HTTP / 0.9 甚至都没有版本号。0.9 这个版本号是后来加上的,用于区分之后的 1.0 / 1.1

HTTP / 1.0

  • 1992年,发明了 JPEG 图像格式

  • 1993年,NCSA(美国国家超级计算应用中心)开发出了 Mosaic,第一个支持图文混排浏览器

  • 1995年,发明了 MP3 音乐格式

  • 1995年,NCSA 开发出服务器软件 Apache,简化了 HTTP 服务器的搭建工作

  • 1996年,HTTP / 1.0 正式发布

    1. 增加了 HEAD,POST 等新方法
    2. 增加了 响应状态码,标记可能的错误原因
    3. 引入协议版本号的概念
    4. 引入 HTTP Header 的概念
    5. 传输的数据不再仅限于文本

    但 HTTP / 1.0 并不是一个 标准,只是一份参考文档,不具备实际约束力

HTTP / 1.1

  • 1995年,网景的 Netscape 和 微软的 IE 开始著名浏览器大战,极大推动 Web 发展

  • 1999年,HTTP / 1.1 发布了 RFC 文档,编号 2616,开始十余年传奇

    1. 增加了 PUT,DELETE 等方法
    2. 增加了缓存管理和控制
    3. 明确连接管理,允许持久连接
    4. 运行响应数据分块,利于传输大文件
    5. 强制要求 Host 头,让互联网主机托管成为可能

    HTTP / 1.0 是对 HTTP / 0.9 的小幅度修正,但是,它是一个正式的标准!

HTTP / 2

HTTP / 1.1 发布之后,整个互联网呈现爆发式增长。

期间也出现了一些对 HTTP 不满的意见,主要就是 连接慢,无法跟上迅猛发展的互联网,无奈之下人们之后发明各式各样的小花招:切图,JS合并等。

终于有一天,Google 开发了自己的浏览器 Chrome,推出了 SPDY 协议,并在 Chrome 中开始应用,“倒逼” HTTP 协议的变革。

互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,2015年,HTTP / 2 发布,RFC 编号 7540

  • 二进制协议,不再是纯文本
  • 可发起多个请求,废弃了 1.1 中管道
  • 专用算法压缩头部,减少数据传输
  • 允许服务器主动向客户端推送数据
  • 增加安全性,要求加密通信

虽然 HTTP / 2 至今已经有一段历史,也衍生出了 gRPC 等新协议,但由于 HTTP / 1.1 过于经典和强势,目前 HTTP / 2 的普及率还比较低,大多网站仍使用20多年前 HTTP / 1.1

HTTP / 3

这一次还是 Google,而且它要 ”革自己的命“

在 HTTP / 2 还处于草案之时,Google 又发明了一个新的协议,叫做 QUIC

还是相同的套路,继续在 Chrome 和自家服务器中实验着玩,依托它庞大的用户量和数据量,持续推动 QUIC 协议成为互联网的 既成事实

2018年,互联网标准化组织 IETF 提议将 HTTP over QUIC 更名为 HTTP / 3 并获得批准,HTTP / 3 正式进入了标准化制定阶段,也许两三年后就会发布,我们很可能跳过 HTTP / 2 直接进入 HTTP / 3

小结

  • HTTP协议始于 蒂姆·伯纳斯 - 李 的一篇论文
  • HTTP / 0.9 是个简单的文本协议,只能获取文本资源
  • HTTP / 1.0 确立了使用的技术,但它不是正式标准
  • HTTP / 1.1 是目前互联网使用最广泛的技术,功能非常完善
  • HTTP / 2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及
  • HTTP / 3 基于 Google 的 QUIC 协议,是将来的发展方向