HTTP 协议在咱们的生活中随处可见,打开手机或者电脑,只要你上网,不管是用 iPhone、Android、Windows 仍是 Mac,不管是用浏览器仍是 App,不管是看新闻、短视频仍是听音乐、玩游戏,后面总会有 HTTP 在默默为你服务。算法
据 NetCraft 公司统计,目前全球至少有 16 亿个网站、2 亿多个独立域名,而这个庞大网络世界的底层运起色制就是 HTTP。浏览器
那么,在享受如此便捷温馨的网络生活时,你有没有想过,HTTP 协议是怎么来的?它最开始是什么样子的?又是如何一步一步发展到今天,几乎“统治”了整个互联网世界的呢?缓存
常言道:“时势造英雄,英雄亦造时势”。安全
今天我就和你来聊一聊 HTTP 的发展历程,看看它的成长轨迹,看看历史上有哪些事件推进了它的前进,它又促进了哪些技术的产生,一块儿来见证“英雄之旅”。服务器
在这个过程当中,你也可以顺便了解一下 HTTP 的“历史局限性”,明白 HTTP 为何会设计成如今这个样子。网络
20 世纪 60 年代,美国国防部高等研究计划署(ARPA)创建了 ARPA 网,它有四个分布在各地的节点,被认为是现在互联网的“始祖”。ide
而后在 70 年代,基于对 ARPA 网的实践和思考,研究人员发明出了著名的 TCP/IP 协议。因为具备良好的分层结构和稳定的性能,TCP/IP 协议迅速打败其余竞争对手流行起来,并在 80 年代中期进入了 UNIX 系统内核,促使更多的计算机接入了互联网。性能
这三项技术在现在的咱们看来已是稀松日常,但在当时倒是了不起的大发明。基于它们,就能够把超文本系统完美地运行在互联网上,让各地的人们可以自由地共享信息,蒂姆把这个系统称为“万维网”(World Wide Web),也就是咱们如今所熟知的 Web。优化
因此在这一年,咱们的英雄“HTTP”诞生了,今后开始了它伟大的征途。网站
20 世纪 90 年代初期的互联网世界很是简陋,计算机处理能力低,存储容量小,网速很慢,仍是一片“信息荒漠”。网络上绝大多数的资源都是纯文本,不少通讯协议也都使用纯文本,因此 HTTP 的设计也不可避免地受到了时代的限制。
这一时期的 HTTP 被定义为 0.9 版,结构比较简单,为了便于服务器和客户端处理,它也采用了纯文本格式。蒂姆·伯纳斯 - 李最初设想的系统里的文档都是只读的,因此只容许用“GET”动做从服务器上获取 HTML 文档,而且在响应请求以后当即关闭链接,功能很是有限。
HTTP/0.9 虽然很简单,但它做为一个“原型”,充分验证了 Web 服务的可行性,而“简单”也正是它的优势,蕴含了进化和扩展的可能性,由于:
“把简单的系统变复杂”,要比“把复杂的系统变简单”容易得多。
1993 年,NCSA(美国国家超级计算应用中心)开发出了 Mosaic,是第一个能够图文混排的浏览器,随后又在 1995 年开发出了服务器软件 Apache,简化了 HTTP 服务器的搭建工做。
同一时期,计算机多媒体技术也有了新的发展:1992 年发明了 JPEG 图像格式,1995 年发明了 MP3 音乐格式。
这些新软件新技术一经推出马上就吸引了广大网民的热情,更的多的人开始使用互联网,研究 HTTP 并提出改进意见,甚至实验性地往协议里添加各类特性,从用户需求的角度促进了 HTTP 的发展。
因而在这些已有实践的基础上,通过一系列的草案,HTTP/1.0 版本在 1996 年正式发布。它在多方面加强了 0.9 版,形式上已经和咱们如今的 HTTP 差异不大了,例如:
但 HTTP/1.0 并非一个“标准”,只是记录已有实践和模式的一份参考文档,不具备实际的约束力,至关于一个“备忘录”。
因此 HTTP/1.0 的发布对于当时正在蓬勃发展的互联网来讲并无太大的实际意义,各方势力仍然按照本身的意图继续在市场上奋力拼杀。
1995 年,网景的 Netscape Navigator 和微软的 Internet Explorer 开始了著名的“浏览器大战”,都但愿在互联网上占据主导地位。
“浏览器大战”的是非成败咱们放在一边暂且无论,不能否认的是,它再一次极大地推进了 Web 的发展,HTTP/1.0 也在这个过程当中经受了实践检验。因而在“浏览器大战”结束以后的 1999 年,HTTP/1.1 发布了 RFC 文档,编号为 2616,正式确立了延续十余年的传奇。
从版本号咱们就能够看到,HTTP/1.1 是对 HTTP/1.0 的小幅度修正。但一个重要的区别是:它是一个“正式的标准”,而不是一份无关紧要的“参考文档”。这意味着从此互联网上全部的浏览器、服务器、网关、代理等等,只要用到 HTTP 协议,就必须严格遵照这个标准,至关因而互联网世界的一个“立法”。
不过,说 HTTP/1.1 是“小幅度修正”也不太确切,它仍是有不少实质性进步的。毕竟通过了多年的实战检验,比起 0.9/1.0 少了“学术气”,更加“接地气”,同时表述也更加严谨。HTTP/1.1 主要的变动点有:
HTTP/1.1 的推出可谓是“众望所归”,互联网在它的“保驾护航”下迈开了大步,由此走上了“康庄大道”,开启了后续的“Web 1.0”“Web 2.0”时代。如今许多的知名网站都是在这个时间点左右创立的,例如 Google、新浪、搜狐、网易、腾讯等。
不过因为 HTTP/1.1 太过庞大和复杂,因此在 2014 年又作了一次修订,原来的一个大文档被拆分红了六份较小的文档,编号为 7230-7235,优化了一些细节,但此外没有任何实质性的改动。
HTTP/1.1 发布以后,整个互联网世界呈现出了爆发式的增加,度过了十多年的“快乐时光”,更涌现出了 Facebook、Twitter、淘宝、京东等互联网新贵。
这期间也出现了一些对 HTTP 不满的意见,主要就是链接慢,没法跟上迅猛发展的互联网,但 HTTP/1.1 标准一直“岿然不动”,无奈之下人们只好发明各式各样的“小花招”来缓解这些问题,好比之前常见的切图、JS 合并等网页优化手段。
终于有一天,搜索巨头 Google 忍不住了,决定“揭竿而起”,就像马云说的“若是银行不改变,咱们就改变银行”。那么,它是怎么“造反”的呢?
Google 首先开发了本身的浏览器 Chrome,而后推出了新的 SPDY 协议,并在 Chrome 里应用于自家的服务器,如同十多年前的网景与微软同样,从实际的用户方来“倒逼”HTTP 协议的变革,这也开启了第二次的“浏览器大战”。
历史再次重演,不过此次的胜利者是 Google,Chrome 目前的全球的占有率超过了 60%。“挟用户以号令天下”,Google 借此顺势把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2,RFC 编号 7540。
HTTP/2 的制定充分考虑了现今互联网的现状:宽带、移动、不安全,在高度兼容 HTTP/1.1 的同时在性能改善方面作了很大努力,主要的特色有:
虽然 HTTP/2 到今天已经四岁,也衍生出了 gRPC 等新协议,但因为 HTTP/1.1 实在是太过经典和强势,目前它的普及率还比较低,大多数网站使用的仍然仍是 20 年前的 HTTP/1.1。
看到这里,你可能会问了:“HTTP/2 这么好,是否是就已经完美了呢?
”答案是否认的,这一次仍是 Google,并且它要“革本身的命”。
在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫作 QUIC,并且仍是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推进 QUIC 协议成为互联网上的“既成事实”。
“功夫不负有心人”,固然也是由于 QUIC 确实自身素质过硬。
在去年,也就是 2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”改名为“HTTP/3”并得到批准,HTTP/3 正式进入了标准化制订阶段,也许两三年后就会正式发布,到时候咱们极可能会跳过 HTTP/2 直接进入 HTTP/3。
今天我和你一块儿跨越了三十年的历史长河,回顾了 HTTP 协议的整个发展过程,在这里简单小结一下今天的内容:
但愿经过今天的介绍,你可以对 HTTP 有一个初步但清晰的印象,知道了“来龙”才能更好地知道“去脉”。