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 这些底层协议里的杂乱的二进制包,而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。早期的互联网中的文本只是简单的字符,但是现在文本已经扩展到图片、音频、视频等形式。超文本指的就是包含了文字、图片和音视频的混合,并且含有超链接,能够从一个超文本跳转到另一个超文本,形成复杂的网状结构。

传输

双向

在两个参与者AB之间,从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://www.cnblogs.com/euler0525/p/16834441.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性