万维网诞生30周年:看HTTP和HTTPS的起源发展

今天我们能够在网络中畅游,随时通过网络获取资源、信息,都得益于一位计算机科学家蒂姆·伯纳斯·李的构想。1991年8月6日,蒂姆·伯纳斯·李在位于欧洲粒子物理研究所(CERN)的NeXT计算机上,正式公开运行世界上第一个Web网站(http://info.cern.ch ),建立起基本的互联网基础概念和技术体系,由此开启了网络信息时代的序幕。

万维网www构想的诞生

1989 年 3 月 12 日,欧洲粒子物理研究所(CERN)的计算机科学家蒂姆·伯纳斯·李在其一份提案《InformationManagement: A Proposal》中提出了一个构想:创建一个以超文本系统为基础的项目,允许在不同计算机之间分享信息,其目的是方便研究人员分享及更新信息。这个构想最终成了WWW(World Wide Web)万维网的基础,彻底改变了人类社会的沟通交流方式。

伯纳斯·李的提案包含了网络的基本概念并逐步建立了所有必要的工具:

提出HTTP (Hypertext Transfer Protocol) 超文本传输协议,允许用户通过单击超链接访问资源;
提出使用HTML超文本标记语言(Hypertext Markup Language)作为创建网页的标准;
创建了统一资源定位器URL (Uniform Resource Locator)作为网站地址系统,就是沿用至今的http://www URL格式;
创建第一个Web浏览器,称为万维网浏览器,这也是一个Web编辑器;
创建第一个HTTP 服务器软件,后来称为CERNhttpd;
创建第一个Web服务器(http://info.cern.ch)以及描述项目本身的第一个Web页面。

不过这个提案在当时并没有引起人们的兴趣。1993年4月30日,欧洲粒子物理研究所(CERN)将万维网软件开源,发布了一个开放式许可证,使得万维网得到最大化的传播。但直到20世纪90年代中期吉姆·克拉克和马克·安德森在Netscape(网景通信公司)推广商业网页浏览这一概念后,万维网的应用才开始真正爆发。

HTTP协议的诞生和发展

超文本传输协议(HTTP)是应用层的一个协议,是万维网生态系统的核心,在OSI 七层模型中在最上层,它并不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。HTTP 协议采用 BS 架构,也就是浏览器到服务器的架构,客户端通过浏览器发送 HTTP 请求给服务器,服务器经过解析响应客户端的请求。

 

HTTP 协议最早的一个版本是1991年发布的 HTTP/0.9,这个版本只有一个命令:GET。通过 GET 你可以获取服务器的资源,比如请求服务器根目录下的 index.html 文件。这个版本的协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式,也就是说今天的图像、视频等多媒体资源,在 HTTP/0.9这个版本上是无法进行传输的。

1996年5月,HTTP/1.0 版本发布,增加了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。这个版本HTTP协议可以发送任何格式的内容,包括传输文字、图像、视频、文件,这为互联网的大发展奠定了基础。

HTTP/1.0 除了增加了请求方法以及对发送文件的支持之外,还增加了格式的改变。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。另外还增加了状态码、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等等。

HTTP/1.0 版也并不是完美的,它的主要缺点是,每一次建立TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。如果多次请求,势必就会对服务器产生较大的资源性能损耗。

1997年1月,HTTP/1.1 版本发布,这个版本只比1.0 版本晚了半年。这个版本最大的变化就是将持久化连接加入了 HTTP 标准,即TCP连接默认不关闭,可以被多个请求复用。此外,HTTP/1.1版还新增了许多方法,例如:PUT、PATCH、HEAD、 OPTIONS、DELETE。得到进一步完善的HTTP/1.1 版本,一直沿用至今。

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加密协议,FireFox、Safari等主流浏览器也纷纷加入行列。在最新版Chrome浏览器已经对所有HTTP网站标记“不安全”,并对需要输入字段的HTTP页面标记红色“不安全”警告。

在浏览器的推动下,近两年全球网站HTTPS部署率持续上升,为创建安全、隐私的互联网环境打下良好基础。

下一代协议HTTP/2 ,仅支持HTTPS连接

HTTP/1.1版本已经广泛使用了十几年,不仅存在安全性的问题,在性能方面也存在一定的缺陷。虽然它允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的,服务器只有处理完一个回应,才会进行下一个回应,要是前面的回应特别慢,后面就会有许多请求排队等着,这就是队头堵塞(Head-of-line blocking或缩写为HOL blocking)。

为了解决这个问题,2009年谷歌公开了自行研发的SPDY 协议,这个协议在Chrome浏览器上证明可行以后,就被当作 HTTP/2 的基础,主要特性都在 HTTP/2 之中得到继承。

2015年下一代协议——HTTP/2协议发布(它不叫 HTTP/2.0是因为标准委员会不打算再发布子版本了)。HTTP/2增加了二进制分帧、多路复用、服务器推送(server push)、头部压缩等新特性。HTTP/2采用二进制格式传输数据(而非 HTTP 1.x 的文本格式),将请求和响应数据分割为更小的帧,并采用二进制编码,解析起来更高效,不再依赖 TCP 链接去实现多流并行,所有请求都是通过一个 TCP连接并发完成。HTTP/2的新特性使性能有了极大提升,同个域名只需要占用一个 TCP 连接,消除了因多个 TCP 连接而带来的延时和内存消耗。

值得注意的是,在开放互联网上HTTP/2 将只用于HTTPS加密连接,HTTP明文连接将继续使用HTTP/1协议,目的是在开放互联网上加强加密技术的应用,提升网络连接安全性,抵御网络劫持等安全威胁。

今年是互联网诞生30周年,未来的互联网将朝着更加安全、可信的方向去发展,其中离不开所有网络安全从业者和生态圈服务商的努力。沃通CA(www.wosign.com)持续提供全球信任的SSL证书、代码签名证书,从根本上保障数据保密性、完整性和身份真实性,从而保障互联网安全与可信。

沃通原创文章,转载请注明来源

上一篇:简单Spring Cloud 微服务框架搭建


下一篇:Python之路:常用算法与设计模式