【HTTP】HTTP 协议的前世今生

354

移动互联网在我们生活中的已经全方位渗透,每天都会伴随着大量的互联网操作,比如微信聊天、淘宝购物、头条看新闻、抖音刷短视频等等,而这些操作无一例外都在遵循着 HTTP 协议,有条不紊的为我们的生活提供着便利及乐趣。

让我们穿越时空,去寻觅下 HTTP 的前世今生。让我们重新认识一下这位互联网世界的大明星。

万维网( WWW )的诞生

上个世纪八十年代,互联网诞生之初,一位计算机科学家蒂姆·伯纳斯·李博士提出了一个远程共享知识的构想:创建一个以超文本系统为基础的项目,允许在不同计算机之间分享信息,其目的是方便研究人员分享及更新信息。这个构想最终成了 WWW(World Wide Web) 万维网的基础,彻底改变了人类社会的沟通交流方式。

这个提案的提出,包含了网络的基本概念并逐步建立了 3 项 WWW 构建技术:

  • HTTP 超文本传输协议(Hypertext Transfer Protocol),作为文档传输协议,允许用户通过单击超链接访问资源;
  • HTML 超文本标记语言(Hypertext Markup Language),作为创建网页的标准;
  • URL 统一资源定位符号URL(Uniform Resource Locator),作为网站地址系统,就是沿用至今的 http://www URL格式;

后来随着 Netscape(网景通信公司)开始推出网页浏览器后,从此基于 HTTP 的Web技术也开始了真正的爆发。

HTTP 协议的成长历程

  HTTP 协议 作为文档传输协议,是万维网生态系统的核心基础,它属于应用层中的一个协议,在开放式系统互联OSI(Open System Interconnect) 七层模型中的最上层,它采用 BS(Browser - Server) 架构,并不负责数据包的传输工作,只是定义了数据包在客户端和服务器之间的通信格式,默认使用 80 端口。HTTP的成长历程大概有一下几个时间段:

  • HTTP/0.9版本

HTTP 协议第一个版本,它只有一个指令:GET。通过 GET 向服务器获取资源,服务器仅仅能够为你回应最简单的HTML格式字符串,在现在看来毫无价值!

GET /index.html
  • HTTP/1.0版本

由于0.9版本太过简单,完全无法满足互联网数据传输的需求。在1996年,脱胎换骨的 HTTP/1.0 版本正式发布。新增POST 指令和 HEAD 指令,使得基于 HTTP协议 传输文字、图像、视频、文件等任何格式都不在话下。除了增加了请求方法以及对发送文件的支持之外,还增加了格式的改变。除了数据部分,每次通信都必须包括头信息 HTTP header,用来描述一些元数据。另外还增加了状态码、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等等,这个版本的升级,为互联网赋予了丰富多彩的信息交互,也为互联网的快速发展奠定了基础。

虽然 HTTP/1.0 相比较 0.9版本,可以说是脱胎换骨,然而依旧并不完美,最大的问题就是,传输性能低下。每一次建立 TCP 连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再重新建立一个连接。而每一次 TCP 连接的建立都是非常消耗性能的操作,所以如果多次请求,就会导致请求成本特别的高。

  • HTTP/1.1版本

为了解决 1.0版本让人诟病的性能缺陷,仅仅过去半年的时间,在1997年1月,加入了持久化连接 HTTP/1.1 版本再次发布,即 TCP 连接默认不关闭,可以被多个请求复用,大大节约了请求成本。此外,HTTP/1.1 还新增了许多方法,例如:PUTPATCHHEADOPTIONSDELETE。从此 HTTP 驻足不前,一直沿用至今,也成为了目前的主流版本。此外,基于 Restful 的架构风格的 Web服务也成了主流。

  • HTTP/2版本

我们知道 1.1版本的发布,优化了一些网络性能问题,然而随着网页内容丰富程度的提高和交互吞吐量的急剧增加,即使 HTTP/1.1 允许复用TCP 连接,而同一个 TCP 连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个回应,才会进行下一个回应,要是前面的回应特别慢,后面就会有许多请求排队等着,这就是队头堵塞 (Head-of-line blocking),性能上也还是有所缺陷。此外,HTTP 明文连接导致的一些网络安全问题也一直威胁着我们。

于是多年驻足不前的 HTTP, 在2015年,发布了下一代协议 HTTP/2 版本(它不叫 HTTP/2.0 是因为标准委员会不打算再发布子版本了)。该版本只用于 HTTPS加密连接HTTP 明文连接 将继续使用 HTTP/1协议,目的是在开放互联网上加强加密技术的应用,提升网络连接安全性,抵御网络劫持等安全威胁。

HTTP/2增加了二进制分帧多路复用服务器推送(server push)头部压缩等新特性。具体内容,后面章节会详细讲解。

  • HTTP/3版本

HTTP/3 协议即将标准化~

HTTPS 时代到来,提升 Web 安全性

HTTP协议的诞生与成长以来,主要是为了解决信息传递和共享的问题,并没有考虑到互联网高速发展后面临的安全问题,HTTP协议不具备任何数据加密、身份校验等机制,使用 HTTP协议 传递的数据以明文形式在网络中传输,任意节点的第三方都可以随意劫持流量、篡改数据或窃取信息,无法确保数据的保密性、完整性和真实性,已经不能适应现代互联网应用的安全需求。

1994年,Netscape创建了 SSL协议 的原始规范并逐步发布协议改进版本,1996年,Netscape和Paul Kocher共同设计发布 SSL 3.0协议,获得互联网广泛认可和支持。因特网工程任务组(IETF)接手负责该协议,并将其重命名为传输层安全(TLS)协议。

SSL(Secure SocketsLayer ,安全套接层)介于应用层和TCP层之间,应用层数据不再直接传递给传输层而是传递给SSL层SSL层对从应用层收到的数据进行加密,利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。

2014年起,谷歌开始计划在Chrome浏览器上针对 HTTP 协议的不安全性对用户发出警告,并逐步升级警告范围,最终目标是将所有 HTTP 网站标记红色“不安全”警告,推动网站迁移至更安全的HTTPS加密协议,FireFoxSafari等主流浏览器也纷纷加入行列。在最新版Chrome浏览器已经对所有 HTTP 网站标记“不安全”,并对需要输入字段的HTTP页面标记红色“不安全”警告。在浏览器的推动下,近两年全球网站HTTPS部署率持续上升,为创建安全、隐私的互联网环境打下良好基础。