概述
在TCP连接,有 长连接 和 短链接 两种,从 TCP三次握手和四次挥手 可知,每个连接的建立和断开都是需要 资源消耗 和 时间消耗 的,在不同的应用场景中,能发挥巨大的作用
短连接
双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接
通信过程
建立连接→数据传输→关闭连接
下次再发送数据时,重复上面的过程
特点
管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段
应用场景
WEB服务器一般都用 短链接(http1.0只支持短连接,http1.1可支持长连接),假设双11期间的淘宝、京东,有成千上万甚至上亿的浏览器连接web服务器,如果用长连接,那么 每个浏览器占用一个连接,服务器压力很大,而且用户 打开网页 时才 传输数据,打开后大部分时间都在 浏览信息,几乎没有数据传输,所以 用短连接会更省一些资源
长连接
在一个TCP连接上可以连续 发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方 发检测包 以 维持此连接,一般通过发送 心跳包 保持连接
通信过程
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接(一个TCP连接通道多个读写通信);
心跳包
http://www.malaoshi.top/show_1EF30ObbmjMN.html
应用场景
长连接多用于 频繁收发数据,点对点的通讯,而且 连接数不能太多 情况。每个TCP连接都需要三次握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包,不用建立TCP连接。
例如:数据库 的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。
