HTTP0.9(1991)

该版本极其简单,只有一个命令 GET

GET /index.html

上面命令表示,TCP 连接(connection)建立后,客户端向服务器请求(request)网页index.html。

协议规定,服务器只能回应 HTML 格式的字符串,不能回应别的格式。

<html>
       <body>Hello World</body>
</html>

服务器发送完毕,就关闭 TCP 连接


HTTP1.0(1996)

任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础

每次通信都必须包括头信息(HTTP header),用来描述一些元数据

除了 GET 命令,还引入了 POST 命令和 HEAD 命令,丰富了浏览器与服务器的互动手段

其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等


HTTP/1.0 版的主要缺点是,每个 TCP 连接只能发送一个请求。

发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

TCP 连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。

所以,HTTP 1.0 版本的性能比较差。


HTTP/1.1(1997)

1、引入了持久连接(persistent connection),即 TCP 连接默认不关闭,可以被多个请求复用,不用声明 Connection: keep-alive。客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送 Connection: close,明确要求服务器关闭 TCP 连接

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

举例来说,客户端需要请求两个资源。以前的做法是,在同一个 TCP 连接里面,先发送A请求,然后等待服务器做出回应,收到后再发出B请求。

管道机制则是允许浏览器同时发出 A 请求和 B 请求,但是服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。

3、将 Content-length 字段的作用进行扩充,即声明本次回应的数据长度(一个 TCP 连接现在可以传送多个回应,势必就要有一种机制,区分数据包是属于哪一个回应的)

4、采用分块传输编码,对于一些很耗时的动态操作,服务器需要等到所有操作完成,才能发送数据,显然这样的效率不高。更好的处理方法是,产生一块数据,就发送一块,采用"流模式"(stream)取代"缓存模式"(buffer)

5、1.1 版还新增了许多动词方法:PUT、PATCH、HEAD、 OPTIONS、DELETE。

另外,客户端请求的头信息新增了Host字段,用来指定服务器的域名

[不足]
虽然 1.1 版允许复用 TCP 连接,但是同一个 TCP 连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个回应,才会进行下一个回应。要是前面的回应特别慢,后面就会有许多请求排队等着。这称为"队头堵塞"(Head-of-line blocking)。

为了避免这个问题,只有两种方法:一是减少请求数,二是同时多开持久连接。

这导致了很多的网页优化技巧,比如合并脚本和样式表、将图片嵌入CSS代码、域名分片(domain sharding)等等。如果 HTTP 协议设计得更好一些,这些额外的工作是可以避免的。


HTTP/2.0(2015)

简单来说,HTTP/2(超文本传输协议第2版,最初命名为HTTP2.0),是 HTTP 协议的第二个主要版本。

HTTP/2 是HTTP协议自 1999 年 HTTP1.1 发布后的首个更新,主要基于 SPDY 协议。
HTTP2.0 的特点是:在不改动 HTTP 语义、方法、状态码、URI 及首部字段的情况下,大幅度提高了 web 性能。

什么是SPDY协议

刚刚对HTTP2.0的介绍中引出了一个名词 —— SPDY协议,这又是什么呢?

SPDY 是 Speedy 的昵音,意为“更快”。

它是 Google 开发的基于 TCP 协议的应用层协议。

目标是优化 HTTP 协议的性能,通过压缩、多路复用和优先级等技术,缩短网页的加载时间并提高安全性。

SPDY 协议的核心思想是尽量减少 TCP 连接数。

SPDY 并不是一种用于替代 HTTP 的协议,而是对 HTTP 协议的增强。

 posted on 2020-04-07 19:31  Rannie`  阅读(602)  评论(0编辑  收藏  举报
去除动画
找回动画