HTTP协议发展历史

Posted 泰斗贤若如

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议发展历史相关的知识,希望对你有一定的参考价值。

HTTP协议发展历史

一、什么是HTTP?

HTTP(HyperText Transfer Protocol): 超文本传输协议。是互联网上应用最广泛的一种网络协议。
所有www文件都必须遵守的一个标准,是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。
简单点说就是一种固定的通讯规则。

二、HTTP/0.9版本

这是最早定稿的HTTP版本,这个版本中它的内容非常地简单。

  • 首先它只有一个命令GET。对应到现在的GET请求和POST请求,这些叫做HTTP的命令或者方法。

  • 它没有HEADER等描述数据的信息。因为这个时候的请求非常简单,它需要达到的目的也非常简单,没有那么多数据格式。

  • 服务器发送完内容之后,就关闭TCP连接。这里需要注意一点,这里的TCP连接和http请求是不一样的。http请求和TCP连接不是一个概念。一个http请求通过TCP连接发送,
    而一个TCP连接里面可以发送很多个http请求(HTTP/0.9不能这么做,但是HTTP/1.1可以这么做,而且在HTTP/2这方面会更大程度地优化,来提高HTTP协议传输的效率以及服务器的性能)
    所以一个TCP连接对应的是多个http请求,一个http请求肯定是在某一个TCP连接里面进行发送的,

三、HTTP/1.0版本

这个版本和现在普遍使用的HTTP/1.1差不多,在HTTP/0.9版本基础上进行了改进。

  • 增加了很多命令。比如:POST、PUT、HEADER这些命令。

  • 增加了status code和header相关的内容。status code是用来描述服务器端处理某一个请求之后的状态的;header主要包含:请求和发送数据的描述以及对这部分数据进行操作的方法。

  • 增加了多字符集支持、多部分发送、权限、缓存等相关的内容。这些内容有利于更好地使用http请求去实现WEB服务。

四、HTTP/1.1版本

这个版本是在HTTP/1.0的基础上增加了一些功能来优化网络连接的过程。

  • 在这个版本支持了持久连接。在HTTP/1.0版本里面,一个http请求要发送就要先在客户端和服务器端之间创建一个TCP连接,创建完这个TCP连接之后,等服务器端返回完数据之后,这个TCP连接就关闭了。

  • 这个成本是相对比较高的,因为在建立一个TCP连接的过程中要进行http的三次握手,这一部分是通过TCP来完成的,在创建这个连接的过程中消耗是比较高的,延迟也会比较高。
    所以如果在建立完一个连接之后,它可以不关闭,之后新的http请求就可以一直在这个连接里面进行数据发送的话,它的性能和效率肯定会提升很多,HTTP/1.1已经实现了这个功能。

  • 增加了pipeline。可以在同一个TCP连接里面发送多个http请求,就是上面说的那样。但是在HTTP/1.1里面,虽然是可以在同一个TCP连接里面发送多个http请求,但是服务器端对于进来的请求,是要按照顺序进行数据返回的。
    因此,如果前一个请求等待时间非常长,而后一个请求处理得比较快。这个时候后一个请求不能先发送,而是要等第一个请求数据全部发送完成之后,才能进行发送,即是串行的。等待的这部分时间就体现出了与并行传输性能之间的差距。
    而这个在HTTP/2里面得到了优化。

  • 增加了HTTP的头host和其他一些命令。其中比较重要的就是host,有了host之后就可以在同一台服务器(物理服务器)上同时跑多个web服务。比如说一个Node.js的web服务,一个Java的web服务。
    通过host这个字段来表示两个服务都是请求到同一个物理服务器上,但是我要请求的是里面哪一个软件服务,Node.js还是Java?
    这就是通过host来进行判断的。这个host头增加的好处就是,在同一个物理服务器或者同一个集群里面可以部署很多不同的web服务来,提高了物理服务器的使用效率。

五、HTTP/2版本

虽然现在还没有普及,但是毫无疑问是未来的趋势。

_ 所有数据都是以二进制进行传输的。在HTTP/1.1里面大部分的数据传输是通过字符串,所以数据的分片方式是不太一样的。在HTTP/2里面所有的数据都是以帧进行传输的。

  • 正是因为有了这个好处,同一个连接里面发送多个请求时,服务器端不再需要按照顺序来返回处理后的数据了。而是可以在返回第一个请求里面数据的时候,同时返回第二个请求里面的数据。这样的并行传输能够更大限度地提高web应用的传输效率。

六、HTTP/2与HTTP/1.1性能对比

官方测试网站 https://http2.akamai.com/demo/http2-lab.html
官网提供了多种版本的对比测试有HTTP1.1与HTTP2的比较,还有服务器端推送(server-push)不同个数之间的比较:(由于网络延迟不同,测试结果或有差异)

  • HTTP1.1与HTTP2的对比:Compare HTTP1.1 (HTTP) vs HTTP2 (HTTPS):


    可以看到分别使用HTTP/1.1和HTTP/2加载同一张由多张小图片组成的大图片:HTTP/1.1用了7.41s,而HTTP/2只用了1.47s。HTTP2比HTTP/1.1快了将近5倍。
    因为为了加载这张大图,需要请求许多的小图,HTTP/1.1采用的是串行地请求,所以速度要比采用并行请求的HTTP/2要慢上许多。

这就是HTTP的发展历史,除此之外还包含了HTTPS协议。HTTPS其实是一个安全版本的HTTP协议,实际使用与HTTP/1.1区别不大。


往期推荐

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》

  • 《》



以上是关于HTTP协议发展历史的主要内容,如果未能解决你的问题,请参考以下文章

http协议的发展历史

HTTP 协议基础及发展历史

HTTP协议原理+实践 Web开发工程师必学

HTTP协议发展历史

HTTP协议发展历程

Http协议基础及发展历史