CN101106535B - 一种实现心跳机制的方法、服务器和系统 - Google Patents
一种实现心跳机制的方法、服务器和系统 Download PDFInfo
- Publication number
- CN101106535B CN101106535B CN2007101404695A CN200710140469A CN101106535B CN 101106535 B CN101106535 B CN 101106535B CN 2007101404695 A CN2007101404695 A CN 2007101404695A CN 200710140469 A CN200710140469 A CN 200710140469A CN 101106535 B CN101106535 B CN 101106535B
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- client
- server end
- response message
- heartbeat request
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种实现心跳机制的方法,包括步骤:服务器端根据收到的客户端依据登录应答信息发送的心跳请求消息,判断是否需要进行客户端识别,是则进行客户端识别,否则,返回心跳应答消息;识别通过的,返回心跳应答消息。还公开了一种实现心跳机制的服务器,包括:登录应答信息返回单元,用于返回登录应答信息;客户端识别判断单元,用于判断是否需要进行客户端识别,是则指示客户端识别单元进行客户端识别;客户端识别单元,用于根据心跳请求消息进行客户端识别;心跳请求应答单元,用于生成心跳应答消息。还公开了一种实现心跳机制的系统,包括客户端和服务器端。利用本发明,可以实现对客户端进行有选择的识别。
Description
技术领域
本发明涉及计算机网络技术领域,特别是涉及一种实现心跳机制的方法、服务器端和系统。
背景技术
随着网络技术的发展,对于客户端和服务器端的连接有了新的要求。于是,各种基于客户端-服务器端模式的技术方案就不断涌现。客户端在登录到服务器端后,为了:1、服务器端和客户端相互能够知道对方当时的状态,确定对方是否能够接收和处理消息;2、服务器端能正确的定位到客户端的地址,向客户端发送消息。这就需要在客户端与服务器端之间保持连接。
现有技术中用于实现客户端与服务器端之间心跳连接的方法中,有一种基于UDP(User Datagram Protocol,用户数据报协议)协议的网络心跳监控方法,该方法包括以下步骤:
(1)网络终端设备每隔一定时间将自身的状态信息进行收集并进行压缩打包处理,然后使用UDP协议将UDP心跳数据包通过网络发送到网络地址转换服务器上;
(2)网络地址转换服务器将网络终端设备发送的UDP心跳数据包信息进行地址转换处理,即将网络终端设备的IP地址和端口转换为网络地址转换服务器的IP地址和端口,再把该UDP心跳数据包信息通过网络转发到中央心跳服务器上;
(3)中央心跳服务器在接收到相应的UDP心跳数据包信息之后,将消息通过网络转发给心跳管理器;
(4)心跳管理器对该UDP心跳数据包信息进行解压验证处理,然后对相应信息进行格式翻译处理;
(5)如果信息格式不正确,则心跳管理器丢弃当前UDP心跳数据包,并向客户端系统发送UDP心跳数据包信息重发要求的反馈信息UDP数据包;
(6)如果信息格式正确,则将相关记录信息转发至中央数据库服务器中写入数据库;
(7)中央任务管理器根据中央数据库服务器中写入的相关记录信息进行向客户端系统发送相应反馈信息UDP心跳数据包的处理;
(8)网络地址转换服务器通过网络接收到中央服务器系统的反馈信息UDP数据包,对其进行反向地址转换处理,即将网络地址转换服务器的IP(Internet Protocol,互联网协议)地址和端口转换为网络终端设备的IP地址和端口;
(9)网络地址转换服务器将反馈信息UDP数据包发送给相应的网络终端设备;
(10)网络终端设备根据该反馈信息UDP数据包进行相应的后续处理。
在现有的技术方案中,客户端登录后,建立了客户端账号与地址信息的对应关系。每一次心跳消息交互都需要网络终端设备每隔一定时间将自身的状态信息进行收集后使用UDP协议将UDP心跳数据包通过网络发送到网络地址转换服务器上;网络地址转换服务器将UDP心跳数据包信息进行地址转换处理后,将心跳数据包转发到中央心跳服务器上;对于经过检查合格的心跳数据包,写入相关的记录信息;检查不合格的,丢弃当前UDP心跳数据包;中央任务管理器根据相关记录信息进行向客户端系统发送相应反馈信息UDP心跳数据包的处理,网络地址转换服务器将UDP数据包发送给相应的网络终端设备。
所以,客户端每次HTTP登录后,服务器端根据所述客户端的相关记录信息中的账号与地址信息的对应关系,在所述客户端账号对应的IP地址和端口号上完成心跳数据包发送、接收,即心跳连接的交互。但是,在现有技术中,服务器端对每次心跳请求消息都是依照上述流程进行的。并没有提供对心跳消息进行有目的的客户端识别的技术方案,在网络安全环境日益恶化,网络上各种攻击破坏行为越来越猖獗,特别是经由客户端对网络服务器进行攻击而严重危害网络安全的事情屡见不鲜。所以有必要提供能够提供心跳交互安全性的技术方案。
发明内容
本发明一个或多个实施例的目的在于提供一种实现心跳机制的方法、服务器端及系统,以解决上述不能对心跳请求消息进行有目的的客户端识别的技术问题。
为解决上述问题,本发明实施例提供了如下技术方案:
一种实现心跳机制的方法,该方法包括步骤:
服务器端在客户端登录成功后,返回登录应答信息;
所述服务器端根据收到的所述客户端依据登录应答信息发送的心跳请求消息,判断是否需要进行客户端识别,如果是,进行客户端识别,否则,返回心跳应答消息,所述判断是否需要进行客户端识别包括判断是否为首次心跳请求消息或判断客户端地址信息是否改变或判断客户端地址是否未登记;
识别通过的,返回心跳应答消息。
一种实现心跳机制的服务器,该服务器包括:
登录应答信息返回单元,用于:在客户端登录成功后,返回登录应答信息;
客户端识别判断单元,用于:判断是否需要进行客户端识别,如果是,则生成识别指令,否则,生成应答指令,所述客户端识别判断单元具体为地址信息判断单元,用于收到心跳请求消息后,判断客户端的地址信息是否改变或未登记,如果是,生成识别指令,否则,生成应答指令;或,所述客户端识别判断单元具体为首次心跳请求判断单元,用于判断是否为客户端的首次心跳请求,如果是,生成识别指令,否则,生成应答指令;
客户端识别单元,用于:
收到所述识别指令后,根据心跳请求消息进行客户端识别,对于识别通过的,生成应答指令;
心跳请求应答单元,用于根据所述应答指令生成心跳应答消息。
一种实现心跳机制的系统,该系统包括:
客户端和服务器端,所述服务器端用于:服务器端在客户端登录成功后,返回登录应答信息,判断是否需要进行客户端识别,如果是,根据客户端的心跳请求消息进行客户端识别,否则,返回心跳应答消息,所述判断是否需要进行客户端识别包括判断是否为首次心跳请求消息或判断客户端地址信息是否改变或判断客户端地址是否未登记;
所述客户端识别通过的,返回心跳应答消息;
所述客户端用于:根据所述登录应答信息或心跳应答消息,发送心跳请求消息。
可见,在本发明的实施例中,服务器端在客户端完成HTTP登录后,返回登录应答信息;客户端根据所述登录应答信息,发送心跳请求消息;所述服务器端判断是否需要进行客户端识别,如果是,则进行客户端识别,否则,返回心跳应答消息,所述识别通过的,返回心跳应答消息。所以,利用本发明的实施例可以实现对于HTTP登录成功后的对于客户端进行有目的、有选择的识别,在此基础上实现与客户端更安全的心跳连接。现在的网络环境日益恶化,各式各样的恶意攻击导出不穷。特别是基于客户端实现对于网络服务器攻击的行为,危害更大。通过本发明的实施例提供的技术方案,可以实现对于心跳交互过程的有目的的客户端识别,这会大大提高系统的安全性,减少潜在的隐患,而且能够实现网络安全和效率的有机统一,具备广阔的市场应用前景。
附图说明
图1所示是本发明的方法的第一个实施例的流程图;
图2所示是本发明的方法的第二个实施例的流程图;
图3所示是本发明的方法的第三个实施例的信令流程图;
图4所示是本发明的方法的第四个实施例的流程图;
图5所示是本发明的方法的第五个实施例的流程图;
图6所示是本发明的服务器的第一个实施例的框图;
图7所示是本发明的服务器的第二个实施例的框图;
图8所示是本发明的服务器的第三个实施例的框图;
图9所示是本发明的服务器的第四个实施例的框图;
图10所示是本发明的系统的一个实施例的框图;
图11所示是本发明的服务器端一种处理流程图。
具体实施方式
下面结合附图对本发明实施例的具体实施方式做进一步的详细阐述。
如图1所示,是本发明的方法的第一个实施例的流程图,包括步骤:
S101、服务器端收到客户端的登录请求,经过验证成功的,向所述客户端返回登录应答信息,登录应答信息中含有心跳间隔;
S102、所述客户端根据所述登录应答信息,依照规定的心跳间隔,发送心跳请求消息;
S103、所述服务器端根据所述心跳请求消息,判断是否需要进行客户端识别,如果是,进入步骤S104,否则,进入步骤S105;
S104、所述服务器端进行客户端识别,识别通过的,进入步骤S105,否则,结束流程;
S105、所述服务器端返回心跳应答消息。
利用本发明的实施例,可以实现对于客户端进行有选择的识别,提高了网络连接的安全性。
其中,在上一实施例中,可以在判断客户端地址信息改变或客户端地址信息未登记时,也可以在判断客户端发送首次心跳请求消息时,对所述客户端进行客户端识别。
其中,所述客户端识别的方式可以是通过对客户端发送的心跳请求消息进行心跳请求消息鉴权来完成。心跳请求消息鉴权的方式在以下的实施例中有详细的说明。
如图2所示,是本发明的方法的第二个实施例的流程图,本实施例是在实施例一的基础上,对于地址信息变化或未登记的客户端,优选进行客户端识别的方案。
包括步骤:
S201、客户端向服务器端发送心跳请求消息;
S202、服务器端判断客户端的地址信息是否改变或未登记,地址信息改变包括所述客户端的IP地址改变和/或端口号改变等情况,地址信息未登记是指所述客户端的地址信息没有登记在服务器端上。如果所述地址信息没有改变或已登记的,进入步骤S203,否则,进入步骤S204;
S203、向所述客户端返回心跳应答消息,如果所述地址信息未改变或已登记的,表明所述客户端仍然在原地址保持连接,只需要向所述客户端返回心跳应答UDP消息,此时不再需要再进入后续的识别步骤,所述客户端根据收到的心跳应答UDP消息的要求,继续进行心跳请求消息的发送,与所述服务器端维持心跳连接;
S204、所述服务器端对所述客户端进行识别,识别未通过的,结束流程,识别通过的,进入步骤S205;
S205、向所述客户端返回心跳应答消息,所述服务器端与新的地址信息表示的所述客户端之间维持心跳连接。
通过以上的识别过程,确认了更改地址信息后的所述客户端的身份。对于通过识别的所述客户端,经由新的IP地址或端口号,所述服务器端向所述客户端返回心跳应答消息。使得通过识别的客户端与服务器端维持了心跳连接,而勿需进行二次HTTP登录。
其中,在本发明的第一个实施例的基础上,通过心跳请求消息鉴权的方式对客户端进行识别,对所述客户端进行识别具体为:
所述服务器端对心跳请求消息进行鉴权。
其中,在前述实施例的基础上,可以增加对客户端超时的处理步骤,该方法还包括步骤:
所述服务器端记录所述客户端发起所述心跳请求消息的时间,所述客户端会依照心跳间隔,定期向所述服务器端发起心跳请求消息;
如果在预设的客户端心跳超时时间内,所述客户端没有再次发起所述心跳请求消息,关闭与所述客户端的连接。
在所述心跳超时时间内,所述服务器端没有收到所述客户端发起的第二次心跳请求消息,表明所述客户端的所述心跳请求消息已经超时,此时删除服务器端记录的所述客户端发起心跳请求时间,关闭与所述客户端的连接。利用该技术方案,可以实现对在服务器端为客户端设置一个心跳超时时间,在客户端心跳请求超时的情况下,关闭与其连接,节约服务器端资源。
其中,在前述各个实施例的基础上,可以增加对服务器端超时的处理步骤,该方法还包括步骤:
如果在预设的服务器端心跳超时时间内,所述客户端没有再次收到所述服务器端的所述心跳应答UDP消息,关闭与所述服务器端的连接。
在上述技术方案中,所述客户端根据从所述服务器端下载的心跳间隔,定期向所述服务器端发送心跳请求消息,并接收所述服务器端的所述心跳应答UDP消息。所述客户端设置所述服务器端的心跳超时时间,当所述客户端收到所述心跳应答UDP消息后,开始计时;如果在所述服务器端的心跳超时时间内,所述客户端没有再次收到所述服务器端返回的心跳应答UDP消息,则认为与服务器的连接失效,需要进行注销处理,关闭与所述服务器端的连接。利用该技术方案,可以实现对服务器设置一个心跳超时时间,在服务器端超时的情况下,关闭与其连接,节约客户端资源。
在本发明的其他实施例中,可以对于前述实施例中的鉴权步骤进一步采用其他的方式。下面结合附图,详细说明本发明的实施例。
如图3所示,是本发明的方法的第三个实施例的流程图,本实施例通过对首次心跳请求消息进行鉴权,通过鉴权的则不再进行鉴权,节约了系统资源,提高了网络效率。包括步骤:
S301、客户端向服务器端发出HTTP(Hypertext Transfer Protocol,超级文本传送协议)登录请求,登录请求中携带所述客户端的账号和鉴权信息;
S302、所述服务器端对所述登录请求进行HTTP登录鉴权,如果鉴权通过的,依现有技术的要求,登记所述账号的地址信息,如IP地址和端口号等,进入步骤S303;鉴权未通过的,结束流程。
S303、所述服务器端生成随机数R1,所述随机数R1是与所述客户端账号相对应的;
S304、所述服务器端通过HTTP消息向所述客户端返回登录信息,所述登录信息包括心跳间隔T、所述随机数R1;
S305、所述客户端使用所述随机数R1对账号和密码进行加密,得到加密字串Key1;
S306、所述客户端向所述服务器端发起心跳请求UDP消息,所述消息携带账号和加密字串Key1;
S307、所述服务器端对所述心跳请求UDP消息进行鉴权,鉴权依据的是账号、加密字串Key1以及随机数R1之间的对应关系,如果鉴权通过,进入步骤S308,鉴权未通过的,结束流程;
S308、所述服务器端登记所述心跳请求UDP消息的源IP地址和端口号,并给客户端返回心跳应答UDP消息;
S309、所述客户端根据所述心跳应答UDP消息,获得心跳间隔T,在下一个心跳间隔T到达时,发送一次携带账号的心跳请求UDP消息;
S310、所述服务器端收到所述心跳请求UDP消息后,判断所述心跳请求消息的来源地址信息,如IP地址和端口等,是否与所述账号登记的IP地址和端口号匹配,如果是,则进入步骤S311;如果否,进入步骤S312;
S311、所述服务器端返回心跳应答UDP消息,并更新最后收到的心跳请求的时间,进入步骤S309;
S312、所述服务器端登记所述心跳请求UDP消息的来源地址信息,进入步骤S303。
利用本实施例的方法,通过对于首次心跳请求UDP消息的进行鉴权,根据鉴权结果,直接维持客户端与服务器端的心跳连接,或者是进行再次心跳请求UDP消息鉴权,通过心跳请求鉴权的客户端,才能维持与服务器端的心跳连接。实现了对地址信息改变或未登记的客户端免二次HTTP登录情况下维持与服务器的心跳连接,节约了有限的资源。从而实现了网络连接的安全性与时效性的有机统一。
如图4所示,是本发明的方法的第四个实施例的信令流程图,用于实现对于未登记地址信息的客户端的心跳连接的建立,包括步骤:
S401、客户端向服务器端发出HTTP登录请求,登录请求中携带所述客户端的账号和鉴权信息;
S402、所述服务器端对所述登录请求进行鉴权,如果鉴权通过的,依现有技术的要求,登记所述账号的地址信息,如IP地址和端口号等,进入步骤S403;鉴权未通过的,结束流程。
S403、所述服务器端通过HTTP消息向客户端返回登录信息,所述登录信息包括心跳间隔T;
S404、所述客户端根据收到的所述心跳间隔T,在所述间隔T时间到达时,向所述服务器端发送一次携带所述账号的心跳请求UDP消息;
S405、所述服务器端根据所述账号判断所述账号对应的IP地址和端口号是否登记,如果登记,进入步骤S406;如果没有登记,进入步骤S407;
S406、所述服务器端返回心跳应答UDP消息,进入步骤S404;
S407、所述服务器端生成随机数R1,所述服务器端通过心跳应答UDP消息将所述随机数R1返回给所述客户端,带有所述随机数R1的心跳应答UDP消息表明需要对所述客户端进行心跳鉴权;
S408、所述客户端使用返回的所述随机数R1对账号和密码进行加密,得到加密字串Key1;
S409、所述客户端发起带鉴权的心跳请求UDP消息登录请求,所述心跳请求UDP消息携带账号、加密字串Key1;
S410、所述服务器端通过所述账号找到对应的随机数,根据所述账号和Key1中的随机数对所述心跳请求UDP消息进行鉴权,如果鉴权通过,进入步骤S411;
S411、登记所述心跳请求UDP消息的源IP地址和端口号,并给所述客户端返回心跳应答UDP消息;
S412、距上一次发送心跳请求UDP消息T时间后,所述客户端再次发送所述携带账号的心跳请求UDP消息;
S413、所述服务器端收到所述携带账号的心跳请求UDP消息后,判断所述携带账号的心跳请求UDP消息的来源IP地址和端口是否与所述账号登记的IP地址和端口号匹配,如果是,进入步骤S414,如果否,结束流程;
S414、向所述客户端返回心跳应答UDP消息,结束流程。
利用本发明的本实施例的方法,可以实现对于地址信息未登记的客户端,在通过HTTP登录后,与服务器端建立心跳连接。
进一步地,对第三个实施例可以进行以下优化:在步骤S413中,如果判断结果为否的,不结束流程,而是进入步骤S407,进入心跳请求鉴权流程。本实施例可以实现对于所述客户端未登记地址信息,如IP地址和端口号,安全实现心跳连接的基础之上,进一步实现对于所述客户端已登记地址信息改变的情况下的安全登录,同时也避免了因改变地址信息导致的二次登录的问题。
如图5所示,是本发明的方法的第五个实施例的流程图。在本发明的第二个实施例的基础上,针对已登录客户端的地址信息改变,如下列情况:已登录的客户端更改IP地址和/或端口号时,或者同一账号的客户端登录后又在其他IP地址和/或端口号上登录,利用本发明的方法的核心思想,可以得到本发明的方法第五个实施例。在本实施例中,客户端在某个IP地址,例如192.168.0.1,登录后,与服务器端通过心跳消息交互,维持连接,包括步骤:
S501、同账号的所述客户端在一个新的IP地址登录,如192.168.0.2,或者所述客户端的IP地址更新为192.168.0.2后,发送心跳请求UDP消息,所述心跳请求UDP消息带有所述客户端的账号;
S502、所述服务器端根据所述账号判断对应的IP地址和端口号,与所述账号已登记的IP地址和端口号相比较,是否一致,如果不一致的,进入步骤S504,如果一致的,进入步骤S503;
S503、向所述客户端返回心跳应答UDP消息;
S504、所述服务器端生成随机数R1,并通过心跳应答UDP消息将所述随机数R1返回给所述客户端,带有所述R1的心跳应答UDP消息表明需要对所述客户端进行心跳鉴权;
S505、所述客户端使用返回的所述随机数R1对账号和密码进行加密,得到加密字串Key1;
S506、所述客户端发起带鉴权的心跳请求UDP消息登录请求,所述心跳请求UDP消息携带账号、加密字串Key1;
S507、所述服务器端通过账号和Key1中的随机数对所述心跳请求UDP消息进行鉴权,如果鉴权通过的,进入步骤S508,如果鉴权未通过的,结束流程;
S508、登记所述心跳请求UDP消息的源IP地址和端口号,并给所述客户端返回心跳应答UDP消息;
S509、所述服务器端向原来的IP地址和端口号发送强制注销请求,要求将原来的IP地址和端口号上的客户端注销;
S510、所述服务器端与所述客户端在通过鉴权的心跳请求消息的源IP地址上依心跳技术维持心跳交互。
进一步地,在上述各个实施例的基础上,通过附加判断客户端是否连接失败的技术方案,用于处理服务器端超时,包括步骤:
S515、所述服务器端更新最后收到所述心跳请求UDP消息的时间,更新后的所述心跳请求UDP消息的时间就是所述客户端的最后一次心跳请求的时间;
S516、所述服务器端设置所述客户端的心跳超时时间;
S517、所述服务器端定时检查所有建立连接的客户端记录,判断客户端当前心跳请求时间与客户端最后一次心跳时间的时间差是否大于所述客户端的心跳超时时间,如果是,进入步骤S518。
S518、认为客户端连接失败,所述服务器端删除所述客户端记录。
进一步地,在前述的各个实施例的基础上,通过增加在客户端上判断服务器端是否超时的步骤,包括步骤:
S519、所述客户端设置所述服务器端的心跳超时时间;
S520、判断所述客户端收到返回的所述心跳应答UDP消息的时间间隔是否大于所述服务器端的心跳超时时间,如果是,进入步骤S521;如果否,继续监视是否收到所述服务器端返回的所述心跳应答UDP消息;
S521、所述客户端收到返回的所述心跳应答UDP消息的时间间隔大于所述服务器端的心跳超时时间的,则认为与所述服务器端的连接失败,注销与服务器端的连接。
下面结合附图,介绍本发明的服务器的实施例。
如图6所示,是本发明的实现心跳机制的服务器端的第一个实施例,该服务器包括:
登录应答信息返回单元601,用于:在客户端登录成功后,向客户端返回登录应答信息,客户端根据所述登录应答信息发送心跳请求消息;
客户端识别判断单元602,用于:判断是否需要进行客户端识别,如果是,则生成识别指令,用以指示客户端识别单元603进行客户端识别,否则,生成应答指令;
客户端识别单元603,用于:
收到所述识别指令后,根据所述心跳请求消息进行客户端识别,对于识别通过的,生成应答指令,对于识别未通过的,不予处理;
心跳请求应答单元604,用于根据所述应答指令生成心跳应答消息。
其中,如图7所示,是本发明的实现心跳机制的服务器的第二个实施例,是在上一实施例的基础上,可以使用地址信息判断单元代替客户端识别判断单元602进行是否需要进行客户端识别判断,用于在判断地址信息变化或未登记时,进行客户端识别。所述服务器还包括:
地址信息判断单元701,用于:
收到客户端的心跳请求消息后,判断客户端的地址信息是否改变或未登记,如果是,生成识别指令,以指示客户端识别单元进行客户端识别,否则,生成应答指令,以指示心跳请求应答单元返回心跳应答消息。
其中,在第二个实施例的基础上,还可以增加首次心跳请求判断单元,用于对首次心跳请求进行客户端识别。所述服务器包括:
首次心跳请求判断单元,用于判断是否为客户端的首次心跳请求,如果是,生成识别指令,以指示客户端识别单元进行客户端识别,否则,生成应答指令,以指示心跳请求应答单元返回心跳应答消息。
首次心跳请求判断单元可以与地址信息判断单元共同存在或择一存在。
其中,如图8所示,是本发明的实现心跳机制的服务器的第三个实施例,是在图6实施例的基础上使用心跳请求鉴权单元801进行客户端识别而得到的,在本发明的服务器端的各个实施例中,当进行心跳请求鉴权时,均可以使用心跳请求鉴权单元801替代客户端识别单元603进行客户端识别。
心跳请求鉴权单元801,用于:
利用心跳请求消息鉴权进行客户端识别,对于鉴权通过的,视为识别通过,生成应答指令,以指示心跳请求应答单元返回心跳应答消息,对于鉴权未通过的,视为识别未通过。
其中,如图9所示,是在图8所示的实施例基础上增加随机数生成单元901而得到的第三个实施例。
所述随机数生成单元901,用于根据已登录客户端账号生成随机数,并把所述随机数送到所述登录应答信息返回单元;
所述登录应答信息返回单元向所述客户端返回携带所述随机数的登录应答信息;
所述客户端使用所述随机数将所述账号和密码加密成加密字串;
所述心跳请求鉴权单元根据所述加密字串和所述随机数进行心跳请求鉴权。
本实施例利用随机数生成单元生成随机数,心跳请求鉴权单元帽利用所述随机数完成了对客户端的鉴权。提供了一种新的心跳请求消息鉴权的方法,提高了系统的安全性。
其中,在图6所示的实施例基础上,为了判断客户端心跳请求是否超时,可以进一步增加:
心跳请求时间记录单元,用于记录所述客户端心跳请求消息的时间;
心跳超时时间设置单元,用于设置所述客户端心跳超时时间;
心跳超时判断单元,用于:根据所述心跳请求消息的时间和所述心跳超时时间判断所述客户端心跳请求是否超时,当判断超时的,生成注销指令,所述心跳超时判断单元与所述心跳请求时间记录单元和所述心跳超时时间设置单元相连接;
心跳连接注销单元,用于根据所述注销指令注销与心跳请求超时的所述客户端的连接,所述心跳连接关闭单元与所述心跳超时判断单元相连接。
可以实现对于客户端心跳请求时间进行记录后,设置客户端的心跳请求超时时间,当判断所述客户端心跳请求超时的,关闭与心跳请求超时的所述客户连接,节约了服务器的资源。
其中,对于本发明用于解决地址信息变化而采用的各个实施例,为了在地址信息变化的情况下关闭与原地址信息对应的客户端的连接,可以增加:
心跳连接关闭单元,用于在所述客户端账号的地址信息发生变化时,关闭与原地址信息对应的客户端的连接。
本实施例可以实现客户端地址信息变化的情况下,如在其他IP地址登录或更改端口号的情况下,关闭与原地址信息对应的客户端的连接。关闭无用的连接能够节约了服务器资源。
本发明还提供了实现心跳机制的系统的实施例,本系统包括:
客户端和服务器端,所述服务器端用于:
服务器端在客户端登录成功后,返回登录应答信息,判断是否需要进行客户端识别,如果是,根据客户端的心跳请求消息进行客户端识别,否则,返回心跳应答消息,所述客户端识别通过的,返回心跳应答消息,否则,不予处理;
所述客户端用于:根据所述登录应答信息或心跳应答消息,发送心跳请求消息。
其中,可以将服务器端进行客户端识别的条件限定为:
所述服务器端在判断为客户端的首次心跳请求或所述客户端地址信息改变或所述客户端地址信息未登记的,进行客户端识别。
其中,如图10所示,对于系统的实施例,可以对客户端识别采用心跳请求鉴权设备来进行识别。心跳请求鉴权设备1001用于:对于鉴权通过的,视为识别通过,对于鉴权未通过的,视为识别未通过。
其中,如图10所示,对本发明的实施例,可以进一步包括随机数生成设备,用于:根据已登录客户端账号生成随机数,并把所述随机数放入所述登录应答信息中;
所述客户端使用所述随机数将所述账号和密码加密成加密字串;
所述心跳请求鉴权设备根据所述加密字串和所述随机数进行心跳请求鉴权。
通过使用随机数生成设备,提供了一种新的心跳请求消息鉴权的方法,提高了系统的安全性。
其中,对本发明的系统的各个实施例,可以增加在客户端心跳超时时的处理设备:所述系统还包括:
客户端心跳超时处理设备1002,用于:根据所述心跳请求消息的时间和预设的客户端心跳超时时间,判断所述客户端心跳请求消息是否超时,当判断所述心跳请求消息超时的,关闭与所述客户端的连接。在本实施例中,客户端心跳超时处理设备1002是外置于所述服务器端的,在实际应用中,所述客户端心跳超时处理设备1002也可以内置于所述服务器端。
其中,所述系统还可以包括:
服务器端心跳超时处理设备1003,用于:根据所述心跳应答消息的时间和预设的服务器端心跳超时时间,判断所述服务器端心跳应答消息是否超时,当判断所述心跳应答消息超时的,所述客户端关闭与所述服务器端的连接。在本实施例中,服务器端心跳超时处理设备1003是外置于所述客户端的,在实际应用中,所述服务器端心跳超时处理设备1003也可以内置于所述客户端。
其中,如图10所示,所述系统还可以包括:
心跳连接关闭设备1004,用于:在判断所述客户端账号的地址信息发生变化时,关闭所述服务器端与原地址信息对应的所述客户端的连接。在本实施例中,所述心跳连接关闭设备1004是外置于所述服务器端的,在实际应用中,也可以内置于所述服务器端。
客户端心跳超时处理设备1002、服务器端心跳超时处理设备1003和心跳连接关闭设备1004分别用于在客户端心跳超时、服务器端心跳超时和客户端地址信息发生变化时,关闭与所述心跳超时的客户端、所述心跳超时的服务器端和所述地址信息变化的客户端的连接。能够节约客户端或服务器端的资源。
下面给出在本发明中的使用的心跳消息有关的格式内容:
心跳请求消息:
typedef struct_stUDPMessage
{
CHAR protoType[4]=″HW01″;//协议类型
DWORD type=MCM_HB;//消息类型,心跳请求
DWORD tid=124124;//事务id
WORD len;//Data长度
char*body;//UDP消息内容,非零结尾的字符串,长度由len决定。
}ST_UDPMessage;
带鉴权信息的心跳请求UDP消息的消息:
typedef struct_stUDPMessage
{
CHAR protoType[4]=″HW01″;//协议类型
DWORD type=MCM_AUTH;//消息类型,为鉴权请求
DWORD tid=124124;//事务id
WORD len;//Data长度
Data[0]=MCD_RAND;//参数类型,随机数
Data[1~2]; //参数长度,随机数长度
Data[2~x]; //参数值,随机数
}ST_UDPMessage;
需要鉴权的心跳响应UDP消息:
typedef struct stUDPMessage
{
CHAR protoType[4]=″HW01″;//协议类型
DWORD type=MCM_AUTH_ACK;//消息类型,为请求鉴权心跳响应
DWORD tid=124124;//事务id
WORD len;//Data长度
Data[0]=MCD_Account;//参数类型,账号
Data[1~2]; //参数长度,账号长度
Data[2~x]; //参数值,账号内容
Data[x+1]=MCD_AUTH; //参数类型,鉴权信息
data[x+2~x+3]; //鉴权信息长度
data[x+3~y]; //鉴权信息
}ST_UDPMessage;
不需要鉴权的心跳响应UDP消息:
typedef struct_stUDPMessage
{
CHAR protoType[4]=″HW01″;//协议类型
DWORD type=MCM_HB_ACK;//消息类型:心跳响应
DWORD tid=124124;//事务id
WORD len;//Data长度
Data[0]=MCD_Account;//参数类型,账号
Data[1~2]; //参数长度,账号长度
Data[2~x]; //参数值,账号内容
}ST_UDPMessage;
如图11所示,是本发明的服务器端收到心跳请求消息后,一种处理心跳请求消息的流程图,包括步骤:
S1101、服务器端收到客户端的心跳请求信息;
S1102、所述服务器端判断所述心跳请求消息是否带有鉴权信息;
S1103、所述服务器端判断所述心跳请求消息是否通过鉴权,通过鉴权的,进入步骤S1104,没有通过鉴权的,结束流程;
S1104、判断所述心跳请求消息的源IP地址和端口号与所述消息的账号登记的IP地址和端口号是否相同,相同的,进入步骤S1107,不相同的,进入步骤S1106;
S1105、判断所述心跳请求消息的源IP地址和端口号与所述消息的账号登记的IP地址和端口号是否相同,相同的,进入步骤S1107,不相同的,进入步骤S1108;
S1106、向所述原IP地址和端口号发送强制注销请求,关闭与所述原IP地址和端口号的连接;
S1107、向所述客户端发送心跳应答消息;
S1108、向所述客户端发送带鉴权要求的心跳应答消息,要求所述客户端进行心跳请求鉴权。
以上所述的仅仅是本发明的优选的实施方式,并不构成对本发明保护范围的限定。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以本发明的精神和原则之内所作出修改和润饰,这些修改和润饰,均应包含在本发明的保护范围之内。
Claims (18)
1.一种实现心跳机制的方法,其特征在于,包括:
服务器端在客户端登录成功后,返回登录应答信息;
所述服务器端根据收到的所述客户端依据所述登录应答信息发送的心跳请求消息,判断是否需要进行客户端识别,如果是,进行客户端识别,否则,返回心跳应答消息,所述判断是否需要进行客户端识别包括判断是否为首次心跳请求消息或判断客户端地址信息是否改变或判断客户端地址是否未登记;
识别通过的,返回心跳应答消息。
2.如权利要求1所述的实现心跳机制的方法,其特征在于,所述识别具体为:
所述服务器端对所述心跳请求消息进行鉴权。
3.如权利要求2所述的实现心跳机制的方法,其特征在于,所述鉴权具体为:
所述服务器端根据客户端账号生成随机数,并建立账号与随机数的对应关系;
所述服务器端收到所述客户端发送的心跳请求消息,所述心跳请求消息携带有所述客户端利用所述随机数将所述账号和密码加密而成的加密字串;
所述服务器端根据所述账号、加密字串和随机数的对应关系对所述心跳请求消息进行鉴权。
4.如权利要求2所述的实现心跳机制的方法,其特征在于,
如果所述登录应答信息中包含所述服务器端根据客户端账号生成随机数,所述心跳请求消息中携带所述客户端利用该随机数对账号和密码进行加密后的得到的加密字串;
所述鉴权具体包括:
所述服务器端根据所述账号、加密字串和随机数的对应关系对所述心跳请求消息进行鉴权。
5.如权利要求1所述的实现心跳机制的方法,其特征在于,还包括步骤:
所述服务器端记录所述心跳请求消息的时间;
如果在预设的客户端心跳超时时间内,没有再次收到所述心跳请求消息,关闭与所述客户端的连接。
6.如权利要求1所述的实现心跳机制的方法,其特征在于,还包括步骤:
所述客户端记录所述服务器端心跳应答消息的时间;
如果在预设的服务器端心跳超时时间内,没有再次收到所述心跳应答消息,关闭与所述服务器端的连接。
7.如权利要求1所述的实现心跳机制的方法,其特征在于,如果客户端账号的地址信息发生变化,还包括步骤:
所述服务器端关闭与原地址信息对应的客户端的连接。
8.一种实现心跳机制的服务器,其特征在于,包括:
登录应答信息返回单元,用于:在客户端登录成功后,返回登录应答信息;
客户端识别判断单元,用于:判断是否需要进行客户端识别,如果是,则生成识别指令,否则,生成应答指令,所述客户端识别判断单元具体为地址信息判断单元,用于收到心跳请求消息后,判断客户端的地址信息是否改变或未登记,如果是,生成识别指令,否则,生成应答指令;或,所述客户端识别判断单元具体为首次心跳请求判断单元,用于判断是否为客户端的首次心跳请求,如果是,生成识别指令,否则,生成应答指令;
客户端识别单元,用于:
收到所述识别指令后,根据客户端的心跳请求消息进行客户端识别,对于识别通过的,生成应答指令;
心跳请求应答单元,用于根据所述应答指令生成心跳应答消息。
9.如权利要求8所述的实现心跳机制的服务器,其特征在于,所述客户端识别单元为:
心跳请求鉴权单元,用于:
利用心跳请求消息鉴权进行客户端识别,对于鉴权通过的,生成应答指令。
10.如权利要求9所述的实现心跳机制的服务器,其特征在于,还包括:
随机数生成单元,用于根据已登录客户端账号生成随机数并把所述随机数送到所述登录应答信息返回单元;
所述登录应答信息返回单元向所述客户端返回携带所述随机数的登录应答信息;
所述客户端使用所述随机数将所述账号和密码加密成加密字串;
所述心跳请求鉴权单元根据所述加密字串和所述随机数进行心跳请求鉴权。
11.如权利要求8所述的实现心跳机制的服务器,其特征在于,还包括:
心跳请求时间记录单元,用于记录所述客户端心跳请求消息的时间;
心跳超时时间设置单元,用于设置所述客户端心跳超时时间;
心跳超时判断单元,用于:根据所述心跳请求消息的时间和所述心跳超时时间判断所述客户端心跳请求是否超时,当判断超时的,生成注销指令;
心跳连接注销单元,用于根据所述注销指令注销与心跳请求超时的所述客户端的连接。
12.如权利要求8所述的实现心跳机制的服务器,其特征在于,还包括:
心跳连接关闭单元,用于在客户端账号的地址信息发生变化时,关闭与原地址信息对应的客户端的连接。
13.一种实现心跳机制的系统,其特征在于,包括:
客户端和服务器端,所述服务器端用于:在客户端登录成功后,返回登录应答信息,判断是否需要进行客户端识别,如果是,根据客户端的心跳请求消息进行客户端识别,否则,返回心跳应答消息,所述判断是否需要进行客户端识别包括判断是否为首次心跳请求消息或判断客户端地址信息是否改变或判断客户端地址是否未登记;
所述客户端识别通过的,返回心跳应答消息;
所述客户端用于:根据所述登录应答信息或心跳应答消息,发送心跳请求消息。
14.如权利要求13所述的实现心跳机制的系统,其特征在于,所述服务器端利用心跳请求鉴权设备进行客户端识别。
15.如权利要求14所述的实现心跳机制的系统,其特征在于,所述服务器端包括随机数生成设备,用于:根据已登录客户端账号生成随机数,并把所述随机数放入所述登录应答信息中;
所述客户端使用所述随机数将所述账号和密码加密成加密字串;
所述心跳请求鉴权设备根据所述加密字串和所述随机数进行心跳请求鉴权。
16.如权利要求13所述的实现心跳机制的系统,其特征在于,所述系统还包括:
客户端心跳超时处理设备,用于:根据所述心跳请求消息的时间和预设的客户端心跳超时时间,判断所述客户端心跳请求消息是否超时,当判断所述心跳请求消息超时的,关闭与所述客户端的连接。
17.如权利要求13所述的实现心跳机制的系统,其特征在于,所述系统还包括:
服务器端心跳超时处理设备,用于:根据所述心跳应答消息的时间和预设的服务器端心跳超时时间,判断所述服务器端心跳应答消息是否超时,当判断所述心跳应答消息超时的,所述客户端关闭与所述服务器端的连接。
18.如权利要求13-17任一项所述的实现心跳机制的系统,其特征在于,所述系统还包括:
心跳连接关闭设备,用于:在判断客户端账号的地址信息发生变化时关闭与原地址信息对应的所述客户端的连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101404695A CN101106535B (zh) | 2007-08-14 | 2007-08-14 | 一种实现心跳机制的方法、服务器和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101404695A CN101106535B (zh) | 2007-08-14 | 2007-08-14 | 一种实现心跳机制的方法、服务器和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101106535A CN101106535A (zh) | 2008-01-16 |
CN101106535B true CN101106535B (zh) | 2011-04-13 |
Family
ID=39000217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101404695A Expired - Fee Related CN101106535B (zh) | 2007-08-14 | 2007-08-14 | 一种实现心跳机制的方法、服务器和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101106535B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764836B (zh) * | 2008-12-23 | 2013-08-07 | 北京大学深圳研究生院 | 分布式心跳服务器架构及其进程处理方法 |
CN102348209B (zh) * | 2011-09-23 | 2014-12-24 | 福建星网锐捷网络有限公司 | 接入无线网络及其认证的方法和设备 |
CN103078719B (zh) * | 2012-12-25 | 2016-06-01 | 无锡北洋清安物联科技有限公司 | 一种rfid阅读器无线通信系统方法与系统 |
CN103916411B (zh) * | 2012-12-31 | 2018-02-02 | 北京新媒传信科技有限公司 | 超文本传输协议请求超时的处理方法及装置 |
CN106385343B (zh) * | 2016-09-05 | 2020-12-11 | Tcl科技集团股份有限公司 | 一种分布式系统下监控客户端的方法及装置、分布式系统 |
CN109547293A (zh) * | 2018-12-20 | 2019-03-29 | 上海数果科技有限公司 | 心跳数据包发送方法 |
CN109788038A (zh) * | 2018-12-25 | 2019-05-21 | 上海数果科技有限公司 | 一种智能心跳方法 |
CN110808873B (zh) * | 2019-10-21 | 2022-02-22 | 锐捷网络股份有限公司 | 一种检测链路故障的方法及装置 |
CN113472606B (zh) * | 2021-06-29 | 2022-09-30 | 聚好看科技股份有限公司 | 一种心跳超时检测方法、服务器及电子设备 |
CN114143334B (zh) * | 2021-12-03 | 2024-04-09 | 爱信诺征信有限公司 | 一种终端控制方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1411247A (zh) * | 2001-09-29 | 2003-04-16 | 华为技术有限公司 | 互联网个人号码业务中“心跳”技术的实现方法 |
CN1501636A (zh) * | 2002-11-19 | 2004-06-02 | 华为技术有限公司 | 一种检测web认证用户是否在线的方法 |
CN1598807A (zh) * | 2003-09-17 | 2005-03-23 | 深圳市格林耐特通信技术有限责任公司 | Web认证方法 |
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
-
2007
- 2007-08-14 CN CN2007101404695A patent/CN101106535B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1411247A (zh) * | 2001-09-29 | 2003-04-16 | 华为技术有限公司 | 互联网个人号码业务中“心跳”技术的实现方法 |
CN1501636A (zh) * | 2002-11-19 | 2004-06-02 | 华为技术有限公司 | 一种检测web认证用户是否在线的方法 |
CN1598807A (zh) * | 2003-09-17 | 2005-03-23 | 深圳市格林耐特通信技术有限责任公司 | Web认证方法 |
CN1933427A (zh) * | 2005-09-12 | 2007-03-21 | 上海新纳广告传媒有限公司 | 基于udp协议的网络心跳监控系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101106535A (zh) | 2008-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101106535B (zh) | 一种实现心跳机制的方法、服务器和系统 | |
US8639929B2 (en) | Method, device and system for authenticating gateway, node and server | |
JP4047303B2 (ja) | 提供装置、提供プログラム、及び、提供方法 | |
CN101399838B (zh) | 报文处理方法、装置和系统 | |
CN111628976B (zh) | 一种报文处理方法、装置、设备及介质 | |
US20050144441A1 (en) | Presence validation to assist in protecting against Denial of Service (DOS) attacks | |
CN102571892A (zh) | 基于浏览器的数据通讯方法、客户端和数据交互系统 | |
CN108243176A (zh) | 数据传输方法和装置 | |
CN107196917A (zh) | 一种服务响应方法及其中间件 | |
JP5122587B2 (ja) | 接続制御方法、接続制御サーバ装置、接続制御クライアント装置、接続制御システム、及びプログラム | |
CN109040059B (zh) | 受保护的tcp通信方法、通信装置及存储介质 | |
CN106161224B (zh) | 数据交换方法、装置及设备 | |
CN110691097A (zh) | 一种基于hpfeeds协议的工控蜜罐的系统及其工作方法 | |
CN111541776A (zh) | 一种基于物联网设备的安全通信装置及系统 | |
CN109150914A (zh) | 物联网安全架构及其网关重定向方法、数据包握手方法 | |
CN109936566A (zh) | 一种数据传输方法系统、装置及计算机可读存储介质 | |
CN110351086B (zh) | 一种机器人群组内加密信息处理与传输方法和系统 | |
CN110866999A (zh) | 一种智能门锁的控制方法、设备及存储介质 | |
US8646066B2 (en) | Security protocol control apparatus and security protocol control method | |
CN103634292A (zh) | 通信信息传输方法和系统 | |
CN105681364B (zh) | 一种基于增强绑定的IPv6移动终端抗攻击方法 | |
King | A Distributed Security Scheme to Secure Data Communication between Class-0 IoT Devices and the Internet | |
CN104363584B (zh) | 一种短消息加、解密的方法、装置及终端 | |
CN107592294A (zh) | 数据上报方法及装置 | |
CN107277035B (zh) | 一种在tcp连接阶段传递客户端信息的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110413 Termination date: 20170814 |
|
CF01 | Termination of patent right due to non-payment of annual fee |