专利名称:识别和验证消息协议类型的方法和装置的制作方法
技术领域:
本发明涉及通信领域,尤其涉及一种识别和验证消息协议类型的方法和装置。
背景技术:
网络协议即网络中(包括互联网)传递、管理信息的一些规范。无论是对 网络架构、网络使用情况等方面的检测,还是为了提高网络服务质量,对网络 异常流量的检测,都首先需要对网络流量的所属协议类型进行识别。
目前的应用层协议识别方案,为一种基于特征字符的识别方法。该方法根 据网络协议的特点,提取一个或多个消息的特征字符,组成协议指紋,同时提 取组成协议指紋的特征字符以外的特征字符,组成协议的验证规则。
例如,以识别HTTP ( Hypertext Transfer Protocol,超文本传输协议)为例 首先建立协议指紋集,包括"GET,,和"POST,,,然后分别为协议指紋"GET"和 "POST"建立相应的3全证规则集。
HTTP协议指紋"GET,,的验证规则集为
规则1:文本中必须含有"TTP"字符串;
规则2:文本中必须包含'Vm"字符串。
HTTP协议指紋"POST"的验证规则集为
规则l:文本中必须含有"rW,字符串;
规则2:文本中必须包含"Content - Length,,字符串。
一种协议对应 一个或多个协议指紋, 一个协议指紋对应 一个或多个验证规 则。已有的应用层切、-汉识别方法包括获取两个IP地址的端口之间传输的消息, 将消息与协议指紋匹配, 一旦匹配成功,则激活该协议指紋的验证规则集。通过协议指紋的验证规则集的验证后,则判断为协议类型识别成功。在协议类型 识别成功后,采用 <源IP地址、源IP地址的端口 、目标IP地址、目标IP地址 的端口、协议类型>的五元组形式,存储消息的两个传输端以及消息所属的协议 类型,组成固化表,以进行"记忆"。这种形式的固化表只对当前会话流的识别有 效,并且会占用大量的系统资源的空间。
在上述方案的实施过程中,发明人发现现有技术中至少存在以下问题单 纯的通过消息的特征字符组成协议指紋,通过组成协议指紋的特征字符以外的 特征字符组成协议指紋的验证规则集,根据消息所包含的一些特征字符而识别 其所属的协议类型,这样的识别及验证方法不完善,误报率比较高,如包括这 些特征字符的其它协议类型的消息,也会被识别出属于该协议类型。
发明内容
本发明的实施例提供了 一种识别消息协议类型的方法,能够识别消息所属 的协议类型,识别的正确率比较高。
一方面,本发明实施例提供了一种识别消息协议类型的方法,包括 获得通讯端之间传输的消息;
查找与所述消息相匹配的消息识别模板,所述消息识别模板包含消息的特 征字符和特征字符的格式;
查找与该消息相匹配的消息识别才莫板对应的协议类型。
另一方面,本发明实施例提供了一种验证消息协议类型的方法,包括
连续获得通讯端之间传输的至少两条消息;
判断获得的至少两条消息与消息验证模板是否匹配,所述消息验证模板顺
本发明实施例还提供了一种识别消息协议类型的方法,包括:获得通讯端之间传输的消息;
查找与所述消息相匹配的消息识别模板,所述消息识别模板包含消息的特 征字符和特征字符的格式;
查找与该消息相匹配的消息识别模板对应的协议类型;
判断获得的消息与消息验证模板是否匹配,所述消息验证模板顺序包含至 少两条消息的特征字符以及特征字符的格式;
如果匹配,则确定所述消息的协议类型为查找的与该消息相匹配的消息识 别模板对应的协议类型。
本发明实施例提供了 一种识别消息协议类型的装置,包括
第一获得单元,用于获得通讯端之间传输的消息;
第一查找单元,用于查找与该消息相匹配的消息识别模板,所述消息识别 模板包含消息的特征字符和特征字符的格式;
第二查找单元,用于查找与该消息相匹配的消息识别模板对应的协议类型。 本发明实施例还提供了 一种验证消息协议类型的装置,包括 第二获得单元,用于连续获得通讯端之间传输的至少两条消息; 判断单元,用于判断获得的至少两条消息与消息验证模板是否匹配,所述
本发明实施例识别消息协议类型的方法和装置,通过查找与获得的通讯端 间传输的消息相匹配的消息识别模板,并将进一步查找到的与该识别模板所对 应的协议类型作为消息协议类型。作为识别标准的消息识别^^莫板不仅包括协议 中消息的特征字符,而且包括消息的特征字符格式,提高了识别消息协议类型 的正确率。本实施例验证消息协议类型的方法和装置,作为验证标准的消息验 证模板不仅包括协议中消息的特征字符,而且包括消息的特征字符格式,并且消息验证模板包含的至少两条消息的特征字符以及特征字符的格式的顺序与通 信过程中消息的交互顺序一致,模拟了消息的交互过程,每个协议的消息交互 过程是该协议特有的,所以就能提高通过协议验证的协议类型的正确性。
图1是本发明实施例消息协议类型的识别方法流程图; 图2是本发明实施例消息协议类型的验证方法流程图; 图3是本发明实施例协议类型识别过程的协议状态机示意图; 图4是本发明实施例SMTP (Simple Message Transfer Protocol,简单邮件传 输协议)消息的典型交互过程图5是本发明实施例SMTP消息的协议验证过程; 图6是本发明实施例识别消息协议类型的装置示意图; 图7是本发明实施例验证消息协议类型的装置示意图。
具体实施例方式
本发明实施例提供的识别消息协议类型的技术方案,根据消息的特征字符 和特征字符格式,识別消息协议类型,并且根据消息的特征字符、特征字符格 式以及消息的交互顺序,对识别出的消息协议类型进行验证。
如图1所示,为本发明实施例消息协议类型的识别方法流程图,该方法包
括
步骤IOI,获得通讯端之间传输的消息。
其中,通讯端包括客户端(Client)和月l务器端(Server),也可以包括两个 对等的通讯端。客户端包括移动终端(如移动电话、个人电脑PC、个人数字助理PDA)和固定终端(如固定电话)等。本实施例中,获得消息的过程可以包 括主动从通讯端处获取消息,或者为被动接收通讯端发送的消息。
在本步骤中,可以获得通讯端间传输的完整的消息(如完整的一条或两条 消息),也可以获得通讯端间传输的部分消息,如一条消息的部分字节(如前100 字节),这样可以降低系统负担。
步骤102,查找与该消息相匹配的消息识别模板。
本发明实施例中所称的消息识别模板用于表达协议消息(如会话发起协议 SIP消息、与承载无关的呼叫控制协议BICC消息、简单邮件传送协议SMTP消 息等)包含的特征字符以及特征字符的格式,其中,特征字符为协议消息所特 有的关键字符,特征字符的格式包括特征字符在协议消息中的位置(例如在协 议消息的开头或结尾)、特征字符的数量、以及不同特征字符之间的前后顺序。 本实施例中所称的与该消息相匹配,是指该消息满足消息识别模板表达的特征 字符以及特征字符的格式。本实施例中,可以预先设置多个消息识别模板,一 种消息识别模板对应一种协议类型(即一种消息识别模板关联一种协议类型), 用于表达一种协议消息包含的特征字符以及特征字符的格式。本步骤中,可以 在预先设置的消息识别模板中(预先设置的消息识别模板可以为 一个或者多 个),查找与该消息相匹配的消息识别^t板,以确定与该消息相匹配的消息识别 模板。
本实施例中的消息识别模板可以用"正则表达式,,表示。正则表达式由普通字 符(例如字符a到z)以及特殊字符(称为元字符)组成,描述在查找字符时 待匹配的一个或多个特征字符以及特征字符格式。特征字符的格式包括特征字 符在消息中的位置(例如在消息的开头或结尾)、特征字符的数量、以及不同特 征字符之间的前后顺序。例如,在正则表达式(alb"c中,"*"表示重复0次或多次,T表示或运算。正则表达式(aibfc表示的字符串为0个或多个字符a或字 符b,接着为l个字符c。满足正则表达式(alb)&的字符串可以是ac、 bc、 abc、 aabc、 abbc、 c等。本实施例中的消息模板也可以采用其他的表示方法,也可以 采用自定义规则的表示,只要消息模板能够包含特征字符以及特征字符的格式 即可。
进一步,本发明实施例中还可以在数据库(如协议识别库)中设置协议类 型识别规则,并将消息的识别模板,以及消息识别模板所对应的协议类型记录 在协议类型识别规则中。其中,识别失见则的冲各式可以为协议类型识别规则的编号消息识别模板。
其中,"协议类型识别规则的编号,,字段表示消息识别模板对应的协议类型; "消息识别模板"字段包含消息的特征字符,以及特征字符的格式;",,号表示分隔符。
下面以SMTP为例,描述查找与SMTP消息相匹配的消息识别才莫^^的过程。 首先预先设置消息识别模板。以SMTP消息为例,可以根据SMTP在经过 TCP (Transfer Control Protocol,传输控制协议)三次握手以后,服务器端返回的 第一个应答,预先设置SMTP消息识别模板(以正则表达式表示消息识别模板 为例),并进一步形成如下协议类型识别规则SMTP :A220[\x09\x0b-\x0d - ]*("smtp'T'mail")。其中
SMTP为协议类型识别规则的编号,表示消息识别模板对应的协议类型为 SMTP;
正则表达式A220Bx0Wx0bAx0d - ]*("311^"|"11^1")的元字符"",表示"匹配字 符串的开始位置,,,元字符"*,,表示"匹配前面的子表达式出现零次或多次", ,x09Xx0bAx0d—],,表示任意字符,该正则表达式表示的消息识别模板为以220开始,然后为0个或几个任意字符,接下来的字符为smtp或mail。
接着将获得的消息与消息识别模板相匹配。优选的,本实施例可以通过具
有特定状态和迁移条件的状态机来实现模板匹配首先将消息识别模板进行编
译,形成协议识别引擎,协议识別引擎相当于一个协议状态机。下面具体描述
将获得的消息与SMTP消息识别模板相匹配的方法。本实施例中预先设置的
SMTP协议类型识别规则为SMTP :A220[\x09\x0b-\x0d -~]*("smtpTmair),
可以才艮据该正则表达式建立图3所示的确定性有穷自动机(DFA: Deterministic
Finite Automata)。图3中,箭头上面的字符表示输入的字符,同心圓表示状态
机的命中状态,即,若状态机运行到该状态则表示有一条输入的字符特征命中。
协议状态机的初始状态为状态0,在状态0时遇到输入字符为"W,时,则转换到
状态l;在状态1时遇到输入字符为"2"时,则转换到状态2;以此类推。在各状
态下若遇到任何不在图3中标出的能明确转换到下一个状态的输入字符(如在
状态3下遇到非"0"的输入),则重新回到状态0。例如,若获得的消息为"220this
is smtp server",则在与SMTP消息识别模板匹配时,状态机能从状态O转到状
态 12 , 则表示与协议类型识另,J规贝'JSMTP:A220[\x09\x0b-\x0d
- ]*("smtpT'mair)中的用正则表达式表示的消息识别模板匹配成功,即查到
的与SMTP消息匹配的模板为A220。x09、x0b-bc0d-~]*("smtp"|"mair)。
步骤103,查找与该消息相匹配的消息识别模板对应的协议类型。
本实施例中, 一种消息识别模板对应一种协议类型(即一种消息识别模板
关联一种协议类型),用于表达一种协议消息包含的特征字符以及特征字符的格
式。由此,在查找与该消息相匹配的消息识别才莫板后,进一步查找与该消息相
匹配的消息识別模板对应的协议类型。例如,若在某个协议识别规则中查找与
该消息匹配的消息协议模板,则该协议识别规则的编号即为该消息识别模板对应的协i义类型。
步骤104,确定该消息的协议类型为查找的与该消息相匹配的消息识别模斗反 对应的协议类型。
在本步骤中,可以将与该消息相匹配的消息识别模板对应的协议类型,确 定为通讯端间传输的消息的协议类型。例如,若在某个协议识别规则中查找与 该消息匹配的消息协议模板,则可以将该协议识别规则的编号(即消息识别模 板对应的协议类型)确定为通讯端间传输的消息的协议类型。
步骤105,建立通讯端与确定的消息的协议类型的对应关系。 本发明实施例中,在确定该消息的协议类型后,还可以进一步建立通讯端 与确定的消息的协-汉类型的对应关系。如建立包含通讯端的标识(IP地址和/或 端口号)和消息的协议类型的固化表,对协议识别结果进行"固化,,,固化表的结
构可以为〈IP地址,IP地址的端口,协议类型>。
本发明实施例识别消息协议类型的方法,通过查找与获得的通讯端间传输 的消息相匹配的消息识别模板,并将进一步查找到的与该识别模板所对应的协 议类型作为消息协议类型。作为识别标准的消息识别模板不仅包括协议中消息 的特征字符,而且包括消息的特征字符格式,提高了识别消息协议类型的正确 率。并进一步建立该通讯端与确定的消息的协议类型的对应关系,这样在识别 消息协议类型的过程中,可以通过分别提取消息中携带的通讯端的IP地址和端 口号,将消息通讯端的IP地址和端口号与记录对应关系相比较,以确认消息的 协议类型,即可通过查固化表实现对协议类型的识别,能够提高识别消息协议 类型的效率。
在本发明实施例中,可以没有步骤104,即默认查找到的与该消息相匹配的
消息识别模板对应的协议类型即为消息的协议类型。在本发明实施例中,可以默认执行步骤105 (建立该通讯端与确定的消息的 协议类型的对应关系),也可以没有步骤105,即不用建立通讯端间传输的消息 的协议类型的对应关系,如一些协议(如BT协议),每次通信的端口都是随机 的,建立对应关系对后续别的消息的识别帮助不大,则没有必要建立对应关系。 也可以预先设置是否执行步骤105,例如可以在协议类型识别规则中增加一个字 段,用于表示是否建立通讯端间传输的消息的协议类型的对应关系,如协议 类型识别规则的编号消息识别模板是否固化识别结果,其中,"是否固化 识别结果"字段可以通过1或0标识,用于表示是否建立包含通讯端的标识(IP 地址和/或端口号)和消息的协议类型的固化表,对协议识别结果进行"固化"。
在本发明实施例中,在步骤103之后,步骤104以前,即查找与该消息相 匹配的消息识别模板对应的协议类型以后,确定该消息的协议类型为查找的与 该消息相匹配的消息识别模板对应的协议类型之前,还可以默认对查找到的与 该消息相匹配的消息识别模板对应的协议类型进行验证,如果验证通过,再执 行步骤104。也可以预先设置是否对查找的与该消息相匹配的消息识别模板对应 的协议类型进行验证,例如可以在协议类型识别规则中增加一个字段,用于表 示是否对获得通讯端之间传输的消息进行验证,如协议类型识别规则的编号 消息识别模板是否验证协议类型,其中,"是否验证协议类型"字段可以通过 1或0标识,用于表示是否对查找的与该消息相匹配的消息识别模板对应的协议 类型进行验证。
如图2所示,为本发明实施例消息协议类型的验证方法流程图,该方法包
括
步骤201,连续获得通讯端之间传输的至少两条消息;
其中,通讯端包括客户端(Client)和月l务器端(Server),也可以包括两个对等网络的通讯端。客户端包括移动终端(如移动电话、个人电脑PC、个人数
字助理PDA)和固定终端(如固定电话)等。本实施例中,获得消息的过程可
以包括主动从通讯端处获取消息,以及为被动接收通讯端发送的消息。
在本步骤中,获得的通讯端之间传输的连续消息数至少为2条, 一般不超 过20条。
步骤202,判断获得的至少两条消息与消息验证模板是否匹配。如果匹配, 则表明消息的协议类型验证成功,反之,则表明消息的协议类型验证失败。
本发明实施例中所称的消息验证模板顺序包含至少两条消息的特征字符 以及特征字符的格式,所称的顺序是指,包含的至少两条消息的特征字符以及 特征字符的格式的顺序,与通信过程中消息的交互顺序一致。本实施例中所称 的匹配,是指所述连续获得的至少两条消息顺序,满足消息验证模板顺序表达 的所述至少两条消息的特征字符以及特征字符的格式。当然,当接收到的消息 只有两条时,消息验证模板也可以包含两条以上的消息的特征字符以及特征字 符的格式,只要接收到的两条消息顺序满足消息验证模板顺序表达的其中两条 消息的特征字符以及特征字符的格式即可。
消息验证模板中包含的消息的特征字符可以与消息识别模板中包含的该消 息的特征字符重合,消息验证模板也可以只包含消息识别模板中已经包含的该
消息的特征字符以外的特征字符。
消息验证模板可以用正则表达式表示,用于验证的消息验证模板应该是与 消息协议类型识别过程中识别出的消息协议类型所对应的消息验证模板。
本发明实施例中还可以在数据库(如协议验证库)中设置协议类型验证规 则,并将消息的验证模板,以及消息验证模板所对应的协议类型记录在协议类 型验证规则中。在进行消息协议类型的验证过程中,只需将消息与消息识别过程中识别出的该消息的协议类型所对应的消息验证模板匹配即可。验证规则的
格式可以为
协议类型验证规则的编号1:消息验证模板1; 协议类型验证规则的编号2:消息验证模板2; ……。
其中,"协议类型识别规则的编号,,字段表示消息验证模板对应的协议类型; "消息验证模板"字段包含消息的特征字符,以及特征字符的格式;""号表示分 隔符;";"表示两条顺序消息验证模板之间的分隔符。
下面以SMTP为例,描述将SMTP消息与消息验证模板相匹配的过程。在 本实施例中,以将接收到的6条连续消息与顺序包含6条消息的特征字符以及 特征字符的格式的消息验证模板相匹配为例。
首先预先设置消息验证模板。以SMTP消息为例,可以根据SMTP消息在 通信过程消息的交互顺序,预先设置SMTP消息验证模板(以正则表达式表示 消息识别模板为例),并进一步形成如下协议类型验证规则。
如图4所示为SMTP消息的典型交互过程。交互过程如下
客户端发送"mail from"请求;
服务器端接收客户端的"mail from"请求后,发送"250,,应答; 客户端接收服务器端的"250"应答后,发送"rcpt to"请求; 服务器端接收客户端的"rcpt to"请求后,发送"250"应答; 客户端接收服务器端的"250"的应答后,发送"data"请求; 服务器端接收客户端的"data"请求后,发送"354"应答。 根据上述SMTP消息的交互过程,可以设置如下协议验证规则(以正则表 达式表示消息验证模板为例)[SMTP—MAIL:"Amail from"(其中的正则表达式表示以"mail from"开始); SMTP—MAIL—REPLY:"A250,,(其中的正则表达式表示以"250"开始); SMTP—RCPT:"Arcpt to"(其中的正则表达式表示以"rcpt to "开始); SMTP—RCPT—REPLY:"A250,,(其中的正则表达式表示以"250"开始); SMTP—DATA:"data"(其中的正则表达式表示以"data"开始); SMTP—DATA—REPLY:"354"(其中的正则表达式表示以"354"开始)。 在上述的协议验证规则中,SMTP—MAIL、 SMTP—MAIL—REPLY等代表协 议类型验证规则的编号,协议类型验证规则的编号也可以用序号1、 2、 3表示, 用于表示协议类型验证规则之间的前后顺序;正则表达式表示消息的特征字符 以及特征字符的格式。
接着将获得的消息与消息识别模板相匹配。在本实施例中,将接收到的6 条SMTP消息与和SMTP消息所对应的消息验证模板相匹配。优选的,本实施 例可以通过具有特定状态和迁移条件的状态机来实现模板匹配首先将消息验 证模板进行编译,形成协议验证引擎,该协议验证引擎相当于一个协议状态机, 协议状态机模拟协议典型的协议交互行为,协议验证过程可以看作是通过典型 的协议状态机。如果一个状态满足,则跳入下一个状态,如果通过协议状态机 的所有状态,则匹配成功。下面具体描述将获得的SMTP消息与SMTP消息对 应的消息验证模板相匹配的方法。本实施例中,识别出消息协议类型为SMTP 协议后,则将消息与在协议验证库中SMTP消息对应的消息验证模板进行匹酉己。 如图5所示,SMTP消息的协议验证过程如下 状态1 ,等待来自客户端的"mail from"请求; 状态2,等待来自服务器端的"250"应答; 状态3,等待来自客户端的"rcptto"请求;状态4,等待来自服务器端的"250"应答;
状态5,等待来自客户端的"data"请求;
状态6,等待来自服务器端的"354"应答。
若通过协议状态^L的所有状态,则SMTP消息—睑证通过。
本步骤中,用于进行验证的消息数一般可以为不超过20条,对每个消息进 行验证时只需要扫描每个消息的前几百个字节(如前100字节),限定进行协议 验证的所使用的消息数、以及对每个消息验证时对每个消息扫描的最大字节数, 可以减少协议-睑证时的系统开销。
本发明实施例消息协议的验证方法是基于典型的消息交互过程,可以参考 RFC(Request For Comments ,请求注解),编写协议'睑证规则。
需要说明的是,协议验证过程并不是必需的, 一些消息协议类型只需要根 据协议类型的识别规则,就能准确地确定消息协议类型,则不需要进行协议验 证,增强了协议识别的高效性。例如,POP3 (Post Office Protocol,邮局协议3 )、 Telnet协议等。
本发明实施例中,还可以定期或不定期对协议识别库和协-汉验证库进行升 级,从而升级消息识别才莫板和消息验证模板,从而使协议识别库和协议验证库 能够实时生效,有很好的协议模板库扩展性。
在上述实施例中,是将连续获得的通讯端之间传输的至少两条消息与消息 识别模板相匹配,为了使验证更加准确, 一般连续获得的至少两条消息包括客 户端和服务器端典型交互过程中的所有消息,消息验证模板顺序包含的至少两
中的所有消息的特征字符以及特征字符的格式,连续获得的至少两条消息也可 以包括对等网络中通讯端典型交互过程中的消息。如图4所示为SMTP消息的典型交互过程中的所有消息。
为了节约系统开销,可以只获得消息典型交互过程中一个通讯端(如客户 端或服务器端,或者对等网络中的任一通讯端)发送的消息,消息验证模板也 只顺序包含典型交互过程中 一个通讯端发送的消息的特征字符以及特征字符的 格式,这样,将一个通讯端发送的消息与消息验证模板相匹配,可以节省一半 的匹配处理时间,另外,在后续建立固化表的过程中,只记录一个通讯端的IP 地址、端口号、协议类型,可以节省系统的存储资源。在此种具体实现方式中, 可以协议识别规则中增加消息识别模板对应的消息传输方向,用于记录消息的 发送通讯端。当查找到与消息相匹配的消息识别模板后,可以根据协议类型识 别规则中预先定义的消息传输方向,来确定传输消息的通讯端分别为服务器端
还是客户端。如协议类型识别规则格式可以为
协议类型识别规则的编号消息识别模板消息识别模板对应的消息传 输方向。
其中,"消息识别模板对应的消息传输方向"的字段可以"server"或"client"或 "Peer"表示,其中,"server"代表消息来自服务器端,"client"代表消息来自客 户端,"Peer"代表消息来自对等通讯端。
后续对消息的协议类型进行验证的过程中,只需接收该确定的通讯端发送 的消息,并进行验证。消息验证模板也只需顺序包含一个通讯端发送的消息的 特征字符以及特征字符的格式,例如,协议类型验证规则可以为SMTP—MAIL:"Amail from":client;
SMTP—RCPT:"Arcpt to":client;
SMTP—DATA: "data" :client。
其中,"client"代表消息来自客户端。本实施例使用消息验证模板对消息进行验证,作为验证标准的消息验证模 板不仅包括协议中消息的特征字符,而且包括消息的特征字符格式,并且消息 验证模板包含的至少两条消息的特征字符以及特征字符的格式的顺序,与通信 过程中消息的交互顺序一致,模拟了消息的交互过程,每个协议的消息交互过 程是该协议特有的,所以就能确保通过协议验证的协议类型的正确性。
本实施例中获得的至少两条消息可以是消息协议类型识别过程中获得的消
息,也可以是在消息协议类型验证过程中重新获得的消息;若是前者,则本发 明实施例中可以没有步骤201 。
如图6所示,为本发明实施例识别消息协议类型的装置示意图,该装置包 括第一获得单元,第一查找单元和第二查找单元,其中,
第一获得单元,用于获得通讯端之间传输的消息;其中,通讯端包括客户 端(Client)和服务器端(Server),也可以包括两个对等的通讯端,客户端包括 移动终端(如移动电话、个人电脑PC、个人数字助理PDA)和固定终端(如固 定电话)等。本实施例中,获得消息的过程可以包括主动从通讯端处获取消息, 或者为被动接收通讯端发送的消息。本实施例中,可以获得通讯端间传输的完 整的消息(如完整的一条或两条消息),也可以获得通讯端间传输的部分消息, 如一条消息的部分字节(如前100字节),这样可以降低系统负担。
第一查找单元,用于查找与该消息相匹配的消息识别模板;其中,消息识 别模板用于表达协议消息包含的特征字符以及特征字符的格式,其中,特征字 符为协议消息所特有的关键字符,特征字符的格式包括特征字符在协议消息中 的位置(例如在协议消息的开头或结尾)、特征字符的数量、以及不同特征字符 之间的前后顺序。本实施例中所称的与该消息相匹配,是指该消息满足消息识 别模板表达的特征字符以及特征字符的格式。消息识别模板可以存储在第一查找单元中,也可以存储在该装置中的其他模块中。
第二查找单元,用于查找与该消息相匹配的消息识别才莫板对应的协议类型。 可选的,本实施例中的识别消息协议类型的装置还可以进一步包括
建立单元,用于建立通讯端与确定的消息的协议类型的对应关系;建立单 元可以建立包含通讯端的标识(IP地址和/或端口号)和消息的协议类型的固化 表,对协议识别结果进行"固化",固化表的结构可以为< IP地址,IP地址的端 口,协议类型>。
如图7所示,为本发明实施例验证消息协议类型的装置示意图,该装置包 括第二获得单元和判断单元,其中
第二获得单元,用于连续获得通讯端之间传输的至少两条消息;第二获得
判断单元,用于判断获得的至少两条消息与消息验证模板是否匹配;其中, 消息验证模板顺序包含至少两条消息的特征字符以及特征字符的格式,顺序是 指包含的至少两条消息的特征字符以及特征字符的格式的顺序与通信过程中消 息的交互顺序一致。本实施例中所称的匹配,是指所述连续获得的至少两条消 息顺序满足消息验证模板顺序表达的所述至少两条消息的特征字符以及特征字 符的格式。当然,当接收到的消息只有两条时,消息验证模板也可以包含两条 以上的消息的特征字符以及特征字符的格式,只要接收到的两条消息顺序满足 消息验证模板顺序表达的其中两条消息的特征字符以及特征字符的格式即可。 消息验证模板可以存储在匹配单元中,也可以存储在该装置中的其他模块中。
本发明实施例中能够识别的协议类型可以为文本协议,例如FTP (File Transfer Protocol,文件传输协议)、HTTP (Hypertext Transfer Protocol,超文本传输 协议)、SMTP ( Simple Message Transfer Protocol,简单邮件传输协议)、BT ( BitTorrent,比特流),也可以为二进制协议,例如TELNET (远程登录协议)、TFTP (Trivial File Transfer Protocol,简单文件传输协议)、DNS (Domain Name Server,
域名解析系统)等。
本发明实施例可用于网络技术的入侵检测系统和入侵防御系统中,对传输 层以上各层网络协议类型的识别。本领域技术人员可以理解,本发明实施例还 可以用于其它应用,例如对其它标准协议或者私有协议的识别应用中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明 可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但4艮 多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上 或者说对背景技术做出贡献的部分可以以软件产品的形式体现出来,该计算机 软件产品可以存储在可读取的存储介质中,如ROM/RAM、磁碟、光盘等,包 括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络 设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明 的保护范围之内。
权利要求
1. 一种识别消息协议类型的方法,其特征在于,包括获得通讯端之间传输的消息;查找与所述消息相匹配的消息识别模板,所述消息识别模板包含消息的特征字符和特征字符的格式;查找与该消息相匹配的消息识别模板对应的协议类型。
2、 根据权利要求1所述的识别消息协议类型的方法,其特征在于,还包括 建立通讯端与查找到的消息的协议类型的对应关系。
3、 根据权利要求2所述的识别消息协议类型的方法,其特征在于,所述对 应关系为通讯端的IP地址和/或端口号,与消息的协-汉类型的对应关系。
4、 根据权利要求1所述的识别消息协议类型的方法,其特征在于,所述消 息识别模板由正则表达式表示。
5、 一种验证消息协议类型的方法,其特征在于,包括 连续获得通讯端之间传输的至少两条消息;判断获得的至少两条消息与消息验证模板是否匹配,所述消息验证模板顺 序包含至少两条消息的特征字符以及特征字符的格式。
6、 根据权利要求5所述的验证消息协议类型的方法,其特征在于,所述消 息验证模板由正则表达式表示。
7、 一种识别消息协议类型的方法,其特征在于,包括 获得通讯端之间传输的消息;查找与所述消息相匹配的消息识别才莫板,所述消息识别才莫板包含消息的特 征字符和特征字符的格式;查找与该消息相匹配的消息识别模板对应的协议类型;判断获得的消息与消息验证模板是否匹配,所述消息验证模板顺序包含至少两条消息的特征字符以及特征字符的格式;如果匹配,则确定所述消息的协议类型为查找到的与该消息相匹配的消息 识别模板对应的协i义类型。
8、 根据权利要求7所述的识别消息协议类型的方法,其特征在于,还包括 建立通讯端与确定的消息的协议类型的对应关系。
9、 根据权利要求8所述的识别消息协议类型的方法,其特征在于,所述对 应关系为通讯端的IP地址和/或端口号,与消息的协-汉类型的对应关系。
10、 根据权利要求7所述的识别消息协议类型的方法,其特征在于,所述 消息识别模板和消息验证模板由正则表达式表示。
11、 一种识别消息协议类型的装置,其特征在于,包括 第一获得单元,用于获得通讯端之间传输的消息;第一查找单元,用于查找与该消息相匹配的消息识别4莫板,所述消息识别 模板包含消息的特征字符和特征字符的格式;第二查找单元,用于查找与该消息相匹配的消息识别模板对应的协议类型。
12、 根据权利要求11所述的识别消息协议类型的装置,其特征在于,还包 括建立单元,用于建立通讯端与确定的消息的协议类型的对应关系。
13、 根据权利要求12所述的识别消息协议类型的装置,其特征在于,所述 对应关系为通讯端的IP地址和/或端口号,与消息的协议类型的对应关系。
14、 一种验证消息协议类型的装置,其特征在于,包括第二获得单元,用于连续获得通讯端之间传输的至少两条消息; 判断单元,用于判断获得的至少两条消息与消息验证模板是否匹配,所述 消息验证模板顺序包含至少两条消息的特征字符以及特征字符的格式。
15、 根据权利要求14所述的验证消息协议类型的装置,其特征在于,所述1消息验证模板由正则表达式表示。
全文摘要
本发明实施例公开了一种识别消息协议类型的方法和装置,能够识别消息所属的协议类型,识别的正确率比较高。所述方法包括获得通讯端之间传输的消息;查找与所述消息相匹配的消息识别模板,所述消息识别模板包含消息的特征字符和特征字符的格式;查找与该消息相匹配的消息识别模板对应的协议类型。本发明实施例还公开了一种验证消息协议类型的方法和装置。本发明实施例用于协议的识别和验证。
文档编号H04L1/16GK101287010SQ20081011083
公开日2008年10月15日 申请日期2008年6月12日 优先权日2008年6月12日
发明者朱晓明 申请人:华为技术有限公司