码迷,mamicode.com
首页 > Web开发 > 详细

http协议各版本差异

时间:2019-05-12 17:03:14      阅读:749      评论:0      收藏:0      [点我收藏+]

标签:tip   2.0   patch   应用   引入   工作   网页   protocol   视频、   

http协议各版本差异

一、http协议介绍

       http(Hypertext transfer protocol)超文本传输协议,它是互联网上应用最为广泛的一种网络协议,工作在应用层。

二、http协议发展

       http协议目前有4个版本,其中1.0、1.1版本在互联网上被广泛使用,2.0版本目前应用很少,是下一代的http协议。

  • http/0.9版本:1991年,原型版本,功能简陋,只有一个命令GET,只支持纯文本内容,该版本已过时。

  • http/1.0版本: 1996年5月,支持cache, MIME, method等。

  • http/1.1版本: 1997年1月,默认建立持久连接,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

  • http/2 版本: 2015年5月作为互联网标准正式发布,头部信息和数据体都是二进制,引入头信息压缩机制等。

三、1.x版本说明

http1.0版本:

  • 任何格式的内容都可以发送,这使得互联网不仅可以传输文字,还能传输图像、视频、二进制等文件。

  • 除了GET命令,还引入了POST命令和HEAD命令。

  • http请求和回应的格式改变,除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

http1.1版本:

  • http1.1是目前最为主流的http协议版本,从1997年发布至今,仍是主流的http协议版本。

  • 引入了持久连接( persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。

  • 引入了管道机制( pipelining),即在同一个TCP连接里,客户端可以同时发送多个
    请求,进一步改进了HTTP协议的效率。

  • 新增方法:PUT、 PATCH、 OPTIONS、 DELETE。

  • http协议不带有状态,每次请求都必须附上所有信息。请求的很多字段都是重复的,浪费带宽,影响速度。

http1.x版本问题:

  • http1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,无法保证数据的安全性。

  • 1.1版本允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个回应,才会进行下一个回应,可能会造成Head-of-line blocking的问题。

  • http1.x支持了keep-alive,来弥补多次创建连接产生的延迟,但是keepalive使用多了同样会给服务端带来大量的性能压力,并且对于单个文件被不断请求的服务(例如图片存放网站), keep-alive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。

四、http/2协议

http/2发布于2015年,目前应用还比较少,该版本主要有如下特点:

  • http/2是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧。

  • 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序一一对应,避免了队头堵塞的问题,此双向的实时通信称为多工( Multiplexing)。

  • HTTP/2 允许服务器未经请求,主动向客户端发送资源,即服务器推送。

  • 引入头信息压缩机制( header compression) ,头信息使用gzip或compress压缩后再发送。

五、查看网站http协议版本

打开浏览器,以百度首页为例,按下F12键。点击network项,然后刷新网页。

技术图片

从响应头部信息可以看出,该网站使用的是http1.1版本。

http协议各版本差异

标签:tip   2.0   patch   应用   引入   工作   网页   protocol   视频、   

原文地址:https://blog.51cto.com/13932385/2393194

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!