TCP定时器 之 保活定时器

在用户进程启用了保活定时器的情况下,如果连接超过空闲时间没有数据交互,则保活定时器超时,向对端发送保活探测包,若(1)收到回复则说明对端工作正常,重置定时器等下下次达到空闲时间;(2) 收到其他回复,则确定对端已重启,关闭连接;(3) 超过探测次数仍未得到回复,则认为对端主机已经崩溃,关闭连接;

启动定时器:

用户进程可以通过socket的SO_KEEPALIVE选项来开启或关闭保活定时器探测,TCP最终会调用tcp_set_keepalive来实现保活定期的开启与关闭;

 

定时器回调函数:

tcp_keepalive_timer函数为保活定时器和FIN_WAIT_2定时器共用,我们这里只关注保活部分;函数执行必要的状态检查,之后对空闲时间和配置空闲时间阈值进行判断,在超过阈值的情况下,若未超过探测次数和用户配置超时时间,则发送探测包,否则关闭连接;

 

本文链接:TCP定时器 之 保活定时器

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注