参考答案

HTTP的长连接和短连接实际上是TCP的长连接和短连接,HTTP属于应用层协议。
短连接:浏览器和服务器每进行一次HTPP操作,就建立一个连接,但任务结束就会中断这个连接
长连接:HTTP1.1规定了默认保持长连接,也称为持久连接。
意思就是,数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据。
长连接好处:

  1. 同一个客户端可以使用这个长连接处理其他请求,避免HTTP重新连接和断开所消耗的时间;
  2. 服务器可以利用这个连接 主动推送 消息到客户端(重要的)。

HTTP头部有了Connection: Keep-Alive这个值,代表客户端期望这次请求是长连接的。但是并不代表一定会使用长连接,服务器端都可以无视这个值,也就是不按标准来。实现长连接要客户端和服务端都支持长连接。
keep-alive的优点:

  • 较少的CPU和内存的使用(由于同时打开的连接的减少了)
  • 允许请求和应答的HTTP管线化
  • 降低拥塞控制 (TCP连接减少了)
  • 减少了后续请求的延迟(无需再进行握手)
  • 报告错误无需关闭TCP连接