一种报文传输方法及装置与流程

文档序号:12890042阅读:203来源:国知局
一种报文传输方法及装置与流程

本发明涉及网络通信技术领域,尤其涉及一种报文传输方法及装置。



背景技术:

目前,当待传输的http(hypertexttransferprotocol,超文本传输协议)报文很长时,可将http报文在进行tcp(transmissioncontrolprotocol,传输控制协议)报头封装时,封装成若干tcp分段数据,并以每个tcp分段数据为单位,对http报文进行传输。

现有技术中,网络设备在接收到采用上述方法传输的http报文时,先缓存接收的tcp分段数据,直至接收的所有tcp分段数据形成完整的http报文后,对该完整的http报文进行安全检查。当报文很长时,由于需要缓存的tcp分段数据、和等待接收tcp分段数据的间隔期很多,故一方面会占用网络设备较多的内存资源,另一方面会导致传输延迟,传输效率低。



技术实现要素:

有鉴于此,本发明提供一种报文传输方法及装置,以避免现有技术中,因需要缓存的tcp分段数据、和等待接收tcp分段数据的间隔期较多,而导致的占用网络设备内存资源,和传输延迟、传输效率低的问题。

根据本发明实施例的第一方面,提供一种报文传输方法,所述方法包括:

接收tcp分段数据,其中,所述tcp分段数据是http报文的一个分段数据;

通过当前接收的tcp分段数据,得到整行数据;

检查得到的整行数据是否为攻击数据;

若否,则发送当前接收的tcp分段数据;若是,则阻断当前接收的tcp分段数据。

根据本发明实施例的第二方面,提供一种报文传输装置,所述装置包括:

接收单元,用于接收tcp分段数据,所述tcp分段数据是http报文的一个分段数据;

获得单元,用于通过当前接收的tcp分段数据,得到整行数据;

检查单元,用于检查得到的整行数据是否为攻击数据;

发送单元,用于在得到的整行数据不为攻击数据,发送当前接收的tcp分段数据;

阻断单元,用于在得到的整行数据为攻击数据,阻断当前接收的tcp分段数据。

本发明实施例中,在接收到tcp分段数据后,网络设备可以通过该tcp分段数据得到整行数据,并检查该整行数据是否为攻击数据,最终根据检查结果,确定发送或者阻断当前接收的tcp分段数据。由此可见,由于本发明方法不对接收到的tcp分段数据进行缓存,且立即对接收到的tcp分段数据执行安全检查及发送或阻断动作,消除了等待接收各个tcp分段数据的间隔期,所以不仅可以节省网络设备的内存资源,还可以避免传输延迟,使传输效率得到提高。

附图说明

图1是本发明一种报文传输方法的示例性场景示意图;

图2是本发明一种报文传输方法的一个实施例流程图;

图3是本发明一种报文传输装置实施例的第一个结构图;

图4是本发明一种报文传输装置实施例的第二个结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

http报文格式中包体部分记录的数据,由多个利用行结束符分隔存储的行数据组成。由于行数据之间相互独立,故分别对http报文中的一个或多个行数据进行业务处理,与对http报文整体进行业务处理具有相同的效果。本发明实施例充分利用了http报文的这一特点,克服了现有传输方法占用网络设备内存资源和传输延迟的不足。

参见图1,图1是本发明一种报文传输方法的示例性场景示意图。该场景图可以包括源设备、网络设备以及目的设备。本发明实施例中,源设备可以在待传输的http报文很长时,将http报文在进行tcp报头封装时,封装成若干tcp分段数据,并以每个tcp分段数据为单位,对http报文进行传输。网络设备可以在接收到tcp分段数据后,通过当前接收的tcp分段数据,得到整行数据,并检查得到的整行数据是否为攻击数据,若否,则将发送当前接收的tcp分段数据;若是,则阻断当前接收的tcp分段数据。目的设备可用于接收网络设备发送的tcp分段数据。

需要指出的是,每一被封装的tcp分段数据都携带有自身的序列号,以使接收tcp分段数据的设备可以根据需要,对接收到的所有tcp分段数据进行排序和拼接。在实际的传输过程中,可能存在着tcp分段数据乱序传输的现象,但由于根据tcp分段数据携带的序列号,已经可以实现tcp分段数据的重新排序,故本发明中,默认网络设备顺序接收到tcp分段数据。

为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。

参见图2,图2是本发明一种报文传输方法的一个实施例流程图,本实施例应用于网络设备。该流程图可以包括以下步骤:

步骤201:接收tcp分段数据;其中,tcp分段数据是http报文的一个分段数据。

步骤202:通过当前接收的tcp分段数据,得到整行数据;

当前接收的tcp分段数据,是指步骤201中接收到的tcp分段数据。

步骤203:检查得到的整行数据是否为攻击数据;若否,执行步骤204,若是,执行步骤205。

步骤204:发送当前接收的tcp分段数据。

步骤205:阻断当前接收的tcp分段数据。

本实施例中,tcp分段数据可以包括多个行数据,其中,行数据是指http报文中,包含一个行结束符且以该行结束符结束的数据,为便于说明,可假设当前接收的tcp分段数据包括的行数据如下:

mon26jan2017/name=mary/password=1234/sessionid=

其中,行结束符为“/”,则该tcp分段数据包括了4个行数据,即mon26jan2017/,name=mary/,password=1234/,sessionid=。

为便于说明,可以将行数据分为整行数据和非整行数据,整行数据又可以分为第一类整行数据和第二类整行数据。

第一类整行数据是指,通过将前一个接收的tcp分段数据中的最后一个行数据,与当前接收的tcp分段数据中的第一个行数据进行拼接得到的行数据,其中,前一个接收的tcp分段数据与当前接收的tcp分段数据,同属于步骤201中的http报文;

比如,前一个接收的tcp分段数据中的最后一个行数据为date=,那么将date与mon26jan2017/进行拼接得到的行数据date=mon26jan2017/,即为一个第一类整行数据。

第二类整行数据是指,tcp分段数据中,位于前一个行数据的行结束符后,且以本行数据的行结束符结束的行数据,如上述tcp分段数据中的name=mary/和password=1234/;

非整行数据是指,tcp分段数据中,需要与前一个接收的tcp分段数据中的最后一个行数据进行拼接,得到上述第一类整行数据的行数据,如上述tcp分段数据中的mon26jan2017/,或tcp分段数据中不包含行结束符的行数据,如上述tcp分段数据中的sessionid=。

本实施例中,可以通过以下方式执行步骤202:

确定预设缓存中是否存在属于步骤201中的http报文的待拼接数据;其中,待拼接数据是指,前一个接收的tcp分段数据中的最后一个行数据,且该最后一个行数据不包含行结束符,如date=;

若存在,则从当前接收的tcp分段数据中解析出第一个行数据,将解析出的第一个行数据与待拼接数据进行拼接,得到第一类整行数据;从当前接收的tcp分段数据中解析出第二类整行数据;将第一类整行数据和第二类整行数据,确定为得到的整行数据;

比如,得到的整行数据为date=mon26jan2017/name=mary/password=1234/。

若不存在,则从当前接收的tcp分段数据中解析出第二类整行数据,将第二类整行数据确定为得到的整行数据;

比如,name=mary/password=1234/。

本实施例中,在执行步骤204之前,可以确定当前接收的tcp分段数据中的最后一个行数据是否为非整行数据;

若是,则将tcp分段数据中的最后一个行数据确定为待拼接数据,并在预设缓存中存储确定的待拼接数据,其中,确定的待拼接数据可以为sessionid=。

本实施例中,可以通过以下方式执行步骤203:

确定是否存在包括的特征与得到的整行数据匹配的安全策略,其中,安全策略可以记录多个特征;当存在时,

若得到的整行数据与该安全策略包括的全部特征匹配,则确定得到的整行数据为攻击数据;

若得到的整行数据与该安全策略包括的部分特征匹配,则根据通过前一个接收的tcp分段数据得到的整行数据与该安全策略的匹配情况,确定得到的整行数据是否为攻击数据;其中,前一个接收的tcp分段数据属于步骤201中的http报文;

若得到的整行数据与该安全策略包括的特征均不匹配,则确定得到的整行数据不为攻击数据。

具体地,当该安全策略,记为安全策略1,记录了ab两个特征时,可能存在的情形如下:

情形1:步骤202中得到的整行数据包含ab特征;

确定得到的整行数据与安全策略1包括的全部特征匹配,即当前接收的tcp分段数据为攻击数据。

情形2:步骤202中得到的整行数据包含b特征;

确定得到的整行数据与安全策略1包括的部分特征匹配。

情形3:步骤202中得到的整行数据包含c特征;

确定得到的整行数据与该安全策略包括的特征均不匹配,即当前接收的tcp分段数据不为攻击数据。

在情形2下,可以得出,步骤202中得到的整行数据,与安全策略1中的部分特征,即特征b匹配。该情形下,可以在通过如下方式确定当前接收的tcp分段数据是否为攻击数据:

判断通过前一个接收的tcp分段数据得到的整行数据,是否与该安全策略包括的部分特征匹配;

若是,则确定前一个得到的整行数据与该安全策略匹配的特征,和当前得到的整行数据与该安全策略匹配的特征是否连续,若连续,则在当前得到的整行数据与该安全策略匹配的特征,位于该安全策略的末尾时,确定得到的整行数据为攻击数据,否则,确定得到的整行数据不为攻击数据。

比如,当前一个得到的整行数据包含a特征时,由于a特征,和当前得到的整行数据与该安全策略匹配的b特征连续,且b特征位于该安全策略的末尾,故可以确定得到的整行数据为攻击数据。

本发明实施例中,在接收到tcp分段数据后,网络设备可以通过该tcp分段数据得到整行数据,并检查该整行数据是否为攻击数据,最终根据检查结果,确定发送或者阻断当前接收的tcp分段数据。由此可见,由于本发明方法不对接收到的tcp分段数据进行缓存,且立即对接收到的tcp分段数据执行安全检查及发送或阻断动作,消除了等待接收各个tcp分段数据的间隔期,所以不仅可以节省网络设备的内存资源,还可以避免传输延迟,使传输效率得到提高。

以下将示出本发明方法的另一个实施例,具体的,本实施例可以包括以下步骤:

步骤1:接收tcp分段数据;其中,tcp分段数据是http报文的一个分段数据;

本实施例中,在接收到tcp分段数据后,可确定是否存在与tcp分段数据中的五元组信息匹配的会话,若不存在,则建立会话,用于记录本步骤中http报文的信息。

步骤2:确定是否存在属于步骤1中http报文的待拼接数据;

本实施例中,可以查询步骤1中存在或者建立的会话中,是否存在缓存标记;

若存在,则确定存在上述待拼接数据,并查找存在的待拼接数据,具体的,可以预先建立缓存标记与一内存空间访问地址的关联关系,若缓存标记存在,则根据该访问地址,访问内存空间,并从内存空间中获得待拼接数据。

若不存在,则确定不存在上述待拼接数据。

步骤3:当存在待拼接数据时,从当前接收的tcp分段数据中解析出第一个行数据,将解析出的第一个行数据与待拼接数据进行拼接,得到第一类整行数据,从当前接收的tcp分段数据中解析出第二类整行数据,将第一类整行数据和第二类整行数据,确定为得到的整行数据;当不存在待拼接数据时,从当前接收的tcp分段数据中解析出第二类整行数据,将第二类整行数据确定为得到的整行数据。

对于本步骤3的说明,可参见上述实施例,在此不在赘述。

步骤4:确定是否存在包括的特征与得到的整行数据匹配的安全策略,其中,安全策略记录了多个特征;当存在时,

若得到的整行数据与该安全策略包括的全部特征匹配,则确定得到的整行数据为攻击数据,并阻断当前接收的tcp分段数据。

若得到的整行数据与该安全策略包括的部分特征匹配,则执行步骤5。

若得到的整行数据与该安全策略包括的特征均不匹配,则确定得到的整行数据不为攻击数据,并发送当前接收的tcp分段数据。

步骤5:判断通过前一个接收的tcp分段数据得到的整行数据,是否与该安全策略包括的部分特征匹配;若匹配,则执行步骤6;若不匹配,则确定当前得到的整行数据不为攻击数据,并发送当前接收的tcp分段数据。

步骤6:确定前一个得到的整行数据与该安全策略匹配的特征,和当前得到的整行数据与该安全策略匹配的特征是否连续,若连续,则执行步骤7。

步骤7:在当前得到的整行数据与该安全策略匹配的特征位于该安全策略的末尾时,确定得到的整行数据为攻击数据;否则,确定得到的整行数据不为攻击数据,并发送当前接收的tcp分段数据。

本发明实施例中,在接收到tcp分段数据后,网络设备可以通过该tcp分段数据得到整行数据,并检查该整行数据是否为攻击数据,最终根据检查结果,确定发送或者阻断当前接收的tcp分段数据。由此可见,由于本发明方法不对接收到的tcp分段数据进行缓存,且立即对接收到的tcp分段数据执行安全检查及发送或阻断动作,消除了等待接收各个tcp分段数据的间隔期,所以不仅可以节省网络设备的内存资源,还可以避免传输延迟,使传输效率得到提高。

与前述一种报文传输方法的实施例相对应,本发明还提供了一种报文传输装置的实施例。

参见图3,图3是本发明一种报文传输装置实施例的第一个结构图,该装置可以包括:接收单元310、获得单元320、检查单元330、发送单元360、阻断单元370。

其中,接收单元310,用于接收tcp分段数据,tcp分段数据是http报文的一个分段数据;

获得单元320,用于通过当前接收的tcp分段数据,得到整行数据;

检查单元330,用于检查得到的整行数据是否为攻击数据;

发送单元360,用于在得到的整行数据不为攻击数据,发送当前接收的tcp分段数据;

阻断单元370,用于在得到的整行数据为攻击数据,阻断当前接收的tcp分段数据。

作为一个实施例,获得单元320,可以包括:确定子单元321、处理子单元322。

其中,确定子单元321,用于确定预设缓存中是否存在属于http报文的待拼接数据;

处理子单元322,用于当存在待拼接数据时,从当前接收的tcp分段数据中解析出第一个行数据,将解析出的第一个行数据与待拼接数据进行拼接,得到第一类整行数据;从当前接收的tcp分段数据中解析出第二类整行数据;将第一类整行数据和第二类整行数据,确定为得到的整行数据;

以及用于,当不存在待拼接数据时,从当前接收的tcp分段数据中解析出第二类整行数据,将第二类整行数据确定为得到的整行数据。

作为一个实施例,上述装置还可以包括:确定单元340、存储单元350,具体可参见图4,图4是本发明一种报文传输装置实施例的第二个结构图。

其中,确定单元340,用于确定当前接收的tcp分段数据中的最后一个行数据是否为非整行数据;

存储单元350,用于在当前接收的tcp分段数据中的最后一个行数据为非整行数据时,将tcp分段数据中的最后一个行数据确定为待拼接数据,并在预设缓存中存储确定的待拼接数据。

作为一个实施例,检查单元330,可具体用于:

确定是否存在包括的特征与得到的整行数据匹配的安全策略,其中,安全策略记录了多个特征;当存在时,

若得到的整行数据与该安全策略包括的全部特征匹配,则确定得到的整行数据为攻击数据;

若得到的整行数据与该安全策略包括的部分特征匹配,则根据通过前一个接收的tcp分段数据得到的整行数据与该安全策略的匹配情况,确定得到的整行数据是否为攻击数据;其中,前一个接收的tcp分段数据属于http报文;

若得到的整行数据与该安全策略包括的特征均不匹配,则确定得到的整行数据不为攻击数据。

作为一个实施例,当检查单元330根据通过前一个接收的tcp分段数据得到的整行数据与该安全策略的匹配情况,确定得到的整行数据是否为攻击数据时,检查单元330可具体用于:

判断通过前一个接收的tcp分段数据得到的整行数据,是否与该安全策略包括的部分特征匹配;

若是,则确定前一个得到的整行数据与该安全策略匹配的特征,和当前得到的整行数据与该安全策略匹配的特征是否连续,若连续,则在当前得到的整行数据与该安全策略匹配的特征,位于该安全策略的末尾时,确定得到的整行数据为攻击数据,否则,确定得到的整行数据不为攻击数据。

本发明实施例中,在接收到tcp分段数据后,网络设备可以通过该tcp分段数据得到整行数据,并检查该整行数据是否为攻击数据,最终根据检查结果,确定发送或者阻断当前接收的tcp分段数据。由此可见,由于本发明方法不对接收到的tcp分段数据进行缓存,且立即对接收到的tcp分段数据执行安全检查及发送或阻断动作,消除了等待接收各个tcp分段数据的间隔期,所以不仅可以节省网络设备的内存资源,还可以避免传输延迟,使传输效率得到提高。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

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

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