一种基于客户端检测可靠连接是否有效的方法

文档序号:7747692阅读:103来源:国知局
专利名称:一种基于客户端检测可靠连接是否有效的方法
技术领域
本发明属于网络信息数据传输通信技术领域,尤其是可靠连接上双方保活探测或检测的方法。
背景技术
网络信息数据传输通信技术主要试图使各种计算机能相互的通信和数据的共享。 如今比较著名的传输协议是TCP/IP协议。TCP传输协议是基于IP协议的一种可靠的传输通信协议。TCP协议本身提供了一种保活的选项,通过设置该选项协议本身就可以探测连接是否还有效,但其有自身的缺陷,第一默认的间隔值为两小时;第二所有的连接均使用相同的间隔值。本发明基于可靠连接的基础上,自行设计了一套探测保活的机制,它解决了 TCP 保活选项的缺陷,并且还可避免和改善传统方法带来的问题。

发明内容
本发明的目的在于提供一种基于客户端探测可靠连接是否有效的方法,它是基于可靠连接的,它提供更为灵活多样的方式。1、本发明至少需要满足以下要求要求1、定时发送探测报文的间隔值,既客户端应该间隔多久发送一个探测报文。 此间隔值必须只能由中心端指定。要求2、中心端除了反馈间隔值外,还负责计算RTT和KLT。要求3、中心端为每个连接(客户端)维护一个定时器。要求4、根据要求1获得的间隔值初始化间隔定时器,只有在间隔定时器超时后客户端才能发送探测报文,并且在发送探测报文后,接收确认探测前不能进行其他的发送操作。要求5、客户端在间隔定时器超时前产生的发送操作必须重新初始化间隔定时器。要求6、中心端每隔Ims递减各个连接(客户端)的定时器(KLT),当定时器等于 0时触发连接失效事件。要求7、中心端接到一个非探测报文后重新初始化定时器(KLT)。要求8、中心端在定时器[KLT]超时前接到探测报文后,初始化[KLT]并返回一个确认,客户端接收此确认并初始化间隔定时器,再向中心端返回一个确认,中心端又再次重新初始化[KLT]。要求9、根据要求4客户端发送探测报文后,在3次间隔时间后未接到中心端返回的探测确认则认为超时。2、本发明至少包括以下步骤步骤1、客户端与中心端完成一个可靠的连接。步骤2、中心端返回客户端[间隔值]并插入当前时间[tieml]。
步骤3、客户端获取[间隔值]并立即返回确认。步骤4、中心端接收确认,取出插入的[timel]并取当前时间[time2]计算[RTT][RTT] = [time2]_ [timel]步骤5、中心端计算[KLT][T] = IOOms/总工作线程数(四舍五入取整数)如果[T]等于0 则[T] = 5ms[KLT]=[间隔值]+ [RTT]*0. 75+[Τ]步骤6、客户端在间隔定时器超时前,产生一次发送操作,重新初始化间隔定时器。步骤7、中心端接收一份非探测报文,重新初始化[KLT]定时器。步骤8、客户端间隔定时器超时,发送一个探测报文。步骤9、中心端接收探测报文,第一次初始化[KLT]并向客户端返回探测确认报文。步骤10、客户端接收由中心端返回的探测确认报文,并初始化间隔定时器最后向中心端返回最后确认。步骤11、中心端接收最后确认,第二次初始化[KLT]。本发明相比较传统的做法具有更高的灵活性。它允许为每个不同的连接分配不同或相同的[间隔值]。通过自行获取连接的RTT计算出每个连接最合理的超时范围。


图1是中心端定时发送探测报文的间隔值,既客户端应该间隔多久发送一个探测报文。此间隔值必须只能由中心端指定。中心端除了反馈间隔值外,还负责计算RTT和KLT。 中心端为每个连接(客户端)维护一个定时器。图2是客户端发送探测报文,检测网络连接是否存在。客户端在间隔定时器超时前,产生一次发送操作,重新初始化间隔定时器。中心端接收一份非探测报文,重新初始化 [KLT]定时器。客户端间隔定时器超时,发送一个探测报文。中心端接收探测报文,第一次初始化[KLT]并向客户端返回探测确认报文。客户端接收由中心端返回的探测确认报文,并初始化间隔定时器最后向中心端返回最后确认。中心端接收最后确认,第二次初始化 [KLT]。
具体实施方式
下面通过一个客户端的设计对本发明作进一步详细说明。环境操作系统ubuntu-9. 10 (linux-2. 6. 28)可靠连接tcp第一步、创建TCP套接口,并连接至服务器。第二步、read (阻塞)套接口,直到中心端发送[间隔值]。第三步、获取[间隔值],并往套接口 write ( “ok”)。第四步、利用系统调用alarm([间隔值])设置间隔定时器。第五步、在定时器超时前的套接口写操作会触发alarm([间隔值])的重新调用(初始化间隔定时器)。第六步、间隔定时器超时,往套接口写一个探测报文” keeplive",并调用 alarm([间隔值]*2),设置定时器为间隔值的两倍,并阻止所有的写操作,利用循环调用 read实现。第七步、当间隔定时器超时前读到中心端返回的” ke印liveok”报文则跳出read 循环,并初始化间隔定时器alarm([间隔值]),并向中心端write ( “ok”)。否则当两倍于间隔值的定时器超时后就可认为此连接已失效。
权利要求
1.一种基于客户端检测可靠连接是否还有效的方法,其特征在于,a探测报文的发送在客户端上完成;b探测报文的发送间隔值由中心端确认;c中心端为每个连接(客户端) 维护一个定时器(KLT) ;d定时器的单位为毫秒;e中心端每ms递减各个连接(客户端)的定时器;f当客户端在间隔定时器超时前发生一次发送操作则重新初始化间隔定时器;g当中心端在KLT定时器超时前接到非探测报文的任意数据包后初始化KLT定时器。
2.一种基于客户端检测可靠连接是否还有效的方法,其特征在于,该方法包括以下要求要求1、定时发送探测报文的间隔值,既客户端应该间隔多久发送一个探测报文。此间隔值必须只能由中心端指定。要求2、中心端除了反馈间隔值外,还负责计算RTT和KLT。 要求3、中心端为每个连接(客户端)维护一个定时器。要求4、根据要求1获得的间隔值初始化间隔定时器,只有在间隔定时器超时后客户端才能发送探测报文,并且在发送探测报文后,接收确认探测前不能进行其他的发送操作。 要求5、客户端在间隔定时器超时前产生的发送操作必须重新初始化间隔定时器。 要求6、中心端每隔Ims递减各个连接(客户端)的定时器(KLT),当定时器等于0时触发连接失效事件。要求7、中心端接到一个非探测报文后重新初始化定时器(KLT)。 要求8、中心端在定时器[KLT]超时前接到探测报文后,初始化[KLT]并返回一个确认, 客户端接收此确认并初始化间隔定时器,再向中心端返回一个确认,中心端又再次重新初始化[KLT]。要求9、根据要求4客户端发送探测报文后,在3次间隔时间后未接到中心端返回的探测确认则认为超时。
3.一种基于客户端检测可靠连接是否还有效的方法,其特征在于,该方法包括以下步骤步骤1、客户端与中心端完成一个可靠的连接。步骤2、中心端返回客户端[间隔值]并插入当前时间[tieml]。步骤3、客户端获取[间隔值]并立即返回确认。步骤4、中心端接收确认,取出插入的[timel]并取当前时间[time2]计算[RTT][RTT] = [time2]-[timel]步骤5、中心端计算[KLT][T] = IOOms/总工作线程数(四舍五入取整数)如果[T]等于0则[T] = 5ms[KLT]=[间隔值]+ [RTT] *0. 75+[Τ]步骤6、客户端在间隔定时器超时前,产生一次发送操作,重新初始化间隔定时器。 步骤7、中心端接收一份非探测报文,重新初始化[KLT]定时器。 步骤8、客户端间隔定时器超时,发送一个探测报文。步骤9、中心端接收探测报文,第一次初始化[KLT]并向客户端返回探测确认报文。 步骤10、客户端接收由中心端返回的探测确认报文,并初始化间隔定时器最后向中心端返回最后确认。步骤11、中心端接收最后确认,第二次初始化[KLT]。
全文摘要
本发明公开了一种基于客户端检测可靠连接是否还有效的方法。一般传统的做法是a.中心端向已连接的客户端发送一个探测报文并启动定时器;b.如在定时器超时前对方回复确认报文那么此连接还有效否则反之。在此模式中中心端基本承担了所有的操作,假如中心端出现异常导致系统崩溃那么客户端将有可能永远无法获知连接已经失效。本发明通过把发送探测报文的操作转移至客户端上,以此来分散中心端的负担并解决了中心端异常崩溃后客户端永远无法获知连接已失效的情况,其大致步骤可分为a.客户端从中心端获取间隔值;b.中心端递减连接定时器;c.客户端间隔值定时器超时发送探测报文;d.中心端随时检测定时器状态;e.中心端回复探测确认报文。
文档编号H04L12/26GK102238043SQ201010162320
公开日2011年11月9日 申请日期2010年5月5日 优先权日2010年5月5日
发明者杨岐山, 皇甫少辉 申请人:东方宇阳信息科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1