首先,连接指的是传输层的TCP连接

连接就是连接,没有长短之说

是长是短取决于你是否关闭连接

建立连接后进行一次读写就马上关闭,这条连接对你来说就是短连接,如HTTP0.9, HTTP 1.0(默认关闭,支持Keep-Alive)就是这样

HTTP 1.1协议的headers中默认有Connection: Keep-Alive,告诉HTTP服务器不要关闭连接,后续的HTTP请求继续用这条连接,那这条连接对你来说就是一条长连接

另外,socket的SO_KEEPALIVE选项跟http中的Keep-Alive是完全不同的东西,前者是服务器在一条连接至少空闲2小时后发送探活包检测客户端是否还有响应,意在检测半开连接并关闭,后者前文应该已经说明白了。

long:short-connection.png