CN109547293A - 心跳数据包发送方法 - Google Patents
心跳数据包发送方法 Download PDFInfo
- Publication number
- CN109547293A CN109547293A CN201811567166.6A CN201811567166A CN109547293A CN 109547293 A CN109547293 A CN 109547293A CN 201811567166 A CN201811567166 A CN 201811567166A CN 109547293 A CN109547293 A CN 109547293A
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- client
- heart beat
- beat cycle
- destination server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/103—Active monitoring, e.g. heartbeat, ping or trace-route with adaptive polling, i.e. dynamically adapting the polling rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
Abstract
本发明公开一种心跳数据包发送方法,包括:S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入S3;S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。
Description
技术领域
本发明涉及移动通信领域,特别是涉及一种基于udp(用户数据报协议)的心跳数据包发送方法。
背景技术
心跳多用于基于长连的通讯系统中,用于持续的通知后台服务器客户端依旧存活。心跳包就是双方所定义的一种用来通知对方存活的数据通讯结构。
周期性的发心跳包给服务器主要有以下几个原因:
1、通知服务器客户端存活状态,一旦服务器监测到在某段时间没有收到客户端发来的心跳包,服务器就会释放曾经为此客户端分配的所有资源,例如Socket连接。
2、定时的刷新NAT内外网IP映射表,以便防止NAT路由器移除映射表,导致客户端和服务器端的连接中断,特别是基于udp的服务,路由表更新非常频繁。
一个简单的实现就是定期的给服务器发送心跳包,但这种实现引出一个问题,就是周期时间间隔是多少为合适?
由于不同的网络拓扑结构的实现,NAT节点会分配到不同的网路路由当中,不同的NAT有不同的策略来处理映射表,一旦NAT发现某个映射表对应IP在某段时间内没有上行或下行数据,NAT就会移除此IP映射表,导致连接被中断。
另一个问题是以较短的时间间隔周期性地向服务器发送心跳包,会加大客户端尤其是移动设备的功耗和流量的消耗。
基于以上考虑设计一种智能心跳,可以根据不同的网络情况,自动调整发送心跳包的周期,以解决上述所提出的问题。
发明内容
本发明针对现有技术存在的问题和不足,提供一种新型的心跳数据包发送方法,用于解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供一种心跳数据包发送方法,其特点在于,其包括以下步骤:
S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;
S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入步骤S3;
S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;
S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。
较佳地,步骤S4之后包括以下步骤:
S5、一段时间后,在心跳周期最大值的基础上增加步长,继续探测心跳周期最大值,以适应Nat超时时间变长的情况。
较佳地,目标服务器收到心跳数据包后,将收到的心跳数据包的地址与已缓存的上个发送的心跳数据包的地址作比较,若地址改变,目标服务器立即做相应更新,并为客户端回复一个Nat变更数据包,若标识未改变,则向客户端返回一个针对该心跳数据包的确认数据包。
较佳地,在步骤S5中,客户端收到来自目标服务器的Nat变更数据包,则客户端取最近一次心跳周期最大值的一半的值作为基础,重新探测心跳周期最大值。
较佳地,若客户端连续三次心跳包均未得到目标服务器的回执,则客户端认为目标服务器已发生故障,客户端关闭socket连接。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明引入短心跳机制、自适应心跳机制和successHeart心跳机制,用于解决固定周期的心跳给客户端带来过多功耗和流量的消耗以及给服务器端带来的巨大访问压力的问题。
附图说明
图1为本发明较佳实施例的心跳数据包发送方法的流程框图。
图2为客户端发向目标服务器的心跳数据结构。
图3为服务端收到心跳数据后向客户端发送的回执数据,如果服务端检测到端口号改变,则将Nat字段值置为1,否则将其置为0。
图4为本发明客户端和目标服务器对心跳数据包处理的逻辑流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1-4所示,本实施例提供一种心跳数据包发送方法,其包括以下步骤。
客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址。
客户端启动心跳线程,并向目标服务器发送心跳数据包。
在用户通过客户端与目标服务器建立网络通信连接过程中,在客户端断开与目标服务器的通信之前,客户端为了告知目标服务器其为在线状态,通过向目标服务器发送心跳数据包,以确保通信连接的有效性。
客户端向目标服务器发送心跳数据包的目的在于与目标服务器保持长连接,至于心跳数据包中包含的具体内容没有特别的规定,不过,为了减轻目标服务器对心跳数据包的处理资源,心跳数据包一般都是很小的包,或者只包含包头的一个空包。本发明实施例对心跳数据包中包含的具体内容不作限定。
目标服务器收到来自客户端的心跳包后,相应地向客户端回执一个数据包。如图3所示,如果服务端检测到端口号改变,则将Nat字段值置为1,否则将其置为0。
现有技术中,客户端每隔固定时间间隔会向服务器发送一次心跳数据包请求,这样会增大客户端的功耗,也会增加服务器的访问负荷,影响服务器的响应速度。
为了解决上述问题,客户端在将心跳数据包发送给目标服务器时,引入短心跳机制和自适应心跳机制。
在具体实施时,客户端先用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,如果三次心跳交互都成功,则客户端进入自适应心跳状态,否则断开连接。
自适应心跳机制的核心在于探测心跳最大值,客户端在预设短心跳周期基础上增加步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至收到来自目标服务器的nat变更数据包,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,即successHeart,然后客户端以successHeart为周期发送心跳,进入稳定态。
取比最新的一个心跳成功值小一点的值作为心跳周期的最大值,是为了规避Nat超时的临界值。
处于稳定态的客户端将以successHeart为周期发送心跳,一段时间后,在successHeart基础上增加步长,继续探测心跳最大值,以适应nat超时时间变长的情况。
目标服务器收到心跳数据包后,将现有地址与已缓存的地址作比较,如果地址改变,目标服务器立即做相应更新,并为客户端回复一个Nat变更的数据包,如果地址未改变,则向客户端返回一个针对该心跳数据包的确认数据包。
如果客户端收到来自目标服务器端的Nat变更数据包,则客户端取最近一次successHeart周期一半的值作为基础,重新探测心跳周期最大值。
如果客户端连续三个心跳包都没有得到服务端的回执,则认为服务端已故障,客户端关闭socket连接。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (5)
1.一种心跳数据包发送方法,其特征在于,其包括以下步骤:
S1、客户端与目标服务器建立基于udp的socket连接,连接建立后,目标服务器缓存相应客户端的连接地址;
S2、客户端启动心跳线程,用预设短心跳周期为时间间隔向目标服务器发送三次心跳数据包,若三次心跳交互都成功,则进入步骤S3;
S3、客户端开始探测心跳周期最大值,客户端在预设短心跳周期基础上增加设定步长作为下一次发送心跳数据包的时间间隔,针对心跳周期递归增加其步长,直至心跳失败,然后取比最新的一个心跳成功值小一点的值作为心跳周期的最大值;自适应心跳计算状态;
S4、客户端以心跳周期最大值为周期发送心跳数据包,进入稳定态。
2.如权利要求1所述的心跳数据包发送方法,其特征在于,步骤S4之后包括以下步骤:
S5、一段时间后,在心跳周期最大值的基础上增加步长,继续探测心跳周期最大值,以适应Nat超时时间变长的情况。
3.如权利要求1所述的心跳数据包发送方法,其特征在于,目标服务器收到心跳数据包后,将收到的心跳数据包的地址与已缓存的上个发送的心跳数据包的地址作比较,若地址改变,目标服务器立即做相应更新,并为客户端回复一个Nat变更数据包,若标识未改变,则向客户端返回一个针对该心跳数据包的确认数据包。
4.如权利要求3所述的心跳数据包发送方法,其特征在于,在步骤S5中,客户端收到来自目标服务器的Nat变更数据包,则客户端取最近一次心跳周期最大值的一半的值作为基础,重新探测心跳周期最大值。
5.如权利要求1所述的心跳数据包发送方法,其特征在于,若客户端连续三次心跳包均未得到目标服务器的回执,则客户端认为目标服务器已发生故障,客户端关闭socket连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811567166.6A CN109547293A (zh) | 2018-12-20 | 2018-12-20 | 心跳数据包发送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811567166.6A CN109547293A (zh) | 2018-12-20 | 2018-12-20 | 心跳数据包发送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109547293A true CN109547293A (zh) | 2019-03-29 |
Family
ID=65856035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811567166.6A Pending CN109547293A (zh) | 2018-12-20 | 2018-12-20 | 心跳数据包发送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109547293A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788038A (zh) * | 2018-12-25 | 2019-05-21 | 上海数果科技有限公司 | 一种智能心跳方法 |
CN112422646A (zh) * | 2020-11-05 | 2021-02-26 | 杭州萤石软件有限公司 | 一种udp动态心跳的实现方法、装置及存储介质 |
CN114500550A (zh) * | 2021-12-31 | 2022-05-13 | 深圳市晨北科技有限公司 | 设备心跳间隔控制方法、装置、物联网设备及存储介质 |
CN115633081A (zh) * | 2022-10-13 | 2023-01-20 | 南京联创数字科技有限公司 | 一种基于Eureka心跳连接的优化方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106535A (zh) * | 2007-08-14 | 2008-01-16 | 华为技术有限公司 | 一种实现心跳机制的方法、服务器和系统 |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及系统 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
US20140143580A1 (en) * | 2012-11-16 | 2014-05-22 | Oracle International Corporation | Method and apparatus for synchronizing the time reference of a dynamically activated processor to the system time reference |
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN106416133A (zh) * | 2015-04-08 | 2017-02-15 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN107135518A (zh) * | 2017-06-09 | 2017-09-05 | 深圳市沃特沃德股份有限公司 | 维持心跳连接的方法、装置和终端设备 |
CN107197509A (zh) * | 2017-05-22 | 2017-09-22 | 深圳市沃特沃德股份有限公司 | 心跳连接方法和装置 |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
-
2018
- 2018-12-20 CN CN201811567166.6A patent/CN109547293A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106535A (zh) * | 2007-08-14 | 2008-01-16 | 华为技术有限公司 | 一种实现心跳机制的方法、服务器和系统 |
US20140143580A1 (en) * | 2012-11-16 | 2014-05-22 | Oracle International Corporation | Method and apparatus for synchronizing the time reference of a dynamically activated processor to the system time reference |
CN103139303A (zh) * | 2013-02-07 | 2013-06-05 | 网易(杭州)网络有限公司 | 一种用于保持连接的心跳方法、装置及系统 |
CN103685241A (zh) * | 2013-11-26 | 2014-03-26 | 中国科学院计算技术研究所 | 一种维持tcp长连接的自适应心跳方法及其系统 |
CN104144159A (zh) * | 2014-06-26 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 智能心跳保活方法及智能心跳保活系统 |
CN106416133A (zh) * | 2015-04-08 | 2017-02-15 | 华为技术有限公司 | 最优心跳周期的确定方法、装置和设备 |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
CN107197509A (zh) * | 2017-05-22 | 2017-09-22 | 深圳市沃特沃德股份有限公司 | 心跳连接方法和装置 |
CN107135518A (zh) * | 2017-06-09 | 2017-09-05 | 深圳市沃特沃德股份有限公司 | 维持心跳连接的方法、装置和终端设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788038A (zh) * | 2018-12-25 | 2019-05-21 | 上海数果科技有限公司 | 一种智能心跳方法 |
CN112422646A (zh) * | 2020-11-05 | 2021-02-26 | 杭州萤石软件有限公司 | 一种udp动态心跳的实现方法、装置及存储介质 |
CN114500550A (zh) * | 2021-12-31 | 2022-05-13 | 深圳市晨北科技有限公司 | 设备心跳间隔控制方法、装置、物联网设备及存储介质 |
CN115633081A (zh) * | 2022-10-13 | 2023-01-20 | 南京联创数字科技有限公司 | 一种基于Eureka心跳连接的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109547293A (zh) | 心跳数据包发送方法 | |
KR101678711B1 (ko) | 계층-2 도메인에 걸친 로드 밸런싱 | |
CN108769257B (zh) | 一种服务器切换方法及装置 | |
WO2016155300A1 (zh) | 无线终端设备的远程控制系统及远程控制方法 | |
CN105357046A (zh) | 一种用于软件定义网络sdn的网络信息探测的方法 | |
CN103685241A (zh) | 一种维持tcp长连接的自适应心跳方法及其系统 | |
EP2399370B1 (en) | Maximum transmission unit, MTU, size discovery method for data-link layers | |
WO2009082296A1 (en) | Method and arrangement to maintain a tcp connection | |
US10594844B2 (en) | Method and system for wireless network bilateral accelerated transmission | |
US20170214609A1 (en) | Forwarding method and forwarding device | |
EP2939401B1 (en) | Method for guaranteeing service continuity in a telecommunication network and system thereof | |
CN101699801A (zh) | 一种数据传输方法及传输数据的虚拟对等网络系统 | |
CN102624745B (zh) | 一种路径计算单元通信协议会话建立方法及装置 | |
CN107979592A (zh) | 一种发送业务请求消息的方法及装置 | |
CN109788038A (zh) | 一种智能心跳方法 | |
US20220329512A1 (en) | Method and Apparatus for Updating Route Information, Computer Device, and Storage Medium | |
CN107623752B (zh) | 基于链路层的网络管理方法和装置 | |
CN106571973A (zh) | 心跳包超时管理方法及系统 | |
CN102064956B (zh) | 老化时间的调整方法及系统、调制解调器 | |
CN111901245A (zh) | 一种iscsi多路径管理系统、方法、设备及存储介质 | |
CN104243591B (zh) | 同步安全集群会话信息的方法及装置 | |
JP2011223295A (ja) | フレーム転送装置及びフレーム転送方法 | |
CN104104606B (zh) | 一种调制解调器及其实现igmp报文版本自适应的方法 | |
KR101749203B1 (ko) | 기지국의 자율성을 위한 방법, 기저대역 유닛, 기지국, 및 클라우드 기지국 시스템 | |
CN101945020A (zh) | 会话监控处理方法和监控设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190329 |