1、持久连接
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。在HTTP/1.1中, 提出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。在请求头中的表现形式是:Connection: Keep-Alive
2、管线化
持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能 发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。 这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。
3、长连接与短连接
HTTP是建立在传输层TCP协议之上的应用层协议,在TCP层面上存在长连接和短连接的区别。所谓长连接,就是在客户端与服务器端建立的TCP连接上,可以连续发送多个数据包,但需要双方发送心跳检查包来维持这个连接。短连接就是当客户端需要向服务器端发送请求时,会在网络层IP协议之上建立一个TCP连接,当请求发送并收到响应后,则断开此连接。
(1)HTTP 1.0
在HTTP 1.0时,默认使用短连接。
(2)HTTP 1.1
在HTTP 1.1时,默认使用长连接。如果我们对浏览器的开发者工具留心,在查看请求头时会发现一行Connection:keep-alive。长连接并非永久保持,它有一个持续时间,可在服务器中进行配置。
(3)HTTP 2.0
而在HTTP 2.0到来之前,每一个资源的请求都需要开启一个TCP连接(因为静态资源并不是HTTP请求,所以不会出现长链接)
HTTP 2.0除了一个连接可请求多个资源这种多路复用的特性,还有如下一些新特性。
- 服务器端推送:以往是一个请求带来一个响应,现在服务器可以向客户端的一个请求发出多个响应,这样便可以实现服务器端主动向客户端推送的功能。
- HTTP头部压缩:减少报文传输体积。
(4)HTTP 3.0
HTTP/3 基于 UDP 协议