发明名称 一种网络数据包解析方法
摘要 本发明公开了1、一种网络数据包解析方法,包括步骤:1)、根据协议的协议结构,生成所述协议的协议脚本,并存储;2)、根据协议脚本生成语句表和逻辑树;3)、载入待解析的数据包,获取待解析的数据包的协议名称,根据协议名称查找相应的协议脚本,并获取相应的语句表和逻辑树,对待解析的数据包进行解析,输出解析结果。本发明方法扩展性强,便于新协议的添加,且成本低。本发明方法还可以解析私有协议的数据包。
申请公布号 CN103001971B 申请公布日期 2015.08.12
申请号 CN201210570198.8 申请日期 2012.12.25
申请人 成都科来软件有限公司 发明人 罗鹰;彭晶
分类号 H04L29/06(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 四川力久律师事务所 51221 代理人 熊晓果;林辉轮
主权项 一种网络数据包解析方法,其特征在于,包括如下步骤:1)、根据协议的协议结构,生成所述协议的协议脚本,并存储;2)、根据协议脚本生成语句表和逻辑树;3)、载入待解析的数据包,获取待解析的数据包的协议名称,根据协议名称查找相应的协议脚本,并获取相应的语句表和逻辑树,对待解析的数据包进行解析,输出解析结果;所述步骤2)中生成语句表的方法是:2‑11):根据协议脚本中语句的语句类型关键字确定语句的类型;2‑12):取得语句中的各个属性,并存储在对应的语句类中,然后将该语句类记录到语句表中,并对语句类进行编号;所述步骤2)中生成逻辑树的方法是:从语句表头至语句表尾,顺序扫描语句表,对语句表中的判断语句和循环语句进行分析,确定判断语句的执行顺序和对应的执行条件,确定循环语句的循环体和循环条件,建立所述逻辑树;生成逻辑树包括步骤:2‑21):扫描整个语句表,按照单一语句块、判断语句块和循环语句块三种语句块类型,将整个语句表分解为若干个语句块B1,B2,…,Bn,n为自然数;2‑22):将若干个语句块B1,B2,…,Bn存储到逻辑树的根节点下;2‑23):将若干个语句块B1,B2,…,Bn中的判断语句块和循环语句块分解成单一类型的语句块,然后将每一个单一类型的语句块存储到逻辑树相应的子节点下,完成逻辑树建立;其中,若一段连续的语句不包括if、elseif、else和endif语句,也不包括do和while语句,则称这个语句块为单一语句块;判断语句块为:if语句和对应的end if语句,以及之间包含的一段连续的语句,称为判断语句块;do语句和对应的while语句,以及之间包含的一段连续语句,称为循环语句块;所述步骤2‑23)将若干个语句块B1,B2,…,Bn中的判断语句块和循环语句块分解成单一类型的语句块,然后将每一个单一类型的语句块存储到逻辑树相应的子节点下,方法是:2‑23‑1):对于判断语句块,则以最外层if语句、elseif语句、else语句和endif语句为分隔符,将该判断语句块中所有的语句分解成若干个带执行条件的子语句块,并将所述若干个带执行条件的语句块存储到该判断语句块的子节点下,且将各自的判断条件也存储在该子节点下;对于循环语句块,则将do语句和while语句之间的语句作为一个带循环条件的语句块,并将所述带循环条件的语句块存储到该循环语句块的子节点下,同时将循环条件也存储在该子节点下;2‑23‑2):将经过步骤2‑23‑1)分解后的语句块中不是单一类型的语句块,按照单一语句块、判断语句块和循环语句块三种类型进行分解,将分解得到的语句块存储在分解前相应语句块的子节点下;2‑23‑3):循环步骤2‑23‑1)至2‑23‑2),直到逻辑树中的每一个叶子节点中的语句块都为单一语句块。
地址 610000 四川省成都市高新区天府大道中段801号天府软件园B6-7楼