前生今世
史前时期
ARPA
发明出TCP/IP协议
创世纪
CERN
蒂姆·伯纳斯-李(Tim Berners-Lee)发表了一篇论文
- URI:资源唯一标识符
- HTML :超文本标记语言
- HTTP:超文本传输协议
基于这三项技术将超文本系统运行在互联网上,蒂姆将它称为万维网(World Wide Web)
HTTP/0.9
20世纪90年代初期的互联网技术非常简陋,计算机处理能力低,储存容量小,网络很慢,还是一片信息荒漠。
所以初代HTTP的设计受时代的限制。结构比较简单,为了便于服务器和客户端处理,采用纯文本格式。蒂姆最开始设想系统内文档都是只读的,所以只允许用"GET"动作从服务器读取HTML文档,并且在响应请求之后立即关闭连接。
HTTP/1.0
1993年,NCSA(美国国家超级计算机应用中心)开发出了Mosaic,是第一个支持图文混排的浏览器。1995年,开发出服务器软件Apache,简化了HTTP服务器的搭建工作。
同一时期,计算机多媒体也有了新发展,1992年发明了JPEG图像格式,1995年发明了MP3音乐格式。
在经过一系列的草案,HTTP/1.0版本在1996年正式发布。它在多方面增强了HTTP/0.9,形式上与现在的HTTP相差不大:
- 增加了HEAD、POST等新方法
- 增加了响应状态码,标记可能的错误原因
- 引入协议版本号概念
- 引入了HTTP Header(头部)概念,让HTTP处理请求和响应更加灵活
- 传输的数据不再仅限于文本
但HTTP1.0并不是一个标准,只是记录已有实践和模式的一份参考文档,不具有实际的约束力,相当于是一个“备忘录”。
HTTP/1.1
1995年,网景和微软的IE,浏览器大战
浏览器大战之后,1999年,HTTP1.1发布了RFC文件,编号2616。
从版本号看出,HTTP/1.1是HTTP/1.0小幅修正。区别是它是一份“正式的标准”,而不是一份可有可无的参考文档。
HTTP/1.1虽然说是小幅修正,但也不确切,因为有实质性的进步的。相比HTTP/1.0和HTTP0.9,少了学术性,更接地气,更严谨:
- 增加了PUT、DELETE等新方法
- 增加了缓存管理和控制
- 明确连接管理,支持持久连接
- 允许响应数据分块(chunked),利于传输大文件
- 强制要求HOST头,让互联网主机托管成为可能。
由于HTTP1.1的过于庞大和复杂,2014年又做了一次修订,原来的一份大文档拆成了六份较小文档,编号7230-7235,优化了一些细节,没有实质性的改动。
HTTP/2
HTTP1.1正式发布后,整个互联网世界呈现出爆炸式发增长。
这期间也出现了一些对HTTP的不满,主要是连接慢,无法跟上迅猛发展的互联网,但是HTTP1.1标准毅然不动。
无奈之下,人们只能发明各式各样的小花招缓解这样的问题,比如之前常见的切图,JS合并等网页优化手段。
Google首先开发了自己的浏览器Chrome,然后推出SPDY协议,并在Chrome中应用于自家的服务器,以实际用户方“倒逼”HTTP协议的变革。
Google借此将SPDY协议推上标准的宝座。互联网标准化组织以SPDY协议制定新版本的HTTP协议,最终在2015年发布了HTTP/2,RFC编号7240。
HTTP/2充分考虑了现状: 宽带、移动、不安全,在高度兼容HTTP/1.1的同时在性能改善方面做了很大努力:
- 二进制通信,不再是纯文本。
- 可发起多个请求,废弃HTTP1.1中的管道
- 使用专用算法压缩头部,减少数据传输量
- 允许服务端主动向客户端推送数据
- 增强安全性,“事实上”要求加密通讯。
由于HTTP1.1太过经典和强势,目前HTTP/2普及率还比较低,所以目前大多网站使用的还是HTTP1.1。
HTTP/3
在HTTP/2还在草案之时,Google又发明了一个新的协议,QUIC。
2018年,互联网标准化组织IETF提议将"HTTP over QUIC"更名为"HTTP/3"并获得批准,HTTP/3进入标准化制订阶段。
此文章为11月Day1学习笔记,内容来源于极客时间《透视HTTP协议》,以梦为马,加油💪💪
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。