tcp--Keep-Alive
在一次面试中被问到:tcp如何维护一个长连接?
原理
定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP保活机制会开始作用,每隔一个时间间隔,会发送一个探测报文,该探测报文包含的的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前TCP连接已经死亡。
- 客户端正常。当探测报文到达时会重置客户端的计时器。
- 客户端因为一些原因重启。当探测报文到达时,可以响应当由于没有该连接的有效信息,会产生一个RST报文,服务端会很快发现TCP连接已经被重置。
- 客户端崩溃。当探测报文到达时,客户端无响应,达到保活探测次数后,TCP会报告该TCP连接已经死亡。
Keep-Alive默认是关闭的,可以分别在两个方向上开启,也可以单独在一个方向上开启。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。