一种避免TCP报文乒乓的方法及装置与流程

文档序号:15235986发布日期:2018-08-24 04:20阅读:211来源:国知局

本发明涉及通信技术领域,尤其涉及一种避免tcp报文乒乓的方法及装置。



背景技术:

tcp(transmissioncontrolprotocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。tcp通过三次握手协商建立连接,连接建立后,标识连接的四元组(源ip(internetprotocol,网络之间互连的协议)地址、源端口、目的ip地址和目的端口)始终保持不变,以此提供面向连接的服务;再通过tcp报文头部中的序列号和确认号字段,辅以重传和确认机制来实现数据的可靠、有序传输;另外,tcp通过接收窗口实现发送端的流量控制,通过拥塞窗口实现网络的拥塞控制。

tcp协议在最初设计的时候并没有充分考虑安全性,tcp的安全性主要依赖于其四元组的不可确定性以及序列号、确认号的随机性。在rfc5961-improvingtcp'srobustnesstoblindin-windowattacks(提高tcp的窗口盲攻击的鲁棒性)出现之前,blindin-windowattacks(窗口的盲攻击)一直是针对tcp协议的主要攻击手段,一旦伪造数据包的序列号落到了可接收的范围内,攻击者就可以往tcp连接注入恶意数据或者直接重置连接。然而,旨在提高tcp安全性的rfc5961引发了编号为cve-2016-5696的安全漏洞,利用这个漏洞,攻击者可以更快的实施恶意数据注入攻击。

恶意数据注入攻击的影响非常严重。对于终端用户来说,它可以在正常浏览的web(网络)页面上插入钓鱼网站,使终端用户蒙受财产的损失和个人信息的泄露;它可以任意篡改用户传输的数据,使得可靠的tcp传输变得不再可靠。而对于数据通信设备来说,除了上述影响外,恶意数据注入攻击引发连接两端大量的tcp乒乓报文,还会极大消耗系统的cpu资源,影响系统中其他协议的正常运行,严重时整个系统都会处于拒绝服务状态。

恶意数据注入攻击引发连接两端tcp报文乒乓如附图1所示。server(服务器)端收到数据注入攻击报文后,正常的向client(客户)端发送确认报文,由于该确认报文的确认号却大于client端已发送的序列号,引发client端回应一个确认报文,而client端回应的确认报文的序列号又小于server端期待接收的序列号,触发了server端再次发送确认报文,如此循环,导致了正常tcp连接两端持续发送乒乓报文。



技术实现要素:

本发明要解决的技术问题是,提供一种避免tcp报文乒乓的方法及装置,克服现有技术中在tcp连接受到数据注入攻击后,导致tcp连接两端持续发送大量乒乓报文导致的cpu(centralprocessingunit,中央处理器)资源的消耗和对网络带宽占用的缺陷。

本发明采用的技术方案是,所述一种避免传输控制协议tcp报文乒乓的方法,包括:

服务器端基于接收到的tcp报文配置第一确认报文,并将所述第一确认报文发送至客户端,以供所述客户端判断所述第一确认报文是否合法;

在服务器端接收到的所述客户端发送的第二确认报文的情况下,服务器端判断所述第二确认报文是否合法;若第二确认报文判定为合法,则服务器端再次向客户端发送所述第一确认报文;否则服务器端停止向客户端发送第一确认报文。

进一步的,所述服务器端基于接收到的tcp报文配置第一确认报文,包括:

所述服务器端基于接收到的tcp报文,将所述tcp报文的确认号配置为第一确认报文的序列号,并将所述tcp报文的序列号与报文长度之和配置为第一确认报文的确认号。

进一步的,所述服务器端判断所述第二确认报文是否合法,包括:

服务器端判断所述第二确认报文的序列号是否小于所述第一确认报文的确认号;

若是,则判定所述第二确认报文合法;否则判定所述第二确认报文不合法。

本发明还提供一种避免传输控制协议tcp报文乒乓的装置,设置于服务器端,包括:

配置模块,用于基于接收到的tcp报文配置第一确认报文,并将所述第一确认报文发送至客户端,以供所述客户端判断所述第一确认报文是否合法;

第一判断模块,用于在所述配置模块将所述第一确认报文发送至客户端之后,并在接收到的所述客户端发送的第二确认报文的情况下,判断所述第二确认报文是否合法;若第二确认报文判定为合法,则再次向客户端发送所述第一确认报文;否则停止向客户端发送第一确认报文。

进一步的,所述基于接收到的tcp报文配置第一确认报文,包括:

基于接收到的tcp报文,将所述tcp报文的确认号配置为第一确认报文的序列号,并将所述tcp报文的序列号与报文长度之和配置为第一确认报文的确认号。

进一步的,所述判断所述第二确认报文是否合法,包括:

判断所述第二确认报文的序列号是否小于所述第一确认报文的确认号;

若是,则判定所述第二确认报文合法;否则判定所述第二确认报文不合法。

本发明还提供一种避免传输控制协议tcp报文乒乓的方法,包括:

客户端判断接收到的服务器端发送的第一确认报文是否合法;

若所述第一确认报文判定为合法,则所述客户端向所述服务器端发送挑战确认报文,并判断在设定时长内所述挑战确认报文的数量是否小于第一预设值;否则所述客户端停止响应;

若在设定时长内所述挑战确认报文的发送数量小于第一预设值,则所述客户端配置第二确认报文,并将所述第二确认报文发送至所述服务器端,以供服务器端判断所述第二确认报文是否合法;否则所述客户端停止响应。

进一步的,所述客户端判断接收到的服务器端发送的第一确认报文是否合法,包括:

所述客户端判断接收到的服务器端发送的第一确认报文的确认号是否大于所述客户端已发送数据的序列号的最大值;

若是,则所述第一确认报文判定为合法;否则所述第一确认报文判定为不合法。

进一步的,所述客户端配置第二确认报文,包括:

将所述客户端已发送数据的序列号的最大值配置为第二确认报文的序列号,并将所述第一确认报文的序列号配置为第二确认报文的确认号。

本发明还提供一种避免传输控制协议tcp报文乒乓的装置,设置于客户端,包括:

第二判断模块,用于判断接收到的服务器端发送的第一确认报文是否合法;

挑战确认模块,用于若所述第一确认报文判定为合法,则所向所述服务器端发送挑战确认报文,并判断在设定时长内所述挑战确认报文的数量是否小于第一预设值;否则停止响应;

反馈模块,用于若在设定时长内所述挑战确认报文的发送数量小于第一预设值,则配置第二确认报文,并将所述第二确认报文发送至所述服务器端,以供服务器端判断所述第二确认报文是否合法;否则停止响应。

进一步的,所述判断接收到的服务器端发送的第一确认报文是否合法,包括:

判断接收到的服务器端发送的第一确认报文的确认号是否大于所述客户端已发送数据的序列号的最大值;

若是,则所述第一确认报文判定为合法;否则所述第一确认报文判定为不合法。

进一步的,所述配置第二确认报文,包括:

所述客户端将第二确认报文的序列号配置为所述客户端已发送数据的序列号的最大值,并将第二确认报文的确认号配置为所述第一确认报文的序列号。

本发明还提供一种避免传输控制协议tcp报文乒乓的方法,包括:

当通信系统端监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认报文时,通信系统端判断在设定时长内所述挑战确认报文的数量是否小于第二预设值;

若判定在设定时长内所述挑战确认报文的数量小于第二预设值,则通信系统端控制所述客户端向所述服务器端发送第二确认报文;否则通信系统端控制所述客户端停止响应。

进一步的,所述第二确认报文的序列号为所述客户端已发送数据的序列号的最大值;

所述第二确认报文的确认号为所述第一确认报文的序列号。

本发明还提供一种避免传输控制协议tcp报文乒乓的装置,设置于通信系统端,包括:

第三判断模块,用于当监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认报文时,通信系统端判断在设定时长内所述挑战确认报文的数量是否小于第二预设值;

执行摸快,用于若判定在设定时长内所述挑战确认报文的数量小于第二预设值,则控制所述客户端向所述服务器端发送第二确认报文;否则通信系统端控制所述客户端停止响应。

进一步的,所述第二确认报文的序列号为所述客户端已发送数据的序列号的最大值;

所述第二确认报文的确认号为所述第一确认报文的序列号。

采用上述技术方案,本发明至少具有下列优点:

本发明所述一种避免tcp报文乒乓的方法及装置,在tcp连接受到数据注入攻击或其他异常情况下,有效避免tcp连接两端(客户端和服务器端)持续发送大量乒乓报文,有效降低了由于持续的tcp连接两端持续发送大量乒乓报文导致的cpu资源的消耗和对网络带宽的占用。

附图说明

图1为现有技术中tcp连接受到数据注入攻击的情况下tcp连接两端(客户端和服务器端)持续发送tcp乒乓报文的流程图;

图2为本发明第一实施例的避免tcp报文乒乓的方法流程图;

图3为本发明第二实施例的避免tcp报文乒乓的装置组成结构示意图;

图4为本发明第三实施例的避免tcp报文乒乓的方法流程图;

图5为本发明第四实施例的避免tcp报文乒乓的装置组成结构示意图;

图6为本发明第五实施例的避免tcp报文乒乓的方法流程图;

图7为本发明第六实施例的避免tcp报文乒乓的装置组成结构示意图;

图8为本发明第七实施例的避免tcp报文乒乓的方法流程图。

具体实施方式

为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。

本发明第一实施例,一种避免tcp报文乒乓的方法,如图2所示,包括以下具体步骤:

步骤s101,服务器端基于接收到的tcp报文配置第一确认报文,并将第一确认报文发送至客户端,以供客户端判断第一确认报文是否合法。

其中,服务器端基于接收到的tcp报文配置第一确认报文的方式,包括:

服务器端基于接收到的tcp报文,将tcp报文的确认号配置为第一确认报文的序列号,并将tcp报文的序列号与报文长度之和配置为第一确认报文的确认号。

例如:步骤s101,服务器端基于接收到的tcp报文配置第一确认报文,并将第一确认报文发送至客户端,以供客户端判断第一确认报文是否合法。

其中,服务器端接收到的tcp报文的序列号为x,确认号为y,报文长度为z;

服务器端基于接收到的tcp报文配置第一确认报文的方式,包括:

服务器端基于接收到的tcp报文,将tcp报文的确认号y配置为第一确认报文的序列号,并将tcp报文的序列号x与报文长度z之和x+z配置为第一确认报文的确认号。

步骤s102,在服务器端接收到的客户端发送的第二确认报文的情况下,服务器端判断第二确认报文是否合法;若第二确认报文判定为合法,则服务器端再次向客户端发送第一确认报文;否则服务器端停止向客户端发送第一确认报文。

其中,服务器端判断第二确认报文是否合法,包括:

服务器端判断第二确认报文的序列号是否小于第一确认报文的确认号;

若第二确认报文的序列号小于第一确认报文的确认号,则判定第二确认报文合法;

否则判定第二确认报文不合法。

本发明第一实施例的一种避免tcp报文乒乓的方法,能够在tcp连接受到数据注入攻击或其他异常情况下,有效避免tcp连接两端(客户端和服务器端)持续发送大量乒乓报文,有效降低了由于持续的tcp连接两端持续发送大量乒乓报文导致的cpu资源的消耗和对网络带宽的占用。

本发明第二实施例,一种避免tcp报文乒乓的装置,设置于服务器端,如图3所示,包括以下组成部分:

配置模块110,用于基于接收到的tcp报文配置第一确认报文,并将第一确认报文发送至客户端,以供客户端判断第一确认报文是否合法。

其中,基于接收到的tcp报文配置第一确认报文,包括:

基于接收到的tcp报文,将tcp报文的确认号配置为第一确认报文的序列号,并将tcp报文的序列号与报文长度之和配置为第一确认报文的确认号。

例如:配置模块110,用于服务器端基于接收到的tcp报文配置第一确认报文,并将第一确认报文发送至客户端,以供客户端判断第一确认报文是否合法。

其中,服务器端接收到的tcp报文的序列号为x,确认号为y,报文长度为z;

服务器端基于接收到的tcp报文配置第一确认报文的方式,包括:

服务器端基于接收到的tcp报文,将tcp报文的确认号y配置为第一确认报文的序列号,并将tcp报文的序列号x与报文长度z之和x+z配置为第一确认报文的确认号。

第一判断模块120,用于在接收到的客户端发送的第二确认报文的情况下,判断第二确认报文是否合法;若第二确认报文判定为合法,则再次向客户端发送第一确认报文;否则服务器端停止向客户端发送第一确认报文。

其中,判断第二确认报文是否合法,包括:

判断第二确认报文的序列号是否小于第一确认报文的确认号;

若第二确认报文的序列号小于第一确认报文的确认号,则判定第二确认报文合法;

否则判定第二确认报文不合法。

本发明第二实施例的一种避免tcp报文乒乓的装置,能够在tcp连接受到数据注入攻击或其他异常情况下,有效自动停止tcp连接两端(客户端和服务器端)持续发送大量乒乓报文,有效降低了由于持续的tcp连接两端持续发送大量乒乓报文导致的cpu资源的消耗和对网络带宽的占用。

本发明第三实施例,一种避免tcp报文乒乓的方法,如图4所示,包括以下具体步骤:

步骤s301,客户端判断接收到的服务器端发送的第一确认报文是否合法。

其中,客户端判断接收到的服务器端发送的第一确认报文是否合法,包括:

客户端判断接收到的服务器端发送的第一确认报文的确认号是否大于客户端已发送数据的序列号的最大值;

若第一确认报文的确认号大于客户端已发送数据的序列号的最大值,则第一确认报文判定为合法;否则第一确认报文判定为不合法。

例如:客户端接收服务器端发送的第一确认报文;

其中,第一确认报文的序列号为y,确认号为x+z;

客户端判断第一确认报文是否合法;

其中,客户端判断第一确认报文是否合法的方式,包括:

客户端判断第一确认报文的确认号x+z是否大于客户端已发送数据的序列号的最大值x;

若第一确认报文的确认号x+z大于客户端已发送数据的序列号的最大值x,则第一确认报文判定为合法。

步骤s302,若第一确认报文判定为合法,则客户端向服务器端发送挑战确认(ack)报文,并判断在设定时长内挑战确认(ack)报文的数量是否小于第一预设值;否则客户端停止响应。

其中,第一预设值根据经验进行设置,或者,通过有限次试验的统计结果进行设置。

例如:步骤s302,若第一确认报文判定为合法,则客户端向服务器端发送挑战确认(ack)报文,并判断在设定时长1秒内挑战确认(ack)报文的数量是否小于第一预设值30;

若第一确认报文判定为不合法,则客户端停止响应。

步骤s303,若在设定时长内挑战确认(ack)报文的发送数量小于第一预设值,则客户端配置第二确认报文,并将第二确认报文发送至服务器端,以供服务器端判断第二确认报文是否合法;否则客户端停止响应。

其中,客户端配置第二确认报文,包括:

客户端将客户端已发送数据的序列号的最大值配置为第二确认报文的序列号,并将第一确认报文的序列号配置为第二确认报文的确认号。

例如:步骤s303,若在设定时长1秒内挑战确认(ack)报文的发送数量20小于第一预设值30,则客户端配置第二确认报文,并将第二确认报文发送至服务器端,以供服务器端判断第二确认报文是否合法

其中,客户端配置第二确认报文,包括:

客户端将客户端已发送数据的序列号的最大值x配置为第二确认报文的序列号,并将第一确认报文的序列号y配置为第二确认报文的确认号。

又如:步骤s303,若在设定时长1秒内挑战确认(ack)报文的发送数量40不小于第一预设值30,则客户端停止响应。

本发明第三实施例的一种避免tcp报文乒乓的方法,能够在tcp连接受到数据注入攻击或其他异常情况下,有效自动停止tcp连接两端(客户端和服务器端)持续发送大量乒乓报文,有效降低了由于持续的tcp连接两端持续发送大量乒乓报文导致的cpu资源的消耗和对网络带宽的占用。

本发明第四实施例,一种避免tcp报文乒乓的装置,设置于客户端,如图5所示,包括以下组成部分:

第二判断模块210,用于判断接收到的服务器端发送的第一确认报文是否合法。

其中,判断接收到的服务器端发送的第一确认报文是否合法,包括:

判断接收到的服务器端发送的第一确认报文的确认号是否大于客户端已发送数据的序列号的最大值;

若第一确认报文的确认号大于客户端已发送数据的序列号的最大值,则第一确认报文判定为合法;否则第一确认报文判定为不合法。

例如:第二判断模块210,用于接收服务器端发送的第一确认报文;

其中,第一确认报文的序列号为y,确认号为x+z;

判断第一确认报文是否合法;

其中,判断第一确认报文是否合法的方式,包括:

判断第一确认报文的确认号x+z是否大于客户端已发送数据的序列号的最大值x;

若第一确认报文的确认号x+z大于客户端已发送数据的序列号的最大值x,则第一确认报文判定为合法。

挑战确认模块220,用于若第一确认报文判定为合法,则向服务器端发送挑战确认(ack)报文,并判断在设定时长内挑战确认(ack)报文的数量是否小于第一预设值;否则客户端停止响应。

其中,第一预设值根据经验进行设置,或者,通过有限次试验的统计结果进行设置。

例如:挑战确认模块220,用于若第一确认报文判定为合法,则向服务器端发送挑战确认(ack)报文,并判断在设定时长1秒内挑战确认(ack)报文的数量是否小于第一预设值30;

若第一确认报文判定为不合法,则客户端停止响应。

反馈模块230,用于若在设定时长内挑战确认(ack)报文的发送数量小于第一预设值,则配置第二确认报文,并将第二确认报文发送至服务器端,以供服务器端判断第二确认报文是否合法;否则停止响应。

其中,配置第二确认报文,包括:

将客户端已发送数据的序列号的最大值配置为第二确认报文的序列号,并将第一确认报文的序列号配置为第二确认报文的确认号。例如:反馈模块230,用于若在设定时长1秒内挑战确认(ack)报文的发送数量20小于第一预设值30,则客配置第二确认报文,并将第二确认报文发送至服务器端,以供服务器端判断第二确认报文是否合法

其中,配置第二确认报文,包括:

将客户端已发送数据的序列号的最大值x配置为第二确认报文的序列号,并将第一确认报文的序列号y配置为第二确认报文的确认号。又如:反馈模块230,用于若在设定时长1秒内挑战确认(ack)报文的发送数量40不小于第一预设值30,则停止响应。

本发明第四实施例的一种避免tcp报文乒乓的装置,能够在tcp连接受到数据注入攻击或其他异常情况下,有效自动停止tcp连接两端(客户端和服务器端)持续发送大量乒乓报文,有效降低了由于持续的tcp连接两端持续发送大量乒乓报文导致的cpu资源的消耗和对网络带宽的占用。

本发明第五实施例,一种避免tcp报文乒乓的方法,如图6所示,包括以下具体步骤:

步骤s501,当通信系统端监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认(ack)报文时,通信系统端判断在设定时长内挑战确认(ack)报文的数量是否小于第二预设值。

其中,第二预设值根据经验进行设置,或者根据有限次试验的统计结果进行设置,或者设置为随机值。

例如:步骤s501,当通信系统端监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认(ack)报文时,通信系统端判断在设定时长1秒内挑战确认(ack)报文的数量是否小于第二预设值35。

其中,第二预设值根据经验进行设置,或者根据有限次试验的统计结果进行设置,或者设置为随机值。

步骤s502,若判定在设定时长内挑战确认(ack)报文的数量小于第二预设值,则通信系统端控制客户端向服务器端发送第二确认报文;否则通信系统端控制客户端停止响应。

其中,第二确认报文的序列号为客户端已发送数据的序列号的最大值;

第二确认报文的确认号为第一确认报文的序列号。

例如,步骤s502,若判定在设定时长1秒内挑战确认(ack)报文的数量20小于第二预设值35,则通信系统端控制客户端向服务器端发送第二确认报文;

其中,第二确认报文的序列号为客户端已发送数据的序列号的最大值;

第二确认报文的确认号为第一确认报文的序列号。

又如:步骤s502,若判定在设定时长1秒内挑战确认(ack)报文的数量40不小于第二预设值35,则通信系统端控制客户端停止响应。

本发明第六实施例,一种避免tcp报文乒乓的装置,设置于通信系统端,如图7所示,包括以下组成部分:

第三判断模块310,用于当监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认(ack)报文时,判断在设定时长内挑战确认(ack)报文的数量是否小于第二预设值。

其中,第二预设值根据经验进行设置,或者根据有限次试验的统计结果进行设置,或者设置为随机值。

例如:第三判断模块310,用于当监控到客户端接收到服务器端发送的第一确认报文,并向服务器端发送挑战确认(ack)报文时,判断在设定时长1秒内挑战确认(ack)报文的数量是否小于第二预设值35。

其中,第二预设值根据经验进行设置,或者根据有限次试验的统计结果进行设置,或者设置为随机值。

执行摸快320,用于若判定在设定时长内挑战确认(ack)报文的数量小于第二预设值,则控制客户端向服务器端发送第二确认报文;否则控制客户端停止响应。

其中,第二确认报文的序列号为客户端已发送数据的序列号的最大值;

第二确认报文的确认号为第一确认报文的序列号。

例如,执行摸快320,用于若判定在设定时长1秒内挑战确认(ack)报文的数量20小于第二预设值35,则控制客户端向服务器端发送第二确认报文;

其中,第二确认报文的序列号为客户端已发送数据的序列号的最大值;

第二确认报文的确认号为第一确认报文的序列号。

又如:执行摸快320,用于若判定在设定时长1秒内挑战确认(ack)报文的数量40不小于第二预设值35,则控制客户端停止响应。

本发明第七实施例,本实施例是在上述实施例的基础上,以一种tcp报文乒乓的方法为例,结合附图8介绍一个本发明的应用实例。

s701:攻击者对server(服务器)端实施恶意数据注入攻击,攻击报文序列号为x,确认号为y,报文长度为z。

s702:当server端收到攻击报文时,向client(客户)端发送序列号为y、确认号为x+z的第一确认报文。

s703:当client端收到第一确认报文时,检查第一确认报文的确认号,由于第一确认报文的确认号x+z大于client端已发送数据的序列号最大值x,client端发起挑战ack(确认)流程。

s704:挑战ack流程中,client端检查一秒内该连接发送的挑战ack报文数量;若一秒内该连接(server端与client端的连接)client端发送挑战ack报文数量小于预设值,则跳转至步骤s706;否则跳转至步骤s707。

s705:挑战ack流程中,通信系统检查一秒内通信系统发送的挑战ack报文的数量,如果一秒内系统发送挑战ack数量小于预设的随机值,则跳转至步骤s706;否则跳转至步骤s707。

s706:client端发送序列号为x、确认号为y的第二确认报文至server端,并跳转至步骤s708。

s707:client端结束处理流程,不再发送确认报文;

s708:server端收到client端发送的第二确认报文后,由于第二确认报文的序列号x小于server端期望接收确认报文的序列号x+z,按照tcp协议规定需要再次向client端发送序列号为y、确认号为x+z的第一确认报文,然后跳转至步骤s703。

通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

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