长连接与短连接
长连接与短连接
一、TCP 链接
当网络通信采用 TCP 协议时,在真正的读写操作之前,sever 与 client 之间必须建立一个连接,当读写操作完成之后,对方不再需要这个连接时他们可以释放这个链接,连接的连接需要三次握手,释放需要四次握手,也就是说每个连接的建立都是需要消耗资源和时间的。
二、长连接断开的原因
在长连接的情况下,双方的所有通信 都建立在1条长连接上(1次TCP连接);所以,长连接需要持续保持双方连接,才可使得双方持续通信。
可是,长连接会存在断开的情况,而 断开原因 主要是
- 长连接所在进程被杀死
- NAT超时
- 网络状态发生变化
- 其他不可抗因素(网络状态差、DHCP的租期等等 )
三、高效维持长连接的解决方案
- 进程保活
- 心跳保活
- 断线重连
四、容易混淆的概念——TCP的keep alive和HTTP的Keep-alive
TCP的keep alive是检查当前TCP连接是否活着;HTTP的Keep-alive是要让一个TCP连接活久点。它们是不同层次的概念。
TCP keep alive的表现: 当一个连接“一段时间”没有数据通讯时,一方会发出一个心跳包(Keep Alive包),如果对方有回包则表明当前连接有效,继续监控。
参考资料: