http协议是什么?http协议的由来和发展

http协议解析–第一篇

http协议的由来

http协议是什么?

在说http的历史之前,我们先来说清楚http协议是什么?

在这里插入图片描述

随便百度一下,就会出来上万条的检索结果,其中都会提到“Http就是超文本传输协议”(英文:HyperText Transfer Protocol,缩写:HTTP),没错!这就是http的定义,http协议就是超文本传输协议。


其中有两个名词:“超文本”和“传输协议”

首先传输协议就说明http首先是一套协议,是一套法则,是计算机与计算机之间使用的一种合约,而传输指的就是在请求方和应答方之间传输信息,也就是数据包,这种传输是双向的,也就是同一台主机可以做为请求方也可以做为应答方。在传输的过程中,还可以加入很多第三方的功能,比如数据压缩、安全防护等等。

超文本说明传输的数据首先是文本,不是”二进制包“,不是杂乱无章的数据,而是具有意义的可以被浏览器等直接识别和处理的文本。而显然单纯的文本不能满足用户的全部需求,现在的需求形式多样五花八门,所以文本的含义也被扩展了,成为了超文本,包括:链接、图片、音频等等。超文本的链接使超文本之间存在交互,成为一个可以相互连接的带有文字、图片、视频的网状结构。熟悉浏览器的同学一定知道浏览器的渲染就是生产一颗颗的dom树,HTML文件就是一种超文本文件。


总结一下,http应该说是计算机的一种协议,这种协议规范了计算机之间的传输超文本的规则,并且这种传输是双向的。

指的注意的是,http是用来处理超文本传输的协议,并不包含全部的传输过程,比如“寻址”、“保存请求状态”等等,也并没有规定必须在网络协议的哪一层使用以及必须搭载在哪一种网络协议之上。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。只是目前最流行的是TCP/IP协议,所以http基本上都是放在TCP/IP上运作的。

因此我们知道,很多人说HTTP 是基于 TCP/IP 协议的应用层协议,其实这个说法是不准确的。

===================================================

三个重要概念的提出

在讲了http是什么之后,我们进入http的历史,做为开篇

在http形成之前,Tim Berners-Lee提出了三个重要的概念,基于这三个概念(3 项 WWW 构建技术),给http协议的形成创造了基础条件,分别是:

  1. HTML(HyperText Markup Language),页面的文本标记语言,超文本标记语言。
  2. URI,统一资源标识符,互联网上所有的资源都有其唯一的URI。(这里URI和URL的区别下一章会讲)
  3. HTTP,超文本传输协议。

http 0.9

1990年问世,相较于现在的http协议,http 0.9非常简单。之所以会被成为http 0.9是因为当时根本还是一个实验室内部产品,没有被命名,在有了http1.0之后才把这一版祖传代码称之为0.9。

那时候还有严重设计缺陷,只支持GET方法从服务器上获取“HTML文档”,在响应请求之后立即关闭连接,局限性非常强,所以很快的就产生了http1.0.

http 1.0

HTTP正式作为标准被公布是在1996年的5月,版本被命名为HTTP/1.0。在多方面对0.9进行了改进,在形式上和今天的http差别已经不大。改进的地方如:

  1. 除了GET命令,还引入了POST命令等。
  2. 丰富了请求和回应的格式,增加了http header的概念,用来描述一些元数据。
  3. 还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)等等
    最主要的是传输的数据不仅限于文本

随着RFC1945的正式提出,http 1.0成为了一个有档可查的协议。

但是http 1.0还是存在一些问题,比如,每个TCP连接只能发送一个请求导致传输的很慢,性能较差,随着互联网的发展以及日益强烈的通讯需求,这个问题愈发突出。

http 1.1

1997年公布的HTTP/1.1是目前主流的HTTP协议版本。

随着浏览器的商业争夺大战的落幕,极大的推动了web的发展,http也从只是参考文档的小兵http1.0发展到一个正式的标准 http 1.1,发布了修订版RFC2616,开始了http的统领时代。

首先改进的就是引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive,明确了连接管理。

此外,还有

  1. 新增了许多动词方法:PUT、OPTIONS、DELETE等。
  2. 头信息新增了Host字段,用来指定服务器的域名。
  3. 采用分块传输编码,采用了流模式等等。

缺点:虽然1.1版允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。也就是说请求只能一个个处理,多了只能排长龙。

http/2

从名字上我们马上就能发现http/2不叫http 2.0,这是因为http/2实际上不是“官方”发布的,官方没想发布http 2.0.但是如前文所述,1.1主要就是连接太慢,已经跟不上需求繁多的互联网。所以,有趣的事情发生了,Google第一个坐不住了,在自己的浏览器Chrome上直接自己开发使用http/2,由市场像官方倒逼。

http/2的主要改进有:

  1. HTTP/2 的头信息是一个彻底的二进制协议,不再是纯文本。
  2. HTTP/2 复用TCP连接,在一个连接里,可以处理多个请求,解决了排长龙的问题。
  3. HTTP/2 允许服务器未经请求,主动向客户端push资源

等等

http 3.0?

所以,下一个版本的发布也许就要跳过http/2,直接进入http 3.0。


总结:

  1. http是计算机的一种协议,这种协议规范了计算机之间的传输超文本的规则,并且这种传输是双向的。
  2. http是用来处理超文本传输的协议,并不包含全部的传输过程,比如“寻址”、“保存请求状态”等等,并没有规定必须搭载在哪一种网络协议上。
  3. http协议始于三个重要概念的提出。
  4. http 0.9是很简单的文本协议,只有get一个动作。
  5. http 1.0奠定了现代http协议的主流。
  6. http 1.1成为了正式的协议,是目前应用最广发的官方协议
  7. http/2是Google自己提出的SPDY协议倒逼改革,但还没有成为广发的官方协议
  8. 未来也许会直接跳过http/2,进入http 3.0的时代。

猜你喜欢

转载自blog.csdn.net/weixin_42217106/article/details/105732067