HTTP的长连接和短连接分别是什么?keep-alive是干什么的
<p><code>HTTP</code>的长连接和短连接实际上是<code>TCP</code>的长连接和短连接,<code>HTTP</code>属于应用层协议。<br/><strong> 短连接:</strong>浏览器和服务器每进行一次<code>HTPP</code>操作,就建立一个连接,但任务结束就会中断这个连接<br/> <strong>长连接:</strong><code>HTTP1.1</code>规定了默认保持长连接,也称为持久连接。<br/> 意思就是,数据传输完成了保持<code>TCP</code>连接不断开(不发<code>RST</code>包、不四次握手),等待在同域名下继续用这个通道传输数据。<br/> <strong>长连接好处:</strong><br/> </p><ol><li>同一个客户端可以使用这个长连接处理其他请求,避免<code>HTTP</code>重新连接和断开所消耗的时间;</li><li>服务器可以利用这个连接 <strong>主动推送</strong> 消息到客户端(重要的)。</li></ol><p> <code>HTTP</code>头部有<code>了Connection: Keep-Alive</code>这个值,代表客户端期望这次请求是长连接的。但是并不代表一定会使用长连接,服务器端都可以无视这个值,也就是不按标准来。实现长连接要客户端和服务端都支持长连接。<br/> <code>keep-alive</code>的优点:<br/> </p><ul><li>较少的<code>CPU</code>和内存的使用(由于同时打开的连接的减少了)</li><li>允许请求和应答的<code>HTTP</code>管线化</li><li>降低拥塞控制 (<code>TCP</code>连接减少了)</li><li>减少了后续请求的延迟(无需再进行握手)</li><li>报告错误无需关闭<code>TCP</code>连接</li></ul><p> </p>