socket中的长连接和短连接浅析

socket中的长连接和短连接

长连接和短连接

当网络通信时采用TCP协议时,需在通信双方间建立连接,当读写操作完成后不再需要这个连接时就可以释放这个连接。

所谓的短连接就是通信双方建立一个TCP连接,完成数据传送后即断开此连接。

长连接是针对短链接而言,也就是长时间保持通信双方的连接状态,即在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果在一段时间内没有数据包发送,则需要通信双方发检测包(心跳包)以维持此连接。

传输方式

短连接操作步骤通常是:
建立连接→数据传输→关闭连接;

而长连接通常是:
建立连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;

区别与用途

短连接

短连接一般用于点对多,高连接量的情况,比如HTTP服务等。因为对于Web这种有高访问量高并发的服务器而言,如果对每个用户都维护一个长连接的话,这对服务器是一个不可承担的压力,所以当并发量大但客户无需频繁操作的情况下可以采用短连接,这样管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段来维持连接。

长连接

通信的双方的TCP连接的建立是需要三次握手,释放则需要四次挥手,可见每次连接的建立都是需要消耗系统资源和时间的,所以对于需要操作频繁,点对点的通讯,而且连接数不能太多的情况通常会选择采用长连接。因为如果每次操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作时直接发送数据就可以了,不用再建立TCP连接。

例如:对于数据库的连接一般采用长连接,因为频繁的短连接通信容易造成socket错误,socket的频繁创建也是对资源的浪费。但是对于长连接而言,其TCP连接不会被客户端主动关闭,如果随着客户端接入数量增大,服务器负载压力就会不断增大,这时也需要服务器端采取策略来对一些”僵死“连接进行关闭或者限制最大接入长连接数,以此来防止服务器压力过大而崩溃。


长连接和短连接区别在于通信双方对于连接采取的关闭策略,没有十全十美的方案,所以选择时还应该根据具体运用场景因地制宜才是。

你可能感兴趣的:(Linux)