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
还新增了许多方法,例如:PUT
、PATCH
、HEAD
、OPTIONS
、DELETE
。从此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
加密协议,FireFox
、Safari
等主流浏览器也纷纷加入行列。在最新版Chrome
浏览器已经对所有 HTTP 网站标记“不安全”,并对需要输入字段的HTTP页面标记红色“不安全”警告。在浏览器的推动下,近两年全球网站HTTPS
部署率持续上升,为创建安全、隐私的互联网环境打下良好基础。