终端快速感知NAT保活时间的方法、心跳包发送端和交互系统与流程

文档序号:18081793发布日期:2019-07-06 10:08阅读:484来源:国知局
终端快速感知NAT保活时间的方法、心跳包发送端和交互系统与流程

本发明涉及通信领域,具体地说是一种终端快速感知nat保活时间的方法、心跳包发送端和交互系统。



背景技术:

申请人北京容联易通信息技术有限公司于2016年申请了一项发明专利cn201610414480.5公开了一种用于保持连接的心跳方法和系统,分为终端和云服务器两个方面,通过终端采集最大心跳包周期并上传到云服务器,再由云服务器统计出最优心跳包周期;当终端处于某网络状态下,服务器下发对应的最优心跳包周期,以此作为初始心跳包周期,用于保活网络链路,这样能避免不必要的试探和浪费终端流量和电量。

其在说明书中第42段记载:当满足智能心跳包采集试探条件时,以当前网络心跳包周期再加上一步长作为试探周期,向服务器发送试探心跳包,再不断加大步长并发送试探心跳不,直至因为周期过长导致的发送心跳包无服务器相应的失败,这时以最近成功的试探周期作为最大心跳包周期。

该方案最大的缺陷在于,每次以一步长的形式提高心跳包发送周期,其无法迅速的获知nat(networkaddresstranslation,网络地址转换)的保活时间。



技术实现要素:

本发明的目的在于提供一种终端快速感知nat保活时间的方法、心跳包发送端和交互系统,该方法可以迅速的获知保活时间,同时,本发明还公开了涉及该方法的心跳包发送端和交互系统。

本发明的具体的技术方案为:一种终端快速感知nat保活时间的方法,所述的方法具体为:

心跳包发送端按照不断加大的试探周期向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳包发送端无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最长保活时间;

所述的试探周期按照指数级的方式增长;

所述的心跳包发送端为客户端,心跳响应端为服务器;或所述的心跳包发送端为服务器,心跳响应端为客户端。

在上述的终端快速感知nat保活时间的方法中,包括如下步骤:

步骤1:心跳包发送端以试探周期tk向心跳响应端发送的心跳包;所述的心跳响应端用于在接收到心跳包后向心跳包发送端反馈心跳响应;

步骤2:若心跳包发送端收到心跳响应则进行步骤1,若心跳包发送端没有接收到心跳响应则进行步骤3;

步骤3:若心跳包发送端在第n次发送心跳包后没有收到心跳响应,则以心跳包发送端第n-1次发送心跳包的试探周期tn-1为最长保活时间;

心跳包发送端第一次发送心跳包的试探周期为t1;第k次发送心跳包的试探周期为tk;

tn-1=xn-1*t1;x大于1,n≥k≥1。

在上述的终端快速感知nat保活时间的方法中,x=2。

在上述的终端快速感知nat保活时间的方法中,所述的步骤3之后还包括步骤4:

步骤4:心跳包发送端以最长保活时间tn-1为基础不断加大的试探周期向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳包发送端无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最优保活时间;

所述的步骤4中的试探周期按照线性增加的方式增长。

在上述的终端快速感知nat保活时间的方法中,所述的步骤4具体为:

步骤s41:心跳包发送端以试探周期tj向心跳响应端发送的心跳包;

步骤s42:若心跳包发送端收到心跳响应则进行步骤s41,若心跳包发送端没有接收到心跳响应则进行步骤s43;

步骤s43:若心跳包发送端在第m次发送心跳包后没有收到心跳响应,则以心跳包发送端第m-1次发送心跳包的试探周期tm-1为最优保活时间;

tj-tj-1=y,y为预设值;m>j>n;

当j=n+1时,tj=tn-1+y。

在上述的终端快速感知nat保活时间的方法中,y=1。

同时,本发明还公开了一种快速感知nat保活时间的心跳包发送端,包括如下模块:

心跳包发送模块:以试探周期tk向心跳响应端发送的心跳包;

心跳反应接收模块:用于接收心跳响应;所述的心跳响应由心跳响应端在接收到心跳包后向心跳反应接收模块发送;

控制模块:用于在心跳反应接收模块接收到心跳响应时,控制心跳包发送模块发送心跳包;所述的控制模块内预设有试探周期tk的增长规律为指数级增长;

最长保活时间确定模块:用于在心跳反应接收模块没有接收到心跳响应时,确定以心跳包发送模块第n-1次发送心跳包的试探周期tn-1为最长保活时间;

心跳包发送端第一次发送心跳包的试探周期为t1;第k次发送心跳包的试探周期为tk;

tn-1=xn-1*t1;x大于1,n≥k≥1。

在上述的快速感知nat保活时间的心跳包发送端中,还包括最优保活时间确定模块;

所述的最优保活时间确定模块用于在最长保活时间确定模块确定最长保活时间后,以最长保活时间tn-1为基础不断加大的试探周期通过心跳包发送模块向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳反应接收模块无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最优保活时间;

最优保活时间确定模块预设的试探周期的增长规律为线性增长。

在上述的快速感知nat保活时间的心跳包发送端中,所述的心跳包发送端为客户端或服务器。

此外,本发明还公开了一种快速感知nat保活时间的交互系统,包括客户端和服务器;

所述的客户端为如上所述的心跳包发送端;所述的服务器为与心跳包发送端配合的在接收到心跳包后向心跳反应接收模块发送心跳包的服务器;

或所述的服务器为如上所述的心跳包发送端;所述的客户端为与心跳包发送端配合的在接收到心跳包后向心跳反应接收模块发送心跳包的客户端。

与现有技术相比,本发明的有益效果在于:

本发明的客户端、服务器任选一个作为心跳包发送端且另外一个作为心跳响应端,在终端加入网络的时候,通过以指数级的试探周期对心跳包进行发送,可以试探得到最长保活时间。虽然该最长保活时间并不是最优化的保活时间,但是其能够以较快的时间确定一个较长的保活间隔。

作为优选的,如果要确定保活时间的上限,我们可以在杉树的最长保活时间的基础上以线性增加的方式提高保活时间及心跳包发送周期。这样可以确定最优保活时间。

附图说明

图1为本发明实施例1的流程方框图;

图2为本发明实施例2的结构方框图;

图3为本发明实施例3的结构方框图。

具体实施方式

下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。

实施例1

如图1所示,一种终端快速感知nat保活时间的方法,所述的方法具体为:

最长保活时间的确定:

心跳包发送端按照不断加大的试探周期向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳包发送端无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最长保活时间;

所述的试探周期按照指数级的方式增长;

所述的心跳包发送端为客户端,心跳响应端为服务器;或所述的心跳包发送端为服务器,心跳响应端为客户端。

具体来说,上述的方法包括如下步骤:

步骤1:心跳包发送端以试探周期tk向心跳响应端发送的心跳包;所述的心跳响应端用于在接收到心跳包后向心跳包发送端反馈心跳响应;

步骤2:若心跳包发送端收到心跳响应则进行步骤1,若心跳包发送端没有接收到心跳响应则进行步骤3;

步骤3:若心跳包发送端在第n次发送心跳包后没有收到心跳响应,则以心跳包发送端第n-1次发送心跳包的试探周期tn-1为最长保活时间;

心跳包发送端第一次发送心跳包的试探周期为t1;第k次发送心跳包的试探周期为tk;

tn-1=xn-1*t1;x大于1,n≥k≥1。

下面以x=2为例具体说明整个控制流程为:

step1:终端加入网络,心跳包发送端以试探周期t1发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

step2:心跳包发送端以试探周期t2(t2=2t1)发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

step3:心跳包发送端以试探周期t3(t3=2t2)发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

......

stepn:心跳包发送端以试探周期tn(tn=2n-1*t1)发送心跳包,心跳包发送端没有收到任何心跳响应;

这个时候心跳包发送端就知晓了最长保活时间,该最长保活时间为tn-1(tn-1=2n-2*t1)。

到此,心跳包发送端可以以该最长保活时间进行保活连接,其用时短,能和对端进行可靠的保活连接。

上述步骤1-3仅给出了最长保活时间的确定方法,实际上还可对保活时间进行进一步优化,该优化参考传统的保活时间确定方法,如cn201610414480.5中所述的内容。

具体来说,所述的进一步优化方法为:所述的步骤3之后还包括步骤4:

步骤4:心跳包发送端以最长保活时间tn-1为基础不断加大的试探周期向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳包发送端无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最优保活时间;

所述的步骤4中的试探周期按照线性增加的方式增长。

具体来说:所述的步骤4具体为:

步骤s41:心跳包发送端以试探周期tj向心跳响应端发送的心跳包;

步骤s42:若心跳包发送端收到心跳响应则进行步骤s41,若心跳包发送端没有接收到心跳响应则进行步骤s43;

步骤s43:若心跳包发送端在第m次发送心跳包后没有收到心跳响应,则以心跳包发送端第m-1次发送心跳包的试探周期tm-1为最优保活时间;

tj-tj-1=y,y为预设值;m>j>n;

当j=n+1时,tj=tn-1+y。

下面以y=1为例具体说明整个控制流程为:

step4-1:心跳包发送端以试探周期tj(tj=tn-1+1)发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

step4-2:心跳包发送端以试探周期tj+1(tj+1=tj+1)发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

step4-3:心跳包发送端以试探周期tj+2(tj+2=tj+1+1)发送心跳包,心跳响应端接收到心跳包后发送心跳响应至心跳包发送端;

......

stepm:心跳包发送端以试探周期tm(tm=tn-1+m-j)发送心跳包,心跳包发送端没有收到任何心跳响应;

这个时候心跳包发送端就知晓了最优保活时间,该最优保活时间为tm-1(tm-1=tn-1+m-j-1)。

本文的试探周期的计量单位可以为秒、毫秒等,根据实际情况可以灵活选择。

到此,心跳包发送端可以以该最优保活时间进行保活连接。

最长保活时间的确定方法和最优保活时间的确定方法进行组合,可以将最优保活时间的确定以最快的速度执行,其有效的降低了所用时长,且可靠。

实施例2

上述的实施例1的方法主要通过心跳包发送端执行,心跳包发送端可以为客户端,也可以为服务器。

在本实施例中,如图2所示,以心跳包发送端为客户端为例进行说明。

心跳包发送端为客户端,其具体包括如下模块:

心跳包发送模块11:以试探周期tk向心跳响应端发送的心跳包;

心跳反应接收模块12:用于接收心跳响应;所述的心跳响应由心跳响应端在接收到心跳包后向心跳反应接收模块12发送;

控制模块13:用于在心跳反应接收模块12接收到心跳响应时,控制心跳包发送模块11发送心跳包;所述的控制模块13内预设有试探周期tk的增长规律为指数级增长;

最长保活时间确定模块14:用于在心跳反应接收模块12没有接收到心跳响应时,确定以心跳包发送模块11第n-1次发送心跳包的试探周期tn-1为最长保活时间;

心跳包发送端第一次发送心跳包的试探周期为t1;第k次发送心跳包的试探周期为tk;

tn-1=xn-1*t1;x大于1,n≥k≥1。

最优保活时间确定模块15:用于在最长保活时间确定模块14确定最长保活时间后,以最长保活时间tn-1为基础不断加大的试探周期通过心跳包发送模块11向心跳响应端发送心跳包,直到因为心跳包发送周期过长导致心跳反应接收模块12无法接收到心跳响应端反馈的心跳响应;以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最优保活时间;

最优保活时间确定模块15预设的试探周期的增长规律为线性增长;

其工作过程中,当本客户端加入到网络时,需要和服务器建立最优的保护连接,其各模块之间的配合关系为:

控制模块13控制心跳包发送模块11开始以初始化的试探周期t1向心跳响应端(服务器)发送的心跳包;

心跳反应接收模块12会不断的接收心跳响应;

控制模块13会不断的监测心跳反应接收模块12是否接收到心跳响应,如果有,则控制心跳包发送模块11以呈指数级增长的心跳周期向心跳响应端(服务器)发送的心跳包;如果监测到反应接收模块没有在第n次接收到心跳响应,则控制最长保活时间确定模块14确定最长保活时间为tn-1=xn-1*t1;x大于1,n≥k≥1。

到此时,最优保活时间确定模块15控制心跳包发送模块11重新设定试探周期的规则,规则修改为试探周期以线性的形式增长,控制模块13控制心跳包发送模块11以新的规则发送心跳包并持续监测心跳反应接收模块12是否收到心跳响应,一旦心跳反应接收模块12没有收到心跳响应,则控制模块13以最近成功的试探周期作为心跳包发送端和心跳响应端之间保活连接的最优保活时间。

通过上述模块确定最长保活时间和最优保活时间,可以将最优保活时间的确定以最快的速度执行,其有效的降低了所用时长,且可靠。

实施例3

如图3所示,一种快速感知nat保活时间的交互系统,包括客户端1和服务器2;

所述的客户端1为实施例2所述;所述的服务器2为与客户端的在接收到心跳包后向心跳反应接收模块12发送心跳包的服务器2。

以上所述的仅为本发明的较佳实施例,凡在本发明的精神和原则范围内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1