基于正则表达式的tcp报文匹配方法
【专利摘要】本发明提供一种基于正则表达式的TCP报文匹配方法,其包括:读取所有的正则表达式规则,设置成一个匹配规则列表;根据正则表达式的字段顺序对TCP报文逐个字段依次进行匹配:根据当前字段内容遍历其所对应的匹配规则列表,将与当前字段内容冲突的匹配规则移除匹配规则列表;如果正则表达式中有字段没有相应的匹配规则,则表示TCP报文匹配失败;如果正则表达式中每个字段都有相应的匹配规则,则表示TCP报文匹配成功,允许报文通过。本发明的TCP报文匹配方法具有效率高、安全性好的优点。
【专利说明】基于正则表达式的TCP报文匹配方法
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种基于正则表达式的TCP报文匹配方法。
【背景技术】
[0002]TCP/IP 协议是 Transmission Control Protocol/Internet Protocol 的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了 4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。
[0003]目前,常用的TCP报文匹配方法无法在网络层根据各种具体标志(比如序号,确认序号等)进行TCP报文控制,而是一味让所有TCP报文通过,再通过上层程序在接收报文之后进行二次分析,极大的影响了系统的收发效率及CPU资源,尤其对于那些网络安全要求十分高的设备会造成极其严重的后果,甚至导致设备损坏或被攻击,造成经济损失和个人隐私被泄露等问题。
【发明内容】
[0004]为了解决现有技术的上述问题,有必要提供一种效率高、安全性好的TCP报文过滤方法。
[0005]本发明解决技术问题提供的技术方案是:
一种基于正则表达式的TCP报文匹配方法,其包括:
读取所有的正则表达式规则,设置成一个匹配规则列表;
根据正则表达式的字段顺序对TCP报文逐个字段依次进行匹配:根据当前字段内容遍历其所对应的匹配规则列表,将与当前字段内容冲突的匹配规则移除匹配规则列表;如果正则表达式中有字段没有相应的匹配规则,则表示TCP报文匹配失败;
如果正则表达式中每个字段都有相应的匹配规则,则表示TCP报文匹配成功,允许报文通过。
[0006]其中,所述正则表达式包括报文的源地址字段、报文的源地址所使用的端口号字段、报文的目的地址字段、报文目的地址所使用的端口号字段、报文的序列号字段、报文的确认序号字段、TCP协议中紧急指针字段是否有效标志字段、TCP协议中确认号字段是否有效标志字段、TCP协议中当前报文是否需要请求PUSH操作标志字段、TCP协议中是否需要复位TCP连接标志字段、TCP协议中建立TCP连接时所用的同步序号字段、TCP协议中释放TCP连接时发送方结束标志字段、发送方在接收时需要调整的窗口大小字段。
[0007]进一步的,所述正则表达式格式如下:
tcpmatch [src_ip:xx.xx.xx.xx][src_port:xx][dst_ip:xx.xx.xx.xx] [dst_port:xx] [sequene_number:xx][acknowledgment_number:xx][urg:x][ack:x][psh:x][rst:x] [syn:x] [fin:x] [window:xx]
其中,tcpmatch代表正则表达式的起始标识;src_ip代表报文的源地址字段,xx.xx.xx.xx代表指定的地址;src_port代表报文的源地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;dst_ip代表报文的目的地址字段,xx.xx.xx.xx代表指定的IP地址;dst_p0rt代表报文目的地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;sequence_number代表报文的序列号字段,xx代表指定的序列号,范围是1_232 ;acknowledgment_number代表报文的确认序号字段,xx代表指定的序列号,范围是1_232 ;urg代表TCP协议中紧急指针字段是否有效标志字段,X代表该标志状态,范围是0或I ;ack代表TCP协议中确认号字段是否有效标志字段,X代表该字段状态,范围是0或I ;psh代表TCP协议中当前报文是否需要请求I3USH操作标志字段,X代表该字段状态,范围是0或I ;rst代表TCP协议中是否需要复位TCP连接标志字段,X代表该字段状态,范围是0或I ;syn代表TCP协议中建立TCP连接时所用的同步序号字段,x代表该字段状态,范围是0或I ;fin代表TCP协议中释放TCP连接时发送方结束标志字段,X代表该字段状态,范围是0或I ;window代表发送方在接收时需要调整的窗口大小字段,xx代表window大小,范围是1-65535。[0008]进一步的,每个字段对应多个匹配规则,用于进行多种格式的报文匹配。
[0009]进一步的,首个TCP报文匹配成功后形成的新的匹配规则列表,用于对其后的TCP报文进行匹配。
[0010]与现有技术相比较,本发明的TCP报文匹配方法可以在TCP匹配规则中精确控制到TCP协议中的每一个标志和字段,实现了基于正则表达的TCP报文匹配管理,对于符合条件的TCP报文在网络层进行控制,防止不符合规则或不合理的报文进入下一层网络,极大的提高了设备工作效率,节省了 CPU时间,提升设备安全性。
【专利附图】
【附图说明】
[0011]图1是本发明的TCP报文匹配的工作流程图。
[0012]图2是本发明的利用正则表达式对TCP报文匹配的工作流程图。
【具体实施方式】
[0013]本发明设计的正则表达式格式如下:
tcpmatch [src_ip:xx.xx.xx.xx][src_port:xx][dst_ip:xx.xx.xx.xx] [dst_port:xx] [sequene_number:xx][acknowledgment_number:xx][urg:x][ack:x][psh:x][rst:x] [syn:x] [fin:x] [window:xx]
其中,tcpmatch代表正则表达式的起始标识;src_ip代表报文的源地址字段,xx.xx.xx.xx代表指定的地址;src_port代表报文的源地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;dst_ip代表报文的目的地址字段,xx.xx.xx.xx代表指定的IP地址;dst_p0rt代表报文目的地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;sequence_number代表报文的序列号字段,xx代表指定的序列号,范围是1_232 ;acknowledgment_number代表报文的确认序号字段,xx代表指定的序列号,范围是1_232 ;urg代表TCP协议中紧急指针字段是否有效标志字段,X代表该标志状态,范围是0或I ;ack代表TCP协议中确认号字段是否有效标志字段,X代表该字段状态,范围是O或I ;psh代表TCP协议中当前报文是否需要请求I3USH操作标志字段,X代表该字段状态,范围是O或I ;rst代表TCP协议中是否需要复位TCP连接标志字段,X代表该字段状态,范围是O或I ;syn代表TCP协议中建立TCP连接时所用的同步序号字段,x代表该字段状态,范围是O或I ;fin代表TCP协议中释放TCP连接时发送方结束标志字段,X代表该字段状态,范围是O或I ;window代表发送方在接收时需要调整的窗口大小字段,xx代表window大小,范围是1-65535。
[0014]以上字段都是可选项,但至少需要一个字段被填充,否则表达式错误。如果某个字段为空,表示该字段允许任意值。每个字段对应多个匹配规则,用于进行多种格式的报文匹配。
[0015]如图1所示,本发明的TCP报文匹配的工作方式如下:
步骤1:网络设备接收到报文,进行基本报文处理之后转到步骤2 ;
步骤2:分析报文,判断是否IPv4报文,如果是IPv4报文则转步骤3 ;否则直接跳过匹配模块,结束;
步骤3:判断是否TCP报文,如果是则转步骤4,否则直接跳过匹配模块,结束; 步骤4:查找是否存在匹配规则文件,以确定匹配规则是否存在,如果存在则转步骤5 ;否则不运行TCP报文匹配模块,结束;
步骤5:运行TCP报文匹配模块,对接收的报文按照匹配规则进行匹配过滤。
[0016]如图2所示,本发明中,利用正则表达式对TCP报文匹配的过程如下:
步骤1:读取所有的正则表达式规则,设置成一个匹配规则列表,转步骤2 ;
步骤2 --按照 src_ip、 src_port、 dst_ip、 dst_port、 sequence_number、acknowledgment_number、urg、ack、psh、rst、syn、fin、window 的顺序设置匹配字段顺序,转步骤3 ;
步骤3:读取首个匹配字段,转步骤4 ;
步骤4:按照当前匹配字段读取TCP报文中相应字段内容,转步骤5 ;
步骤5:根据当前字段内容遍历匹配规则列表,将与当前字段内容冲突的匹配规则移除列表,转步骤6 ;
步骤6:判断匹配规则列表中是否还有匹配规则,如果有转步骤7 ;否则转步骤10 ; 步骤7:判断是否是最后一个匹配字段,如果是转步骤8 ;否则转步骤11 ;
步骤8:判断匹配规则列表中是否还有匹配规则,如果有转步骤9 ;否则转步骤10 ; 步骤9:匹配成功,结束;
步骤10:匹配失败,结束;
步骤11:切换下一匹配字段,返回步骤4。
[0017]匹配成功后,TCP报文被允许通过;另外形成了一个新的匹配规则列表,对其后的TCP报文可进行迅速的匹配。
[0018]与现有技术相比较,本发明的TCP报文匹配方法可以在TCP匹配规则中精确控制到TCP协议中的每一个标志和字段,实现了基于正则表达的TCP报文匹配管理,对于符合条件的TCP报文在网络层进行控制,防止不符合规则或不合理的报文进入下一层网络,极大的提高了设备工作效率,节省了 CPU时间,提升设备安全性。[0019]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
【权利要求】
1.一种基于正则表达式的TCP报文匹配方法,其特征在于,包括: 读取所有的正则表达式规则,设置成一个匹配规则列表; 根据正则表达式的字段顺序对TCP报文逐个字段依次进行匹配:根据当前字段内容遍历其所对应的匹配规则列表,将与当前字段内容冲突的匹配规则移除匹配规则列表; 如果正则表达式中有字段没有相应的匹配规则,则表示TCP报文匹配失败; 如果正则表达式中每个字段都有相应的匹配规则,则表示TCP报文匹配成功,允许报文通过。
2.根据权利要求1所述的基于正则表达式的TCP报文匹配方法,其特征在于,所述正则表达式包括报文的源地址字段、报文的源地址所使用的端口号字段、报文的目的地址字段、报文目的地址所使用的端口号字段、报文的序列号字段、报文的确认序号字段、TCP协议中紧急指针字段是否有效标志字段、TCP协议中确认号字段是否有效标志字段、TCP协议中当前报文是否需要请求I3USH操作标志字段、TCP协议中是否需要复位TCP连接标志字段、TCP协议中建立TCP连接时所用的同步序号字段、TCP协议中释放TCP连接时发送方结束标志字段、发送方在接收时需要调整的窗口大小字段。
3.根据权利要求2所述的基于正则表达式的TCP报文匹配方法,其特征在于,所述正则表达式格式如下:
tcpmatch [src_ip:xx.xx.xx.xx][src_port:xx][dst_ip:xx.xx.xx.xx][dst_port:xx] [sequene_number:xx][acknowledgment_number:xx][urg:x][ack:x] [psh:x][rst:x] [syn:x] [fin:x] [window:xx] 其中,tcpmatch代表正则表达式的起始标识;src_ip代表报文的源地址字段,xx.xx.xx.xx代表指定的地址;src_port代表报文的源地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;dst_ip代表报文的目的地址字段,xx.xx.xx.xx代表指定的IP地址;dst_p0rt代表报文目的地址所使用的端口号字段,xx代表指定的端口号,范围是1-65535 ;sequence_number代表报文的序列号字段,xx代表指定的序列号,范围是1_232 ;acknowledgment_number代表报文的确认序号字段,xx代表指定的序列号,范围是1_232 ;urg代表TCP协议中紧急指针字段是否有效标志字段,X代表该标志状态,范围是0或I ;ack代表TCP协议中确认号字段是否有效标志字段,X代表该字段状态,范围是0或I ;psh代表TCP协议中当前报文是否需要请求I3USH操作标志字段,X代表该字段状态,范围是0或I ;rst代表TCP协议中是否需要复位TCP连接标志字段,X代表该字段状态,范围是0或I ;syn代表TCP协议中建立TCP连接时所用的同步序号字段,x代表该字段状态,范围是0或I ;fin代表TCP协议中释放TCP连接时发送方结束标志字段,X代表该字段状态,范围是0或I ;window代表发送方在接收时需要调整的窗口大小字段,xx代表window大小,范围是1-65535。
4.根据权利要求2所述的基于正则表达式的TCP报文匹配方法,其特征在于,每个字段对应多个匹配规则,用于进行多种格式的报文匹配。
5.根据权利要求1所述的基于正则表达式的TCP报文匹配方法,其特征在于,首个TCP报文匹配成功后形成的新的匹配规则列表,用于对其后的TCP报文进行匹配。
【文档编号】H04L29/06GK103607313SQ201310659697
【公开日】2014年2月26日 申请日期:2013年12月9日 优先权日:2013年12月9日
【发明者】丁腾飞 申请人:深圳市双赢伟业科技股份有限公司