一种IP包包头检测方法及装置与流程

文档序号:18751977发布日期:2019-09-24 21:15阅读:227来源:国知局
一种IP包包头检测方法及装置与流程

本发明涉及无线通信技术领域,尤其涉及一种ip包包头检测方法及装置。



背景技术:

目前,无论采用osi通信模型还是tcp/ip通信模型进行通信,应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装;相对的,在接收数据时,网络上的数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。在数据接收过程中,准确地抓取数据报文(如ip包),是必不可少的关键步骤。

另一方面,为了适应不同的通信需求,通信设备之间所采用的通信协议也是多种多样,甚至随着通信技术的发展,同一通信设备兼容多种通信协议已不足为奇。通信协议是指通信双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到确定的地方。

如何针对不同的通信协议,准确抓取与之对应的数据报文,具体如ip包,是目前网络通信的研究热点。在现有技术中,通常在已知当前通信协议类型的前提下,确定与该通信协议对应的ip包结构,进一步确定其包头信息,并在通信设备的抓包模块中,预先存储该包头信息作为包头检测的基准信息,将输入的ip包数据流与该基准信息进行比对,如若相同,则确定输入ip包数据流的当前位置为ip包包头。

由于对于不同的通信协议,ip包包头信息均不相同,因此,在现有技术中,针对不同的通信协议,需要对应设置不同的抓包模块。依照现有的这种方法,当一通信设备兼容多种通信协议时,则需要在该通信设备中设置多个针对不同通信协议的抓包模块,检测灵活性差且内存占用量大。

可见,现有技术中存在的技术问题为:ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求。



技术实现要素:

本发明针对现有技术中存在的,ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求的技术问题。提供了一种ip包包头检测方法及装置,能够对多种通信协议下的ip包数据流进行包头检测,灵活性好且资源占用少,进而能够满足兼容多种通信协议的通信方的通信需求。

一方面,本发明提供了一种ip包包头检测方法,应用于无线通信设备中,所述ip包包头检测方法包括以下步骤:

s1、基于所述无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;

s2、基于所述ip包包头标记信息生成包头检测列表;

s3、当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;

s4、当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;其中,n为大于等于1的整数;

s5、将所述当前ip包包头标记信息从相对于所述第一数据段的当前位置区域,以字节为单位向所述第二数据段进行移位,当所述当前ip包包头标记信息移动第i字节时,确定所述当前ip包包头标记信息的当前位置区域为第i位置区域;其中,i大于等于1小于等于n;

s6、令i在1~n范围内依次取整数值,将所述当前ip包包头标记信息依次与所述目标数据段中与所述第i位置区域对应的数据段进行第二相似度计算,以获得多个第二计算结果;

s7、确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

可选的,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现下降趋势或者先上升再下降的趋势。

可选的,任一所述ip包包头标记信息包括包头字节数和包头字节内容,所述步骤s2具体包括子步骤:

s21、基于所述全部通信协议类型的包头字节数,定义相应深度的临时列表;

s22、将所述包头字节内容存储至所述临时列表中,以生成包头检测列表;

其中,所述包头检测列表包括标记信息子列表和掩码子列表;所述标记信息子列表用于存储所述包头字节内容,所述掩码子列表用于存储与所述包头字节内容一一对应的掩码数据。

可选的,所述步骤s3具体包括子步骤:

s31、当所述无线通信设备接收ip包数据流时,循环读取所述标记信息子列表中的任一所述包头字节内容作为当前包头字节内容,以及从所述掩码子列表中读取与当前包头字节内容对应的掩码数据;

s32、基于所述当前包头字节内容和对应的掩码数据,将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果。

可选的,所述步骤s3中:将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,具体为:

依次读取所述当前ip包包头标记信息中的每一字节,并将所读取的字节中的各比特位对应与ip包数据流进行并行比对,以进行第一相似度计算。

另一方面,本发明还提供了一种ip包包头检测装置,包括:

ip包包头标记信息确定模块,用于基于无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;

包头检测列表生成模块,用于基于所述ip包包头标记信息生成包头检测列表;

第一相似度计算模块,用于当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;

目标数据段确定模块,用于当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;其中,n为大于等于1的整数;

移位模块,用于将所述当前ip包包头标记信息从相对于所述第一数据段的当前位置区域,以字节为单位向所述第二数据段进行移位,当所述当前ip包包头标记信息移动第i字节时,确定所述当前ip包包头标记信息的当前位置区域为第i位置区域;其中,i大于等于1小于等于n;

第二相似度计算模块,用于令i在1~n范围内依次取整数值,将所述当前ip包包头标记信息依次与所述目标数据段中与所述第i位置区域对应的数据段进行第二相似度计算,以获得多个第二计算结果;

ip包包头确定模块,用于确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

可选的,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现下降趋势或者先上升再下降的趋势。

可选的,所述包头检测列表生成模块具体包括:

临时列表定义单元,用于基于所述全部通信协议类型的包头字节数,定义相应深度的临时列表;

包头检测列表生成单元,用于将所述包头字节内容存储至所述临时列表中,以生成包头检测列表;

其中,任一所述ip包包头标记信息包括包头字节数和包头字节内容;所述包头检测列表包括标记信息子列表和掩码子列表;所述标记信息子列表用于存储所述包头字节内容,所述掩码子列表用于存储与所述包头字节内容一一对应的掩码数据。

可选的,所述第一相似度计算模块具体包括:

数据读取单元,用于当所述无线通信设备接收ip包数据流时,循环读取所述标记信息子列表中的任一所述包头字节内容作为当前包头字节内容,以及从所述掩码子列表中读取与当前包头字节内容对应的掩码数据;

相似度计算单元,用于基于所述当前包头字节内容和对应的掩码数据,将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果。

可选的,所述ip包包头确定模块用于将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,具体为用于:

依次读取所述当前ip包包头标记信息中的每一字节,并将所读取的字节中的各比特位对应与ip包数据流进行并行比对,以进行第一相似度计算。

本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:

在本发明申请中,适用于无线通信设备的ip包包头检测方法在实现的过程中,首先,基于所述无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;接着,基于所述ip包包头标记信息生成包头检测列表;当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;进一步,当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,将所述当前ip包包头标记信息以字节为单位相对于缓存的包数据流中的数据段进行移位,每移一字节,便将所述当前ip包包头标记信息与对应的数据段进行第二相似度计算,以获得多个第二计算结果;进一步确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。也就是说,通过根据通信设备所兼容的全部的通信协议,确定与各通信协议对应的ip包数据流的包头,并根据所确定的包头生成包头检测列表,通过循环读取包头检测列表中的ip包包头标记信息与接收的ip包数据流进行对比来确定ip包包头。其中,包头检测列表灵活可配置,一个检测列表适用于对多种通信协议的ip包包头进行检测,结构简单且资源占用少,有效地解决了现有技术中ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其它的附图。

图1为本发明实施例提供的第一种ip包包头检测方法流程图;

图2为本发明实施例提供的第二种ip包包头检测方法流程图;

图3a为本发明实施例提供的第一种包头检测列表示意图;

图3b为本发明实施例提供的第二种包头检测列表示意图;

图3c为本发明实施例提供的第三种包头检测列表示意图;

图4为本发明实施例提供的第三种ip包包头检测方法流程图;

图5a为本发明实施例提供的一种ip包接收处理模块的结构框图;

图5b为本发明实施例提供的一种ip包包头相似度计算过程中的移位示意图;

图5c为本发明实施例提供的一种第一计算结果和多个第二计算结果构成的曲线图;

图5d为本发明实施例提供的另一种第一计算结果和多个第二计算结果构成的曲线图;

图6a为本发明实施例提供的第一种ip包包头检测装置的结构框图;

图6b为本发明实施例提供的第二种ip包包头检测装置的结构框图。

具体实施方式

本发明实施例通过提供一种ip包包头检测方法,解决了现有技术中ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求的技术问题,包头检测列表灵活可配置,一个检测列表适用于对多种通信协议的ip包包头进行检测,结构简单且资源占用少,进而能够满足兼容多种通信协议的通信方的通信需求。

本发明实施例的技术方案为解决上述技术问题,总体思路如下:

本发明实施例提供了一种ip包包头检测方法,应用于无线通信设备中,所述ip包包头检测方法包括以下步骤:s1、基于所述无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;s2、基于所述ip包包头标记信息生成包头检测列表;s3、当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;s4、当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;其中,n为大于等于1的整数;s5、将所述当前ip包包头标记信息从相对于所述第一数据段的当前位置区域,以字节为单位向所述第二数据段进行移位,当所述当前ip包包头标记信息移动第i字节时,确定所述当前ip包包头标记信息的当前位置区域为第i位置区域;其中,i大于等于1小于等于n;s6、令i在1~n范围内依次取整数值,将所述当前ip包包头标记信息依次与所述目标数据段中与所述第i位置区域对应的数据段进行第二相似度计算,以获得多个第二计算结果;s7、确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

可见,在本发明方案中,通过根据通信设备所兼容的全部的通信协议,确定与各通信协议对应的ip包数据流的包头,并根据所确定的包头生成包头检测列表,通过循环读取包头检测列表中的ip包包头标记信息与接收的ip包数据流进行对比来确定包头。其中,包头检测列表灵活可配置,一个检测列表适用于对多种通信协议的ip包包头进行检测,结构简单且资源占用少,有效地解决了现有技术中ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求的技术问题。

为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。

实施例一

请参考图1,本发明实施例提供了一种ip包包头检测方法,应用于无线通信设备中,所述ip包包头检测方法包括以下步骤:

s1、基于所述无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;

s2、基于所述ip包包头标记信息生成包头检测列表;

s3、当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;

s4、当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;其中,n为大于等于1的整数;

s5、将所述当前ip包包头标记信息从相对于所述第一数据段的当前位置区域,以字节为单位向所述第二数据段进行移位,当所述当前ip包包头标记信息移动第i字节时,确定所述当前ip包包头标记信息的当前位置区域为第i位置区域;其中,i大于等于1小于等于n;

s6、令i在1~n范围内依次取整数值,将所述当前ip包包头标记信息依次与所述目标数据段中与所述第i位置区域对应的数据段进行第二相似度计算,以获得多个第二计算结果;

s7、确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

其中,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现下降趋势或者先上升再下降的趋势。

在本申请实施例中ip包包头检测方法适用于具有一种通信协议或兼容多种通信协议的通信设备,请参考图2,用于确定ip包包头标记信息的步骤s1具体包括以下子步骤:

s11、确定所述无线通信设备所兼容的全部通信协议;

s12、确定所述全部通信协议中每一通信协议定义的ip包包头;

s13、基于所述全部通信协议的ip包包头,确定所述全部通信协议的ip包包头标记信息。

可理解为,通信设备用于何种通信需求、设置了何种通信协议,均由用户设定,例如,通信设备兼容m个协议,m为大于等于1的整数,可见由用户接口可获知该通信设备所兼容的全部通信协议;进一步,对于每一种通信协议均可按照实际应用需求定义其ip数据流的ip包包头,例如:在通信协议1下,约定好在发送方发送ip包数据流时插入的ip包包头为“0x55”,在通信协议2下,约定好在发送方发送ip包数据流时插入的ip包包头为“0x4add”,...,在通信协议m下,约定好在发送方发送ip包数据流时插入的ip包包头为“0x8a352b”,等等。进一步,基于这些ip包包头生成ip包包头标记信息,具体的,可以直接令所述ip包包头标记信息等同于ip包包头,或者经过一定的转换规则(如求非、乘以一个系数或加上一个参数等等)来获得ip包包头标记信息。

进一步,在具体实施过程中,由于对于不同的通信协议,ip包包头的字节长度和字节内容也不同,为了能够满足所述全部通信协议的ip包包头标记信息的存储需求,且合理利用硬件存储资源,仍请参考图2,所述步骤s2具体包括子步骤:

s21、基于所述全部通信协议类型的包头字节数,定义相应深度的临时列表;

s22、将所述包头字节内容存储至所述临时列表中,以生成包头检测列表;

其中,任一所述ip包包头标记信息包括包头字节数和包头字节内容。

具体的,请参考图3a,为本申请实施例提供的一种包头检测列表示意图,针对通信设备所兼容的m个通信协议,该列表被划分为m段(行),每一段分别对应一种通信协议的ip包包头标记信息,用于存储该ip包包头标记信息的比特值,例如:第一段对应通信协议1,存储的ip包包头标记信息为“0x55”,长度为1byte(即8bit),第二段对应通信协议2,存储的ip包包头标记信息为“0x4add”,长度为2byte(即16bit),...,第m段对应通信协议m,存储的ip包包头标记信息为“0x8a352b”,长度为3byte(即24bit)。在具体实施过程中,可通过控制指针依次指向不同的表段,循环选择不同协议的ip包包头标记信息与当前输入的ip包数据流进行相似度计算,以分别确定与不同协议对应的ip包包头。

更具体的,可结合链表来实现,链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,“头指针”变量指向第一个元素;第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“null”(表示“空地址”),链表到此结束;当然,根据具体应用需要,最后一个元素还可指向第一个元素,以形成循环工作模式。如图3b所示,包头检测列表为地址链表,每一地址对应一存储有ip包包头标记信息的存储单元。当地址指针循环指向不同的链表地址时,对应循环读取与不同地址对应的ip包包头标记信息。

进一步,在具体实施过程中,请参考图3c,所述包头检测列表包括标记信息子列表和掩码子列表;其中,所述标记信息子列表用于存储所述包头字节内容,所述掩码子列表用于存储与所述包头字节内容一一对应的掩码数据。相应地,请参考图4,所述步骤s3具体包括子步骤:

s31、当所述无线通信设备接收ip包数据流时,循环读取所述标记信息子列表中的任一所述包头字节内容作为当前包头字节内容,以及从所述掩码子列表中读取与当前包头字节内容对应的掩码数据;

s32、基于所述当前包头字节内容和对应的掩码数据,将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果。

可理解为,本实施例方案的相似度计算涉及位级运算,这里的掩码是一个位模式,表示从一个字节中选出的位的集合。例如,掩码0xff(最低的8位为1)表示一个字的低位字节。位级运算x&0xff生成一个由x的最低有效字节组成的值,而其他的字节就被置为0。比如,对于x=0x89abcdef,其表达式将得到0x000000ef。再结合本方案,当某一通信协议的ip包包头标记信息为0x89abcdef(4byte、32bit)、掩码数据为0xff时,即只对输入ip包数据流中与ip包包头标记信息为0x89abcdef低8位(即最末一个字节ef)对应的ip包数据流进行相似度计算,其它置0的位不予计算或计算结果不予考虑。

其中,所述步骤s3中:将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,具体为:依次读取所述当前ip包包头标记信息中的每一字节,并将所读取的字节中的各比特位对应与ip包数据流进行并行比对,以进行第一相似度计算。例如,所述当前ip包包头标记信息有4字节,逐次读取四个字节,将每一字节中的8个信息比特位并行与ip包数据流进行相似度计算。具体的,在此过程中,首先分别考虑每一字节的相似度计算子结果,如若该相似度计算子结果达到预设值(如8位中有7位相同),则确定该字节为ip包包头中的组成字节,并接着对所述当前ip包包头标记信息中的下一字节进行相似度计算,直至所述当前ip包包头标记信息中所有字节计算完成之后,综合所有计算结果,以确定ip包包头;相对的,如果有一个字节的相似度计算结果不满足要求,则确定ip包数据流的当前数据段不是ip包包头。

更具体的,以ip包数据流为“......byte4byte3byte2byte1byte0”、且ip包包头为两字节为例,首先对先输入的两字节数据(即byte1和byte0)进行相似度计算,当计算结果均达到要求,确定其为所述第一数据段,否则,左移一字节,以下一个两字节(即byte2和byte1)为对象进行相似度计算,其它情况依此类推,这里不再一一赘述。

需要指出的是,在进行相似度计算时,也可将所述当前ip包包头标记信息依次按两个字节的长度与ip包数据流进行相似度计算,即依次读取所述当前ip包包头标记信息中的每两个字节,并将所读取的字节中的各比特位对应与ip包数据流进行并行比对,以进行第一相似度计算,计算过程同上述单个字节的情况,这里不再一一赘述。

接着,请参考图5a,为通信设备ip包接收模块的结构示意图,该ip包接收模块500包括ip包缓存器51、ip包包头检测器52和ip包处理器53。该ip包缓存器51在时钟信号clk1的控制下接收发送方的ip包数据流data_in,并分别传送至ip包包头检测器52和ip包处理器53中,其中,ip包包头检测器52用于在时钟信号clk2的控制下,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果,并将第一计算结果输出至ip包处理器53,当计算到所述当前ip包包头标记信息的末字节,且所述计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;接着,基于所述当前ip包包头标记信息和所述目标数据段确定ip包包头,进一步通过ip包处理器53基于ip包包头进行抓包处理,并输出处理后的数据data_out。其中,时钟信号clk1与clk2可为异步时钟信号。

进一步,对于本实施方案中“将所述当前ip包包头标记信息以比字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果”,具体可理解为:当某一通信协议ip包包头标记信息的字节数为p时,则将p字节的ip包包头标记信息从第一字节开始,按字节逐次与输入的ip包数据流进行比较,获得相似度计算子结果,当该相似度计算子结果达到预设值(如8位中有7位相同)则输出1,否则输出0,结合图5a,在ip包包头检测器52中还设置有累加器,用于对输出结果中的“1”进行累加。进一步,当比较到ip包包头标记信息的第p字节、且累加器的累加结果q所占p的比例k=q/p达到预设值(如0.85)时,则确定输入ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;相反,则舍弃当前结果,重新进行比较。其中,n为大于等于1的整数,q为整数。当然,在具体实施过程中,还可通过能量计算或者其他方式来进行相似度计算。

进一步,为了减小或避免由于噪声等引起的计算误差,在所述第一计算结果达到预设值,且确定所述目标数据段之后,将所述当前ip包包头标记信息以字节为单位相对于缓存的由所述第一数据段和所述第二数据段组成的目标数据段进行移位,每移一字节,便将所述当前ip包包头标记信息与对应的数据段进行相似度计算,以获得多个第二计算结果;进一步,确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包步头。

具体的,如图5b所示,所述ip包数据流的用于所述第一相似度计算的第一数据段d1(如图5b中所示5个字节“b0~b4”)在当前位置区域area0(虚线a0和虚线b0之间的区域)与所述当前ip包包头标记信息(pt,packagetag)对应进行第一相似度计算获得的第一计算结果达到所述预设值时,确定第一数据段d1和紧邻其后的n字节的第二数据段d2为目标数据段。接着,将所述当前ip包包头标记信息pt从相对于所述第一数据段d1的当前位置区域area0,以字节为单位向所述第二数据段d2进行移位,当所述当前ip包包头标记信息pt移动一字节时,确定所述当前ip包包头标记信息的当前位置区域为第一位置区域area1(虚线a1和虚线b1之间的区域),并将所述当前ip包包头标记信息pt与所述目标数据段中第一位置区域area1的数据段(如图5b中所示5个字节“b1~b5”)进行第二相似度计算,以获得第二计算结果;进一步,将所述当前ip包包头标记信息pt从第一位置区域area1,继续以字节为单位向所述第二数据段d2进行移位,当所述当前ip包包头标记信息pt移动又一字节时,确定所述当前ip包包头标记信息的当前位置区域为第二位置区域area2(虚线a2和虚线b2之间的区域),并将所述当前ip包包头标记信息pt与所述目标数据段中第二位置区域area2的数据段(如图5b中所示5个字节“b2~b6”)进行第二相似度计算,以获得又一第二计算结果;...依次类推,移动当前ip包包头标记信息pt,并与目标数据段中对应的数据段进行相似度计算,以获得多个第二计算结果。其中,所述第二相似度计算的方法可与所述第一相似度计算的方法相同,这里不再一一赘述。

其中,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现下降趋势,如图5c所示,曲线l1即为所述第一计算结果和所述多个第二计算结果构成的曲线,点a1对应所述第一计算结果,其它点值对应所述多个第二计算结果,所述第一计算结果为最大值,并确定所述目标数据段中用于进行相似度计算获得所述第一计算结果的数据段为ip包包头。或者,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现上升再下降的趋势,如图5d所示,曲线l2即为所述第一计算结果和所述多个第二计算结果构成的曲线,点a2对应所述第一计算结果,其它点值对应所述多个第二计算结果,点b2为最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

另外,在具体实施过程中,对于自定义的通信协议,其ip包包头也可是自定义的。根据开放系统互连参考模型(osi,opensysteminterconnect),网络架构分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层;根据tcp/ip四层模型,网络架构分为:网络接口层、互联网络层、传输层和应用层。在从应用层将ip包数据流发送到网络上时,每一层都需对应用数据进行加封装,在从网络上接收ip数据流时,每一层都需要对ip数据流进行解封装以获得应用数据。可见,在同一通信协议下,ip包数据流针对不同的层,具有多个不同的ip包包头,在具体实施过程中,可在不同的层分别实施本方案的ip包包头检测方法进行本层包头检测,也可在底层(如物理层),针对所有层的ip包包头进行检测。

总而言之,在本发明方案中,通过根据通信设备所兼容的全部的通信协议,确定与各通信协议对应的ip包数据流的包头,并根据所确定的包头生成包头检测列表,通过循环读取包头检测列表中的ip包包头标记信息与接收的ip包数据流进行对比来确定包头。其中,包头检测列表灵活可配置,一个检测列表适用于对多种通信协议的ip包包头进行检测,结构简单且资源占用少,有效地解决了现有技术中ip包包头检测方案适用于对单一通信协议进行包头检测,无法满足兼容多种通信协议的通信方的通信需求的技术问题。

实施例二

基于同一发明构思,请参考图6a,本申请实施例还提供了一种ip包包头检测装置,包括:

ip包包头标记信息确定模块61,用于基于无线通信设备所兼容的全部通信协议,确定所述全部通信协议的ip包包头标记信息;

包头检测列表生成模块62,用于基于所述ip包包头标记信息生成包头检测列表;

第一相似度计算模块63,用于当所述无线通信设备接收ip包数据流时,循环读取所述包头检测列表中的任一ip包包头标记信息作为当前ip包包头标记信息,并将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果;

目标数据段确定模块64,用于当计算到所述当前ip包包头标记信息的末字节,且所述第一计算结果达到预设值时,确定所述ip包数据流的用于所述第一相似度计算的第一数据段,以及所述第一数据段后的n字节的第二数据段构成的数据段为目标数据段;其中,n为大于等于1的整数;

移位模块65,用于将所述当前ip包包头标记信息从相对于所述第一数据段的当前位置区域,以字节为单位向所述第二数据段进行移位,当所述当前ip包包头标记信息移动第i字节时,确定所述当前ip包包头标记信息的当前位置区域为第i位置区域;其中,i大于等于1小于等于n;

第二相似度计算模块66,用于令i在1~n范围内依次取整数值,将所述当前ip包包头标记信息依次与所述目标数据段中与所述第i位置区域对应的数据段进行第二相似度计算,以获得多个第二计算结果;

ip包包头确定模块67,用于确定所述第一计算结果和所述多个第二计算结果中的最大值,并确定所述目标数据段中用于进行相似度计算获得所述最大值的数据段为ip包包头。

其中,所述第一计算结果和所述多个第二计算结果所构成的曲线呈现下降趋势或者先上升再下降的趋势。

当前ip包包头标记信息进一步,为了能够确定通信设备所兼容的全部通信协议的ip包包头标记信息,请参考图6b,所述ip包包头标记信息确定模块61包括:

通信协议确定单元611,用于确定所述无线通信设备所兼容的全部通信协议;

包头确定单元612,用于确定所述全部通信协议中每一通信协议定义的ip包包头;

ip包包头标记信息确定单元613,用于基于所述全部通信协议的ip包包头,确定所述全部通信协议的ip包包头标记信息。

在具体实施过程中,由于对于不同的通信协议,ip包包头的长度和字节内容也不同,为了能够满足所述全部通信协议的ip包包头标记信息存储需求,且合理利用硬件存储资源,仍请参考图6b,所述包头检测列表生成模块62具体包括:

临时列表定义单元621,用于基于所述全部通信协议类型的包头字节数,定义相应深度的临时列表;

包头检测列表生成单元622,用于将所述包头字节内容存储至所述临时列表中,以生成包头检测列表;

其中,任一所述ip包包头标记信息包括包头字节数和包头字节内容。

具体的,本实施例方案的相似度计算涉及位级运算,为了利用掩码从一个字节中选出的位的集合,所述包头检测列表包括标记信息子列表和掩码子列表;

其中,所述标记信息子列表用于存储所述包头字节内容,所述掩码子列表用于存储与所述包头字节内容一一对应的掩码数据。

进一步,还请参考图6b,所述第一相似度计算模块63具体包括:

数据读取单元631,用于当所述无线通信设备接收ip包数据流时,循环读取所述标记信息子列表中的任一所述包头字节内容作为当前包头字节内容,以及从所述掩码子列表中读取与当前包头字节内容对应的掩码数据;

相似度计算单元632,用于基于所述当前包头字节内容和对应的掩码数据,将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,以获得第一计算结果。

其中,所述ip包包头确定模块64用于将所述当前ip包包头标记信息以字节为单位,依次与所述ip包数据流进行第一相似度计算,具体为用于:依次读取所述当前ip包包头标记信息中的每一字节,并将所读取的字节中的各比特位对应与ip包数据流进行并行比对,以进行第一相似度计算。

根据上面的描述,上述ip包包头检测装置用于实现上述ip包包头检测方法,所以,该ip包包头检测装置与上述ip包包头检测方法的一个或多个实施例一致,在此就不再一一赘述了。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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