简述长连接与短连接

长连接

长连接:在传输层利用TCP协议建立可靠连接后,在一个连接上可以连续发送多个数据包。连接保持期间,如果没有数据包发送时,连接双方需要互相发送链路检测包(心跳消息)维持连接状态,直到通信双方任一方主动断开连接(发起FIN包)。

HTTP1.1相对于1.0引入的新特性其实就是引入了长连接,避免客户端频繁的与客户端进行建立连接操作。对应到字段上为:Keep-Alive

短连接

短连接:通过名字即可知道意思,客户端每次与服务端通信的时候都需要建立连接,收到响应报文或者等待应答超时都会断开连接。也就是说,一个连接期间传输一个数据包,当数据包传送完成时,连接断开。
凡是在一次消息交互(发请求-收响应)之后立刻断开连接的情况都视为短连接。一般web的HTTP服务都采用的短连接。

适用性与缺点

长连接由于其可以保持连接,所以多适用于交互操作频繁,点对点通讯的应用中。服务器在保持连接时会消耗内存,CPU和网卡等资源,所以当建立的连接过载时,就会导致服务器资源耗尽,从而不能响应新的连接请求。 数据库操作一般采用长连接。数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
短连接则适用于并发高,单个客户端与服务器通信不频繁的场景,一般Web的HTTP服务采用短连接。

如何判断应用使用的长连接还是短链接呢?凡是在一次消息交互之后立刻断开连接的都是短连接。如果没有释放连接,且通信双方有间断的进行有规律的心跳交互,则说明是长连接。

猜你喜欢

转载自blog.csdn.net/dawn_after_dark/article/details/80983061