引言
在深入学习HTTP之前,我们先来介绍一下 HTTP 诞生的背景。了解背景的同时也能了解当初制定 HTTP 的初衷,这样有助于我们更好地理解。
为知识共享而规划 Web
1989年3月,互联网还只属于少数人。在这一互联网的黎明期,HTTP 诞生了。
CERN(欧洲核子研究组织)的蒂姆·伯纳斯-李(Tim Berners-Lee)博士提出了一种能让远隔两地的研究者们共享知识的设想。
最初设想的基本理念是:借助多文档之间相互关联形成的超文本(HyperText),连成可相互参阅的 WWW
(World Wide Web
,万维网)。
现在已提出了3项 WWW
构建技术,分别是:
- SGML 作为页面的文本标记语言的 HTML;
- 作为文档传递协议的 HTTP ;
- 指定文档所在地址的 URL。
名词解释
SGML(StandardGeneralized Markup Language):标准通用标记语言。
HTML(HyperText Markup Language):超文本标记语言。
URL(Uniform Resource Locator):统一资源定位符。
WWW 这一名称,是 Web 浏览器当年用来浏览超文本的客户端应用程序时的名称。现在则用来表示这一系列的集合,也可简称为 Web。
Web 成长时代
1990年11月,CERN 成功研发了世界上第一台 Web 服务器和 Web 浏览器。两年后的1992年9月,日本第一个网站的主页上线了。
1990年,大家针对 HTML 1.0 草案进行了讨论,因 HTML 1.0 中存在多处模糊不清的部分,草案被直接废弃了。
1993年1月,现代浏览器的祖先 NCSA 研发的
Mosaic
问世了。它以 in-line(内联)等形式显示 HTML 的图像,在图像方面出色的表现使它迅速在世界范围内流行开来。同年秋天,Mosaic 的 Windows 版和 Macintosh 版面世。使用 CGI 技术的 NCSA Web 服务器、NCSA HTTPd 1.0 也差不多是在这个时期出现的。
名词解释
NCSA(National Center forSupercomputer Applications):美国国家超级计算机应用中心。
Mosaic:全球最早一款可以显示图片的浏览器名称。
CGI(computer-generated imagery):计算机生成图像。
HTTPd(Hyper Text Transfer Protocol Daemon):超文字传输协定常驻程式。
The NCSA HTTPd Home Page(存档,原址已失效)
1994年的12月,网景通信公司发布了 Netscape Navigator 1.0,1995年微软公司发布 Internet Explorer 1.0 和 2.0。
紧随其后的是现在已然成为 Web 服务器标准之一的 Apache,当时它以 Apache 0.2 的姿态出现在世人眼前。而 HTML 也发布了 2.0 版本。那一年,Web 技术的发展突飞猛进。
时光流转,从1995年左右起,微软公司与网景通信公司之间爆发的浏览器大战愈演愈烈。两家公司都各自对 HTML 做了扩展,于是导致在写 HTML 页面时,必须考虑兼容他们两家公司的浏览器。时至今日,这个问题仍令那些写前端页面的工程师感到棘手。
在这场浏览器供应商之间的竞争中,他们不仅对当时发展中的各种 Web 标准化视而不见,还屡次出现新增功能没有对应说明文档的情况。
2000年前后,这场浏览器战争随着网景通信公司的衰落而暂告一段落。但就在2004年,Mozilla 基金会发布了 Firefox 浏览器,第二次浏览器大战随即爆发。
Internet Explorer 浏览器的版本从6升到7前后花费了5年时间。之后接连不断地发布了8、9、10版本。另外,Chrome、Opera、Safari 等浏览器也纷纷抢占市场份额。
驻足不前的 HTTP
HTTP/0.9(1990年,问世):HTTP 于 1990 年问世。那时的 HTTP 并没有作为正式的标准被建立。这时的 HTTP 其实含有 HTTP/1.0 之前版本的意思,因此被称为 HTTP/0.9。
HTTP/1.0(1996年,发布正式标准):HTTP 正式作为标准被公布是在 1996 年的5月,版本被命名为 HTTP/1.0,并记载于RFC1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端。
HTTP/1.1(1997年,主流版本):1997年1月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。当初的标准是 RFC2068,之后发布的修订版 RFC2616 就是当前的最新版本。
可见,作为 Web 文档传输协议的 HTTP,它的版本几乎没有更新。新一代 HTTP/2.0 正在制订中,但要达到较高的使用覆盖率,仍需假以时日。
当年 HTTP 协议的出现主要是为了解决文本传输的难题。由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。