1、长连接:
长连接,也叫持久连接,在TCP层握手成功后,不立即断开连接,并在此连接的基础上进行多次消息交互,直至连接的任意一方(客户端或服务器)主动断开连接,此过程为一次完整的长连接。HTTP1.1相对于1.0,最重要的新特性 是引入了长连接。
2、短连接:
顾名思义,与长连接的区别就是,客户端收到服务端的响应后,立即发送FIN消息,主动释放连接。也有服务器端主动断开连接的情况,凡是在一次消息交互(发请求——收响应)之后立即断开连接的情况都称为短连接。
注:短连接是建立在TCP协议上的,有完整的握手回收流程,区别于UDP协议
3、如何快速区分当前连接使用的是长连接还是短连接
1、凡是在一次完整的消息交互(发请求-收响应)之后,立刻断开连接(有一方发送FIN消息)的情况都称为短连接;
2、长连接的一个明显特征是会有心跳消息(也有没有心跳的情况),且一般心跳间隔都在30S或者1MIN左右,用wireshark抓包可以看到有规律的心跳消息交互(可能会存在毫秒级别的误差)。
4、什么时候用长连接,短连接?
5、TCP长连接和短连接:
模拟一下TCP短连接的情况:
client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在 client/server间传递一次读写操作
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
连接->传输数据->关闭连接
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。
模拟一下长连接的情况:
client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。
长连接:
连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差