一种船舶通信报文实时解析过滤方法技术

技术编号:20750969 阅读:40 留言:0更新日期:2019-04-03 11:25
本发明专利技术公开了一种船舶通信报文实时解析过滤方法,本方法在充分了解船舶通信系统的实际应用特点的基础上,提出了一种多协议船舶通信报文动态解析与快速提取过滤数据的方法,该方法实现步骤如下S1报文配置:(1)报文定义;(2)配置流程;(3)报文加密;S2报文解析方法:(1)数据库设计;(2)解析流程;(3)实时提取过滤;利用该方法既可以动态配置报文格式进行解析,也可以实现线上快速地针对指定数据字段进行提取或过滤,在实际的系统中得到了广泛的应用。

【技术实现步骤摘要】
一种船舶通信报文实时解析过滤方法
本专利技术是一种船舶通信报文实时解析过滤方法,主要用于船舶通信报文传输过程中的解析及过滤,属于信息

技术介绍
船舶系统是一个耦合度高,各设备之间相互关联的复杂通信系统。目前,船舶系统内部各设备之间用以太网技术实现数据的通信。在各种设备开发开发调试的过程中,需要进行多次通信测试以保证设备运行的正确性。若在船舶航行中出现网络故障,仅仅依靠船员根据他们的经验和专业素养来进行故障判断,极有可能造成不可估量损失。因此,无论是在船舶开发调试的过程中还是船舶网络故障发生时,使用快速的方法对通信报文进行解析并调试显得尤为重要。目前船舶通信系统中实时通信的数据量较大,报文种类繁多,且报文针对新型设备的对接需要经常需要对报文数据字段的内容进行更改,所以对于如何动态的配置报文数据字段进行解析以及如何快速实时地通过解析对应数据从而滤掉无效、错误和用户“不关心”的网络原始数据的要求也不断提高。传统报文的解析方法,在接收到一条报文后,在程序代码中对数据报文的每一个数据字段依次进行解析。所有解析代码都是依照差不多的逻辑对字节进行处理,每条报文需要写单独的代码进行处理,代码繁琐且复用性差。当报文的数据字段变化时,只能对程序进行修改且扩展性差。陈星亮等学者提出了海洋水文气象报文自动解析系统的设计与实现。基于海洋水文气象报文格式数据开发了功能实用易于扩展的报文自动解析存储系统。该方法利用多线程技术提高报文数据解析的时效性,是一种高效的报文解析方法,但方法只能作用于线下数据,并不能线上在接收的同时进行解析。吴建斌等学者为了提高报文的解析速率,提出了一种基于XML的多格式报文解析方法,该方法可以对报文数据进行动态解析,但是随着船舶通信系统报文的大幅度增长,XML文件在读取与更改时会消耗大量的内存以及时间,同时解析的过程是按顺序解析,解析的速度跟不上实际应用中报文获取的速度,从而无法实时的对报文进行数据提取以及过滤。目前的船舶通信系统中,报文种类繁多,报文的数据字段也经常会为了满足其他接口的需要进行修改。在开发调试或者维修检测的过程中,需要实时对特定的数据字段进行提取或过滤。在解析时,数据的规模和大小也往往不可预知,且为了满足实时性的要求,对于数据的处理只能是一次扫描,无法回溯。本文在充分了解船舶通信系统的实际应用特点的基础上,提出了一种多协议船舶通信报文动态解析与快速提取过滤数据的方法,利用该方法既可以动态配置报文格式进行解析,也可以实现线上快速地针对指定数据字段进行提取或过滤,在实际的系统中得到了广泛的应用。
技术实现思路
本专利技术采用的技术方案为一种船舶通信报文实时解析过滤方法,该方法包括以下步骤:S1报文配置(1)报文定义由于UDP报文在传输的过程中延迟小,且数据传输效率高,船舶通信系统中一般采用UDP报文进行通信。在两个设备A和B间交互时,设备A先给设备B发送一条命令报文,在设备B收到设备A的命令报文后,设备B向设备A发送确认报文,表明已经收到了设备A向设备B发送的命令报文。若设备A在一段时间内并未收到设备B发送来的确认报文,则重新向设备B发送命令报文,以此来保证通信之间的稳定性。船舶通信报文结构如图1所示,船舶通信UDP报文主要由UDP报文头和UDP数据两部分组成。HeadData1,HeadData2……HeadDataN代表报文头中的信息字段,包括发方ip、发方端口号、目标ip、目标端口号及报文长度等信息。UDP数据是真正需要传递的数据信息,UDP数据的前四个字节为报文ID,报文ID可以唯一确定一条报文。对报文进行解析时,结合报文ID即可根据这条报文所定义的数据字段对接收的数据进行解析。Data1,Data2……DataN代表报文中的数据字段,数据字段可由使用者自行进行定义。报文数据字段规范化定义如表1所示,报文数据字段根据需要对它的数据进行了规范化定义,以此来保证报文配置模块可以满足所有报文的定义要求。其中字段名称、字段类型和长度是必填项,其他的数据根据字段类型需要填写。常见的字段类型有整数型、小数型、枚举型、字符串型和循环型等。整数型有最大值和最小值要求,小数型要确定其精度,枚举型需要确定每一解析值的准确含义,循环型需要知道详细的循环解析次数。起始位数和终止位数则是根据每个数据字段在该条报文中的位置由报文配置模块计算所得,确定了起始位数和终止位数可以快速确定这一字段在该条报文中的位置,由此获得指定数据。这样的优势在于不用循环解析出所有数据,便可以对报文数据进行快速提取和实时过滤。表1报文数据字段规范化定义数据特性含义Name字段名称Type字段类型BeginIndex起始位数EndIndex终止位数Length长度Precision精度Max最大值Min最小值BitEnum枚举值(2)配置流程对传统报文配置需要专业化人员对数据库文件进行配置带来的通用性差的特点。本文在进行报文配置时,设计了报文配置模块,提供良好的操作界面,用户在填写指定信息后,该模块便可以将所有的数据字段信息写入数据库中。报文配置模块在Windows平台下采用c#语言开发,结合C#中的dev界面插件可以给用户提供一个非常直观的编辑界面。使用者可根据需要对报文的数据字段进行添加和修改操作,该模块为报文的动态解析和数据的实时过滤提供服务。报文配置模块的具体工作流程如图2所示。1)启动报文配置模块,根据报文的唯一标识报文id从数据库中取出该条报文下的所有数据字段信息,并根据数字字段的先后顺序以表格的形式显示。2)若想要添加数据字段,点击数据字段添加按钮,确定字段类型并填写该字段类型需要的字段信息完成数据字段的添加。完成添加后,模块会根据已知数据字段的总长度和新添加的数据字段的长度来计算出新添加的数据字段的起始位数和终止位数并显示在数据字段表格中。3)若想要修改已添加数据字段的信息,选中待修改数据字段并点击修改按钮,根据数据字段的类型重新填写需要的字段信息。完成修改后,模块会根据每一条数据字段的长度重新计算待修改数据字段之后的每一条数据字段的起始位数和终止位数,并对待修改数据字段的信息进行刷新,显示在数据字段表格中。4)若想要修改已添加数据字段的顺序,选中待修改数据字段并点击上移或下移按钮。模块会对包含当前操作的数据字段之后的每一个数据字段重新计算其起始位数和终止位数,并显示在数据字段表格中。5)点击完成按钮结束对当前报文数据字段的配置并保存,模块根据最终数据字段表格显示的内容对数据库进行更改。(3)报文加密国家密码局在2010年先后提出具有我国自主知识产权的安全加密算法,如表2所示。这些算法具有良好的运算性能和安全指数,有望成为主流的算法广泛活跃于未来的商业活动中。表2国产加密算法名称类型密钥/分组长度(位)SM1分组密码算法128SM2椭圆曲线公钥密码算法256(推荐)SM3杂凑算法256SM4分组加密算法128SM7对称加密算法128SM9非对称加密算法\在本项目中,采用SM4算法进行关键数据的加解密,使用SM2算法中的密钥协商模块进行通信数据加密密钥的协商,在密钥协商中,需要对认证双方的信息进行摘要计算,此部分采用SM3算法。(a)SM4算法SM4算法是一种分组加密算法,该算法具有计算参数少、运算速度快、安全本文档来自技高网
...

【技术保护点】
1.一种船舶通信报文实时解析过滤方法,其特征在于:该方法包括以下步骤,S1报文配置(1)报文定义船舶通信系统中采用UDP报文进行通信;在两个设备A和B间交互时,设备A先给设备B发送一条命令报文,在设备B收到设备A的命令报文后,设备B向设备A发送确认报文,表明已经收到了设备A向设备B发送的命令报文;若设备A在一段时间内并未收到设备B发送来的确认报文,则重新向设备B发送命令报文,以此来保证通信之间的稳定性;船舶通信报文结构中,船舶通信UDP报文由UDP报文头和UDP数据两部分组成;HeadData1,HeadData2……HeadDataN代表报文头中的信息字段,包括发方ip、发方端口号、目标ip、目标端口号及报文长度信息;UDP数据是真正需要传递的数据信息,UDP数据的前四个字节为报文ID,报文ID唯一确定一条报文;对报文进行解析时,结合报文ID即根据这条报文所定义的数据字段对接收的数据进行解析;Data1,Data2……DataN代表报文中的数据字段,数据字段由使用者自行进行定义;报文数据字段根据需要对它的数据进行了规范化定义,以此来保证报文配置模块满足所有报文的定义要求;其中字段名称、字段类型和长度是必填项,其他的数据根据字段类型需要填写;字段类型有整数型、小数型、枚举型、字符串型和循环型;整数型有最大值和最小值要求,小数型要确定其精度,枚举型需要确定每一解析值的准确含义,循环型需要知道详细的循环解析次数;起始位数和终止位数则是根据每个数据字段在该条报文中的位置由报文配置模块计算所得,确定了起始位数和终止位数快速确定这一字段在该条报文中的位置,由此获得指定数据;(2)配置流程在进行报文配置时,设计了报文配置模块,该报文配置模块将所有的数据字段信息写入数据库中;报文配置模块在Windows平台下采用c#语言开发,结合C#中的dev界面插件给用户提供一个非常直观的编辑界面;使用者根据需要对报文的数据字段进行添加和修改操作,该报文配置模块为报文的动态解析和数据的实时过滤提供服务;(3)报文加密采用SM4算法进行关键数据的加解密,使用SM2算法中的密钥协商模块进行通信数据加密密钥的协商,在密钥协商中,需要对认证双方的信息进行摘要计算,报文加密部分采用SM3算法;(a)SM4算法SM4算法是一种分组加密算法,该算法具有计算参数少、运算速度快、安全性高的特点,适合为要求传输数据长度短、执行效率高的系统提供高等级的安全性,同时使用128位密钥进行轮密钥数据加密,足以保证数据的安全;(b)SM3摘要算法SM3算法又称为杂凑算法,能够安全的对数据信息进行摘要处理,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求;使用SM3算法对通信双方的信息进行摘要处理,作为信息摘要模块在SM2中被使用;本信息摘要模块将算法封装成三个模块接口,接受调用函数的调用请求,读取输入参数,并设置摘要信息参数,作为指针方式返回,使用灵活方便;(c)SM2密钥协商算法完整的SM2算法能实现数据的加解密、密钥协商、数字签名和签名认证,且安全级别高,占用资源少,能够广泛应用于现代商业活动中的数据的加解密部分;基于OpenSSL大数库构造椭圆曲线系,实现SM2的密钥协商部分,完成通信数据加解密的密钥协商,且使用随机数进行动态密码生成处理,使得数据通道加密更为安全;S2报文解析方法由于船舶通信系统中报文数目繁多且每条报文中的数据字段较多的特点,采用SQLite数据库对所有的报文以及报文中的数据字段进行记录;使用这种轻型的数据库可以极大的减少程序中的资源占用,相比于其他的数据库具有更快的处理速度,同时还有官方提供的ODBC接口便于开发;(1)数据库设计报文ID作为报文的唯一标识,为该表主键;报文名称和长度为必填项,为每一条报文的基本信息;IP地址和端口号作为选填项,可用于验证报文发送的正确性;字段在该报文中的顺序ID作为字段数据的唯一标识,为该表主键;报文ID为外键,用于确定该条数据字段所对应的报文;字段名称、字段数据类型、字段长度、字段在报文数据中的起始和终止位置为必填项,是每一个数据字段的基本信息;数据数值精度、最大值、最小值和重复次数作为选填项,根据数据类型的需要进行填写;枚举值ID作为枚举值的唯一标识,为该表主键;报文ID和字段顺序ID作为外键,用于确定该枚举值所对应的报文中的数据字段位置;枚举值和枚举值所对应的解释为必填项;(2)解析流程通过报文配置模块配置后,对已配置好的所有报文进行解析;(3)实时提取过滤基于上述报文配置模块,提出一种报文实时提取过滤的方法,实时对指定数据进行提取或过滤,便于用户对数据的分析以及异常发现;1)通过人机交互界面从报文数据库中选择需要提取或过滤的报文和其中的数据字段;若需要以某一个...

【技术特征摘要】
1.一种船舶通信报文实时解析过滤方法,其特征在于:该方法包括以下步骤,S1报文配置(1)报文定义船舶通信系统中采用UDP报文进行通信;在两个设备A和B间交互时,设备A先给设备B发送一条命令报文,在设备B收到设备A的命令报文后,设备B向设备A发送确认报文,表明已经收到了设备A向设备B发送的命令报文;若设备A在一段时间内并未收到设备B发送来的确认报文,则重新向设备B发送命令报文,以此来保证通信之间的稳定性;船舶通信报文结构中,船舶通信UDP报文由UDP报文头和UDP数据两部分组成;HeadData1,HeadData2……HeadDataN代表报文头中的信息字段,包括发方ip、发方端口号、目标ip、目标端口号及报文长度信息;UDP数据是真正需要传递的数据信息,UDP数据的前四个字节为报文ID,报文ID唯一确定一条报文;对报文进行解析时,结合报文ID即根据这条报文所定义的数据字段对接收的数据进行解析;Data1,Data2……DataN代表报文中的数据字段,数据字段由使用者自行进行定义;报文数据字段根据需要对它的数据进行了规范化定义,以此来保证报文配置模块满足所有报文的定义要求;其中字段名称、字段类型和长度是必填项,其他的数据根据字段类型需要填写;字段类型有整数型、小数型、枚举型、字符串型和循环型;整数型有最大值和最小值要求,小数型要确定其精度,枚举型需要确定每一解析值的准确含义,循环型需要知道详细的循环解析次数;起始位数和终止位数则是根据每个数据字段在该条报文中的位置由报文配置模块计算所得,确定了起始位数和终止位数快速确定这一字段在该条报文中的位置,由此获得指定数据;(2)配置流程在进行报文配置时,设计了报文配置模块,该报文配置模块将所有的数据字段信息写入数据库中;报文配置模块在Windows平台下采用c#语言开发,结合C#中的dev界面插件给用户提供一个非常直观的编辑界面;使用者根据需要对报文的数据字段进行添加和修改操作,该报文配置模块为报文的动态解析和数据的实时过滤提供服务;(3)报文加密采用SM4算法进行关键数据的加解密,使用SM2算法中的密钥协商模块进行通信数据加密密钥的协商,在密钥协商中,需要对认证双方的信息进行摘要计算,报文加密部分采用SM3算法;(a)SM4算法SM4算法是一种分组加密算法,该算法具有计算参数少、运算速度快、安全性高的特点,适合为要求传输数据长度短、执行效率高的系统提供高等级的安全性,同时使用128位密钥进行轮密钥数据加密,足以保证数据的安全;(b)SM3摘要算法SM3算法又称为杂凑算法,能够安全的对数据信息进行摘要处理,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求;使用SM3算法对通信双方的信息进行摘要处理,作为信息摘要模块在SM2中被使用;本信息摘要模块将算法封装成三个模块接口,接受调用函数的调用请求,读取输入参数,并设置摘要信息参数,作为指针方式返回,使用灵活方便;(c)SM2密钥协商算法完整的SM2算法能实现数据的加解密、密钥协商、数字签名和签名认证,且安全级别高,占用资源少,能够广泛应用于现代商业活动中的数据的加解密部分;基于OpenSSL大数库构造椭圆曲线系,实现SM2的密钥协商部分,完成通信数据加解密的密钥协商,且使用随机数进行动态密码生成处理,使得数据通道加密更为安全;S2报文解析方法由于船舶通信系统中报文数目繁多且每条报文中的数据字段较多的特点,采用SQLite数据库对所有的报文以及报文中的数据字段进行记录;使用这种轻型的数据库可以极大的减少程序中的资源占用,相比于其他的数据库具有更快的处理速度,同时还有官方提供的ODBC接口便于开发;(1)数据库设计报文ID作为报文的唯一标识,为该表主键;报文名称和长度为必填项,为每一条报文的基本信息;IP地址和端口号作为选填项,可用于验证报文发送的正确性;字段在该报文中的顺序ID作为字段数据...

【专利技术属性】
技术研发人员:郭梓旸姬庆庆肖创柏
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1