TCP交互在三次握手确定连接之后,后续可能不会一直有数据在通讯,但此时双方的连接是保持的,如果在这段时间内没有数据,客户端(或服务端)突然关掉了,或者客户端到服务端之间的网络突然断连,那么对于客户端而言会重新发送请求,服务端会返回错误让其建立新连接,但是在客户端与服务端重新建立连接之前的这段时间内,这个半连接状态的TCP连接是一直保持着,对服务端是占用了资源却没有用的,如果大量的这种连接占用将会占用大量的系统资源,因此需要有一个判断机制将连接自动断开,这个判断机制就是TCP-Keepalive。
参考以下文章:
http://time-track.cn/tcp-keepalive-howto.html
https://www.cnblogs.com/hukey/p/5481173.html
http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/