HTTP的前世今生
HTTP的历史
诞生前
1989 年,蒂姆·伯纳斯·李提出了在互联网上构建超链接文档系统的构想,确立了三项关键技术。
-
URI:统一资源标识符,作为互联网上资源的唯一身份;
-
HTML:超文本标记语言,描述超文本文档;
-
HTTP:超文本传输协议,用来传输超文本。
基于它们,就可以把超文本系统完美地运行在互联网上,让各地的人们能够自由地共享信息,蒂姆·伯纳斯 李把这个系统称为“万维网”(World Wide Web)
HTTP/0.9
20 世纪 90 年代初期,计算机处理能力低,存储容量小,网速很慢,网络上绝大多数的资源都是纯文本,很多通信协议也都使用纯文本,所以 HTTP 的设计也不可避免地受到了时代的限制。
这一时期的 HTTP 被定义为 0.9 版,结构比较简单,为了便于服务器和客户端处理,它也采用了纯文本格式。蒂姆·伯纳斯·李最初设想的系统里的文档都是只读的,所以只允许用``GET`动作从服务器上获取 HTML 文档,并且在响应请求之后立即关闭连接,功能非常有限。
HTTP/1.0
1993 年,NCSA开发出了 Mosaic,是第一个可以图文混排的浏览器,随后又在 1995 年开发出了服务器软件 Apache,简化了 HTTP 服务器的搭建工作。同一时期,计算机多媒体技术也有了新的发展:1992 年发明了 JPEG 图像格式,1995 年发明了 MP3 音乐格式。
这些新软件新技术吸引了更多的人开始使用互联网,研究 HTTP 并提出改进意见,甚至实验性地往协议里添加各种特性,从用户需求的角度促进了 HTTP 的发展。
于是在这些已有实践的基础上,经过一系列的草案,HTTP/1.0 版本在 1996 年正式发布。它在多方面增强了 0.9 版,形式上已经和我们现在的 HTTP 差别不大了,例如:
-
增加了
HEAD,POST
等新方法; -
增加了响应状态码,标记可能的错误原因;
-
引入了协议版本号概念;
-
引入了 HTTP
Header
的概念,让 HTTP 处理请求和响应更加灵活; -
传输的数据不再仅限于文本。
此时的HTTP/1.0还不是一个“标准”,只是记录已有实践和模式的一份参考文档。
HTTP/1.1
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 还有很多实质性进步,表述也更加严谨:
-
增加了``PUT、DELETE`等新的方法;
-
增加了缓存管理和控制;
-
明确了连接管理,允许持久连接;
-
允许响应数据分块,利于传输大文件;
-
强制要求``Host`头,让互联网主机托管成为可能。
HTTP/1.1 的推出开启了后续的“Web 1.0”“Web 2.0”时代。现在许多的知名网站都是在这个时间点左右创立的,例如 Google、新浪、搜狐、网易、腾讯等。
HTTP/2
HTTP/1.1 发布之后,整个互联网世界呈现出了爆发式的增长,涌现出了 Facebook、Twitter、淘宝、京东等互联网新贵。但是HTTP/1.1连接慢,无法跟上迅猛发展的互联网,但 HTTP/1.1 标准一直没有改变,于是产生了切图、JS 合并等网页优化手段。
之后,Google 首先开发了自己的浏览器 Chrome,然后推出了新的 SPDY 协议,并在 Chrome 里应用于自家的服务器,如同十多年前的网景与微软一样,从实际的用户方来“倒逼”HTTP 协议的变革,这也开启了第二次的“浏览器大战”。
历史再次重演,不过这次的胜利者是 Google,Chrome 目前的全球的占有率超过了 60%。“挟用户以号令天下”,Google 借此顺势把 SPDY 推上了标准的宝座,互联网标准化组织以 SPDY 为基础开始制定新版本的 HTTP 协议,最终在 2015 年发布了 HTTP/2,RFC 编号 7540。
HTTP/2 的制定充分考虑了现今互联网的现状:宽带、移动、不安全,在高度兼容 HTTP/1.1 的同时在性能改善方面做了很大努力,主要的特点有:
-
二进制协议,不再是纯文本;
-
可发起多个请求,废弃了 1.1 里的管道;
-
使用专用算法压缩头部,减少数据传输量;
-
允许服务器主动向客户端推送数据;
-
增强了安全性,“事实上”要求加密通信。
HTTP/3
在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫做QUIC,而且还是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推动 QUIC 协议成为互联网上的“既成事实”。在2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段。
HTTP是什么
HTTP 是超文本传输协议,也就是 HyperText Transfer Protocol.
超文本
HTTP 传输的不是TCP/UDP 这些底层协议里的杂乱的二进制包,而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。早期的互联网中的文本只是简单的字符,但是现在文本已经扩展到图片、音频、视频等形式。超文本指的就是包含了文字、图片和音视频的混合,并且含有超链接,能够从一个超文本跳转到另一个超文本,形成复杂的网状结构。
传输
双向
在两个参与者A和B之间,从A开始到B结束,但是数据在A和B之间是双向流动的。我们将发起传输动作的A叫做请求方,接收传输的叫做应答方,双方约定使用HTTP协议来通信。
中间人
数据虽然在A和B之间传输,但是允许中间有“中转”或者“接力”,中间人必须遵守HTTP协议,只要不干扰最基本的数据传输,可以添加其它额外的功能,比如安全认证、数据压缩、编码转换等
协议
HTTP是一个用在计算机世界的协议,使用计算机能够理解的语言确立了一种计算机之间交流通信的贵发,以及相关的各种控制和错误处理方式。
HTTP不是什么
不是单独的实体
HTTP是一个通信协议,所以不存在单独的实体,不是系统、应用程序或是服务器。但是HTTP与操作系统、应用程序和服务器等密切相关,他们之间发生着动态的通信过程。
不是孤立的协议
在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协议相互交织,构成了一个协议网,而 HTTP 则处于中心地位。
标签:协议,今生,HTTP,1.1,前世,互联网,超文本,服务器 From: https://www.cnblogs.com/euler0525/p/16834441.html