有些网络应用在网线断开后重新连上的情况下tcp socket连接保持ESTABLISH状态不变,假如应用程式不使用tcp的keepalive,在网线断开之后,以前建立的 socket 链接仍然会保持在ESTABLISH 状态不会改变。实际上tcp协议对这部分是有所处理的,需要服务端程式,在配置socket属性时,使用 keepalive option,一旦有此配置,这些长时间无数据的链接会根据tcp的keepalive内核属性,在大于(tcp_keepalive_time(tcp_keepalive_probes * tcp_keepalive_intvl))所对应的时间(单位为秒)之后,断开这些链接。

    关于keep alive无论windows,还是linux,keepalive就三个参数: