
双端连接过程中,如果任意一方意外崩溃、当机、网线断开或路由器故障等"非正常连接",另一方无法得知tcp连接已经失效。
解决方案就是实现心跳机制 (应用层,灵活,开发者自己控制检测)。
tcp协议栈的keepalive根据需求场合去取舍(不可控,有限制)。
补充:
举个例子:连接丢失,tcp不会通知应用程序,client断线,server的tcp连接不会检测到断线,而是一直连接中,server还要去维护client的连接,执行逻辑xxxxxx
心跳包就是及时检测对方是否连接,检查断线的一种机制。心跳包协议数据内容完全是开发者自己掌控(比如client和server可以同步数据)。
