HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同,用于客户端和服务器之间的通信。
HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回,服务器端在没有接收到请求之前不会发送响应。
HTTP 是无状态协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说在 HTTP 这个级别,协议对于发送过的请求或响应都不做持久化处理。 不保留之前一切的请求或响应报文的信息,每当有新的请求发送时,就会有对应的新响应产生,这是为了更快地处理大量事务,确保协议的可伸缩性。
HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。
HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP 连接。
可随着 HTTP 的普及,文档中包含大量图片的情况多了起来。 比如,使用浏览器浏览一个包含多张图片的 HTML页面时,在发送请求访问 HTML页面资源的同时,也会请求该 HTML页面里包含的其他资源。例如图片。因此,每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的开销。
为解决上述 TCP 连接的问题,HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。就是长连接。
持久连接旨在建立 1 次 TCP 连接后进行多次请求和响应的交互。持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外,减少开销的那部分时间,使HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。
在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并 未标准化。除了服务器端,客户端也需要支持持久连接。
持久连接使得多数请求以管线化(pipelining)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。 这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!