为什么使用TCP还要自实现心跳

为什么使用TCP还要自实现心跳

虽然TCP是面向连接协议,但是当TCP建立连接后,如果一端的网线被拔掉,或一端程序崩溃,如果期间没有发数据包,另一端不会发现TCP连接已断开。有些恶意攻击,只连接不收发数据,浪费TCP服务器资源。心跳的目的就是为了检测死连接。移动网络下,在空余时间需要发送一定的指令,否则连接将被回收,定时心跳可以避免被回收。

TCP协议是支持Keep Alive机制,为什么应用还需要自实现心跳呢?

第一, TCP协议包含Keep Alive,但不是所有设备都会实现。

第二, TCP协议的Keep Alive包,属于TCP协议包,在连接之间如果有Sock Proxy 或 NAT,他们可能不会处理TCP Keep Alive包。

第三, TCP Keep Alive,只能说明TCP连接是活的,而应用实现心跳,可以保证应用是活的可正常工作,比如:TCP服务器的TCP连接是活的,但由于负载过高,无法处理业务,这时客户端心跳检测到无回应主动断开,重新连接到另一台服务器。

应用自实现心跳最大的好处,就是能适应复杂的网络结构。

相关推荐

《神武5逍遥外传》拍卖系统:理想的交易平台
365bet足球官方开户网

《神武5逍遥外传》拍卖系统:理想的交易平台

🗓️ 08-06 👁️ 9534
《王者荣耀》清明节返场皮肤介绍 王者荣耀攻略详解
Green Sabre
365体育app网址

Green Sabre

🗓️ 10-26 👁️ 2175

友情链接