小程序定时器_TCP保活定时器

保活定时器用于判断TCP连接是否正常,包括对端状态和网络路径的检查。当对端两小时内无动作,服务器发送保活探测报文。若客户端正常并可达,会回应;否则,服务器在无响应情况下会重复探测并最终关闭连接。四种场景包括:正常响应、客户端异常、网络中断和客户端重启。
摘要由CSDN通过智能技术生成

为什么要保活定时器

保活定时器是为了判断链接是否正常,比如对端是否在线,是否重启,路径是否可达等等。

保活定时器判断tcp链接是否处于正常状态。包括

1、判断对端状态是否正常;

2、判断网络路径是否可达

认识保活探测报文

特定链接中,如果对端在两小时以内没有任何动作,服务器会发送一个保活探测报文,探测客户端是否正常。(本文假设只有服务器开了保活)

如果客户端正常并且网路可达,客户端会回保活响应。

认识一下探测报文,即keeplive报文,

服务器向客户端发送一个Keeplive请求,该报文包括1个字节的payload,但是请求序列号会比正常序列号小1。

客户端接收到请求,判断序列号小1,并带有1个字节的payload,做Keeplive响应。

2fa6086542c371ea9dfc6cd004adc875.png

Keeplive报文

如图,报文43为保活请求,请求序列号为9428

链接中,正常下一个序列号应该为9429,保活请求序列号比正常序列号小1

报文44为保活响应,保活响应没有payload,但是携带希望的下一个正确的序列号,即9429

保活探测的四种场景

服务器保活探测流程中,客户端存在以下四种可能的状态:

1、 客户端正常

客户端正常响应保活探测。

服务器重置保活定时器,两小时(系统变量,可以修改)后再探测

服务器的应用程序感知不到这个探测,这种情况,保活探测对应用透明

2、 客户端已经崩溃、关闭、或者正在重启

这种情况客户端不会有响应。

服务器会每隔75秒发送一个保活探测,发送十次后仍然没有收到客户端响应,则关闭连接,并向应用程序发送差错报告,报告类型”连接超时”

由于间隔了两小时,通常每次发送保活,会触发arp请求,如果在局域网内,由于对方已经崩溃,arp请求不会收到响应(假设网关也没有缓存arp),协议设计十次保活请求,而现实中只会看到十次arp请求。

如果在广域网,arp代理服务器可以获得arp响应,并发送出保活请求,但是最终这个报文还是到达不了客户端,没有任何响应。

3、 客户端正常,但是网络中断了。

客户端不会响应保活,服务器每隔75秒发送一个探测,尝试10次后没反应关闭连接,

给应用程序反馈错误信息。

这种情况下,一般也会先发送arp请求。

如果是局域网,会看到10个arp请求,而不是10个保活,这种情况和第二种相同;

如果出局域网,网关做arp代理,会响应这个arp请求,会看到发送了10个保活请求。

但是客户端没有路径可达,路由器会回icmp差错,错误类型为路径不可达。我们会看到10次保活请求,和对应10次icmp路径不可达差错通告

4、 客户端已经重启

客户端收到保活探测,发现没有这个链接,发送一个RST复位链接。

应用程序收到反馈“被对方复位”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值