前言
HTTP协议在我们的生活中随处可见,打开手机或者电脑,只要你上网,后面总有HTTP在默默为你服务
目前全球至少有16亿个网站、2亿多个独立域名,而这个庞大网络世界的底层运转机制就是HTTP
那HTTP协议是怎么来的?最开始是什么样子的?又是如何发展到现在”统治“了互联网世界呢?
创世纪
1989 年,蒂姆·伯纳斯 - 李(Tim Berners-Lee)确立了互联网上构建超链接文档系统的三项关键技术。
- URI:即统一资源标识符,作为互联网上资源的唯一身份
- HTML:即超文本标记语言,描述超文本文档
- HTTP:即超文本传输协议,用来传输超文本。
基于它们,就可以把超文本系统完美地运行在互联网上,蒂姆把这个系统称为“万维网”(World Wide Web),也就是我们现在所熟知的 Web。
所以在这一年**“HTTP”诞生了**,从此开始了它伟大的征途。
HTTP/0.9
20 世纪 90 年代初期 网络上绝大多数的资源都是纯文本,很多通信协议也都使用纯文本,所以 HTTP 的设计也不可避免地受到了时代的限制。
为了便于服务器和客户端处理,HTTP/0.9也采用了纯文本格式,所以结构比较简单。
坐着最初设想的系统里的文档都是只读的,所以只允许用“GET” 动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接
HTTP/1.0
它在多方面增强了 0.9 版,形式上已经和我们现在的 HTTP 差别不大了,例如:
- 增加了 HEAD、POST 等新方法;
- 增加了响应状态码,标记可能的错误原因;
- 引入了协议版本号概念;
- 引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活;
- 传输的数据不再仅限于文本。
但HTTP/1.0 并不是一个“标准” ,只是记录已有实践和模式的一份参考文档,相当于一个“备忘录”。
所以 HTTP/1.0 的发布对于当时正在蓬勃发展的互联网来说并没有太大的实际意义
HTTP/1.1
HTTP/1.0 与 1.1一个重要的区别是:它是一个“正式的标准” ,而不是一份可有可无的“参考文档”。
这意味着今后互联网上所有的浏览器、服务器、网关、代理等等,只要用到 HTTP 协议,就必须严格遵守这个标准,相当于是互联网世界的一个“立法”。
注:所以可以说真正投入使用的HTTP版本只有 1.1 和之后,1.1之前的版本并没有正式的标准。
HTTP/1.1 主要的变更点有:
- 增加了 PUT、DELETE 等新的方法;
- 增加了缓存管理和控制;
- 明确了连接管理,允许持久连接;
- 允许响应数据分块(chunked),利于传输大文件;
- 强制要求 Host 头,让互联网主机托管成为可能。
注:自http1.1之后,版本没有小数点后的次版本号,名字是http/2和http/3
HTTP/2
HTTP/1.1 发布之后,整个互联网世界呈现出了爆发式的增长,但HTTP/1.1链接较慢的问题无法跟上迅猛发展的网络,但HTTP/1.1标准并未发生改变
因此Google决定开发自己的浏览器 Chrome,推出了新的 SPDY 协议,并在 Chrome 里应用于自家的服务器,从实际的用户方来“倒逼”HTTP 协议的变革。
Google“挟用户以号令天下”,把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2、
HTTP/2 的制定充分考虑了现今互联网的现状:宽带、移动、不安全,在高度兼容 HTTP/1.1 的同时在性能改善方面做了很大努力,主要的特点有:
- 二进制协议,不再是纯文本;
- ** 可发起多个请求**,废弃了 1.1 里的管道;
- 使用专用算法压缩头部,减少数据传输量;
- 允许服务器主动向客户端推送数据;
- 增强了安全性,“事实上”要求加密通信。
注:虽然 HTTP/2 也衍生出了 gRPC 等新协议,但由于 HTTP/1.1 实在是太过经典和强势,目前它的普及率还比较低,大多数网站使用的仍然还是 20 年前的 HTTP/1.1。
HTTP/3
HTTP/3看到这里,你可能会问了:“HTTP/2 这么好,是不是就已经完美了呢?
在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫做 QUIC,
而且还是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推动 QUIC 协议成为互联网上的“既成事实”。
在2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准
我们很可能会跳过 HTTP/2 直接进入 HTTP/3。
小结
跨越三十年历史长河,回顾了 HTTP 协议的整个发展过程,在这里简单小结一下今天的内容:
- HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文;
- HTTP是传输文字,图片,音频,视频等点对点的传输规则,互联网上的一种规则,服从这种规则才能拿到互联网上的资源
- HTTP/0.9 是个简单的文本协议,只能获取文本资源;
- HTTP/1.0确立了大部分现在使用的技术,但它不是正式标准;
- HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善;
- HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及;
- HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向。
推动http发展的原动力,说到底还是用户的需求。
刚开始只是希望能做到超链接文档互联,所以 http0.9就够了
希望跟服务器交互,所以有了更多的请求方法; 描述请求的不同情况,增加响应状态码; 更灵活的请求,添加头部; 有图片,音视频等,传输的数据也不再限制为文本,允许响应数据块; 缓存管理和控制; 资源多了,就得允许连接持久。 需求复杂了,所以发展到了1.0 1.1 满足。
再后来移动互联网加上请求更丰富,就要更加针对 1.1 的缺点和新的需求才出现了 http2 http3
小贴士
- 早期的HTTP/0.9 甚至都没有版本号
0.9这个版本号是后来区别1.0 / 1.1才加上去的。
- 一个有趣的事实:”World Wide Web”是英语中极少数缩写(WWW)比原文发音更长的词