面试题:HTTP 连接分为长连接和短连接,而我们现在常用的都是 HTTP 1.1,因此我们用的都是长连接。这种说法正确吗?其实这句话只对了后半句:我们现在大多应用 HTTP 1.1,因此用的都是长连接,这种说法勉强算对,因为 HTTP 1.1 默认 Connection 为 keep-alive。但是 HTTP 协议并没有长连接、短连接之分,所谓的长短连接都是在说 TCP 连接,TCP 连接是一个双向的通道,它是可以保持一段时间不关闭的,因此 TCP 连接才有真正的长连接和短连接这一说。这个可以回到网络分层的话题上,HTTP 协议说到底是应用层的协议,而 TCP 才是真正的传输层协议,只有负责传输的这一层才需要建立连接。

长连接是一种永久连接吗?事实上,长连接并不是永久连接的,在长连接建立以后,如果一段时间内没有 HTTP 请求发出,这个长连接就会断掉。这个超时的时间可以在 header 中进行设置。