CN104717203B - 总线通信协议识别方法 - Google Patents
总线通信协议识别方法 Download PDFInfo
- Publication number
- CN104717203B CN104717203B CN201510053809.5A CN201510053809A CN104717203B CN 104717203 B CN104717203 B CN 104717203B CN 201510053809 A CN201510053809 A CN 201510053809A CN 104717203 B CN104717203 B CN 104717203B
- Authority
- CN
- China
- Prior art keywords
- framing
- raw bytes
- length
- maximum
- framing rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/02—Protocol performance
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Abstract
本发明提供了一种总线通信协议识别方法,该方法包括:步骤S1:缓存大于或者等于第一长度的原始字节数组;步骤S2:调用总线的所有兼容协议的分帧方法对原始字节数组中的原始字节数据进行分帧处理;步骤S3:计算每种分帧方法的分帧率,并比较得到所有分帧率中的最大分帧率,其中,分帧率=分帧处理后所有帧包含的字节个数之和/原始字节数组中的字节个数;步骤S4:将最大分帧率与分帧率标准对比;步骤S5:当最大分帧率大于或者等于分帧率标准时,则最大分帧率对应的分帧方法的通讯协议为总线运行通讯协议。本发明能够有效提高识别准确性。
Description
技术领域
本发明涉及总线通信领域,具体而言,涉及一种总线通信协议识别方法。
背景技术
上位机软件监测RS-485总线上的通讯内容时,首先从通过监听总线接收到的未分帧的原始字节数组中识别出总线上运行的通讯协议,然后才能根据通讯协议的类别对原始字节数据进行分帧和解析处理。如果不能从监听接收到的原始字节数据中识别出通讯协议或识别错误,上位机软件无法对数据进行后续的分帧和解析处理,进而也不可能监测到总线上的通讯内容,因此上位机软件监测识别RS-485总线上的通讯协议的方法和识别的准确性就显得非常重要。
传统的方法一般是根据通讯协议的协议帧中某些特征字节或特征字节的组合来识别协议,这样虽然提高了识别的速度,但可能出现传输的某种协议的数据帧中包含的数据中有与其它协议的协议帧的特征字节或特征字节的组合相同的情况,从而出现识别不准确的情况。
发明内容
本发明旨在提供一种能够提高准确率的总线通信协议识别方法。
本发明提供了一种总线通信协议识别方法,该方法包括:步骤S1:缓存大于或者等于第一长度的原始字节数组;步骤S2:调用总线的所有兼容协议的分帧方法对原始字节数组中的原始字节数据进行分帧处理;步骤S3:计算每种分帧方法的分帧率,并比较得到所有分帧率中的最大分帧率,其中,分帧率=分帧处理后所有帧包含的字节个数之和/原始字节数组中的字节个数;步骤S4:将最大分帧率与分帧率标准对比;步骤S5:当最大分帧率大于或者等于分帧率标准时,则最大分帧率对应的分帧方法的通讯协议为总线运行通讯协议。
进一步地,该方法还包括:步骤S6:当最大分帧率小于分帧率标准时,添加新的原始字节数据到原始字节数组,且每次添加后将原始字节数组的字节长度与第二长度对比;步骤S7:当原始字节数组的字节长度小于或者等于第二长度时,返回步骤S2;当原始字节数组的字节长度大于第二长度时,反馈识别失败提示。
进一步地,第一长度为所有兼容协议的最大帧长度的5倍。
进一步地,第二长度大于或者等于所有兼容协议的最大帧长度的10倍。
进一步地,分帧率标准为60%。
进一步地,步骤S1包括:步骤S11:设置原始字节数组缓存;步骤S12:添加新的原始字节数据到原始字节数组,且每次添加后将原始字节数组的字节长度与第一长度对比,直到原始字节数组的字节长度大于或者等于第一长度。
根据本发明的总线通信协议识别方法,通过将第一长度的原始字节数组直接调用不同通讯协议必须的分帧方法进行分帧,后找出分帧率最大的一个,并与一个设定分帧率标准比较,如果最大的那个分帧率大于设定的分帧率标准,则判断产生该最大分帧率对应的通讯协议就是正确的通讯协议,能够有效提高识别准确性。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明的总线通信协议识别方法的原理示意图;
具体实施方式
下面将参考附图并结合实施例来详细说明本发明。
结合图1所示,以RS-485总线上识别通讯协议来具体说明本发明的总线通信协议识别方法。
具体地,以兼容识别Modbus/RTU和协议7E两种协议,且总线上实际运行的通讯协议是7E为例(其中Modbus/RTU和7E的最大帧长度分别假设为150和200个字节)。具体的识别步骤如下:
(1)首先缓存设置一个原始字节数组。该缓存用于保存从总线上监测到的原始字节数据,数据保存到缓存中时按监测到的时间先后顺序进行,先监测到的原始字节数据放到缓存的前部,后续监测到的原始字节数据添加到缓存的后部。本实施例中,总线上实际运行的是7E通讯协议,因此缓存中保存的是7E的原始字节数据。
(2)计算所有兼容协议的最大帧长度,并乘以5,本实施例中,假设Modbus/RTU和7E的最大帧长度分别为150和200个字节,那所有兼容协议的最大帧长度显然为200,200乘以5结果为1000,及第一长度为1000。
(3)把从总线上监测接收到的原始字节数据添加到原始字节数组中,判断字节长度是否大于1000,如果是,进入下一步;如果不是,重复本步骤,继续把从总线上监测接收到的后续数据添加到原始字节数组中,直到满足原始字节数组中的原始字节数据长度大于1000为止。
(4)按Modbus/RTU的帧格式定义的分帧方法对原始字节数组中的原始字节数据进行分帧,并计算所有分出的帧中包括的字节个数,再与缓存中原始字节个数相除,计算出Modbus/RTU通讯协议对缓存的原始字节数据的分帧率。分帧率具体的计算公式如下:
分帧率=分出的所有帧包含的字节个数之和/缓存中的原始字节个数;
相应地,按7E协议的帧格式定义的分帧方法对原始字节数组中的原始字节数据进行分帧,并按上述分帧率计算公式计算出7E协议对缓存的原始字节数据的分帧率。然后,将两种分帧方法得到的分帧率比较,找出最大分帧率。
需要说明的是,在本实施例中,由于RS-485总线上运行的实际通讯协议是7E为例,那如果按Modbus/RTU的帧格式的定义来对缓存中的原始字节数据进行分帧,一般情况下不会分出任何帧,但不排除偶然情况下出现7E数据恰好组合出Modbus/RTU帧的巧合情况,本识别方法就是为了排除这种偶然情况下巧合情况的出现,因为出现一帧巧合情况有一点可能,但出现7E数据组合成连续的多个Modbus/RTU帧的情况几乎为0,尤其是每种帧都有校验的情况下。
(5)最大分帧率与分帧率标准60%进行比较,如果大于或等于60%,那表示该最大分帧率对应的通讯协议就是识别出的通讯协议,识别结束;否则,进入下一步。
需要说明的是,设置分帧率标准60%也是为了防止不兼容的通讯协议中偶然组合出兼容协议帧格式的情况。例如本实施例只兼容识别Modbus/RTU和7E,但却去识别实际运行在RS-485总线上的CAN协议,如果监测到的CAN数据中恰好出现组合出7E帧的情况,那此时识别率也会大于0,但CAN数据中不可能同时识别出多帧7E数据。因此需要设置一个分帧率标准,即便分帧率大于0,但只要不大于分帧率标准,那仍不能认为识别成功。
理论上,如果5倍的最大帧长度的数据,排除一个开头或结尾的不完整帧,至少能识别出4帧,因此识别率至少为80%;考虑到偶然一帧的坏数据,也能识别出至少3帧,此时识别率为60%;为了提高识别速度,就把识别率标准设置为60%。极端情况下,如果缓存的数据中包括两帧坏数据,那就通过给缓存添加更多的后续监测到的原始字节数据来稀释坏数据在缓存中所占的比例,即后续步骤(6)。
(6)把新监测到的原始字节数据添加到原始字节数组后部,并判断缓存的字节数据是否大于最大帧长度的10倍,如果大于就表示识别失败,给出提示然后结束;否则重新从步骤(4)开始,直到确定总线上的通讯协议。即如果将原始字节数组的字节长度增加到最大帧长度的10倍,还无法确定总线上的通讯协议,则认为识别失败。
从以上的描述中,可以看出,本发明上述的实施例实现了如下技术效果:
(1)本发明的总线通信协议识别方法对总线上的通讯协议识别完全准确。本发明直接调用不同通讯协议必须的分帧方法对一定长度(一定要远远大于兼容协议的帧长度,这里选择所有兼容通讯协议的可能出现的最大帧长度的5倍)的原始字节数组进行分帧,然后找出分帧率最大的一个,并与一个设定分帧率标准比较,如果最大的那个分帧率大于设定的分帧率标准,那产生该最大分帧率对应的通讯协议就是正确的通讯协议。
理论上,对于某种协议的原始字节数组,除采用该协议的分帧方法分帧能有很高的分帧率外,其它协议根本分不出任何数据帧,即便出现巧合,分帧率也极低;因此即使在巧合的情况下,其它协议的分帧率也不可能大于该协议的分帧率。这也就从理论上保证了识别的准确性。
但当对非兼容协义的数据进行分帧识别时,所有兼容协议的分帧率可能都为0,或者在巧合情况下也会出现大于0的情况,此时尽管有最大分帧率,但显然最大分帧率对应的通讯协议依然不是正确的协议,因此为了防止出现这种情况,在找出最大分帧率后,把最大分帧率与一个分帧率标准(如60%)进行比较,大于分帧率标准的情况下,最大分帧率才有意义。
(2)本发明总线通信协议识别方法实现时具有协议可扩展性,能方便在原有基础上添加某新协议的分帧与数据解析模块,进而在既有实现的基础上兼容该新协议。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种总线通信协议识别方法,其特征在于,所述方法包括:
步骤S1:缓存大于或者等于第一长度的原始字节数组;
步骤S2:调用总线的所有兼容协议的分帧方法对所述原始字节数组中的原始字节数据进行分帧处理;
步骤S3:计算每种分帧方法的分帧率,并比较得到所有分帧率中的最大分帧率,其中,所述分帧率=分帧处理后所有帧包含的字节个数之和/所述原始字节数组中的字节个数;
步骤S4:将所述最大分帧率与分帧率标准对比;
步骤S5:当所述最大分帧率大于或者等于所述分帧率标准时,则所述最大分帧率对应的分帧方法的通讯协议为所述总线运行通讯协议;
步骤S6:当所述最大分帧率小于所述分帧率标准时,添加新的原始字节数据到所述原始字节数组,且每次添加后将所述原始字节数组的字节长度与第二长度对比;
步骤S7:当所述原始字节数组的字节长度小于或者等于第二长度时,返回所述步骤S2;当所述原始字节数组的字节长度大于第二长度时,反馈识别失败提示。
2.根据权利要求1所述的总线通信协议识别方法,其特征在于,
所述第一长度为所有兼容协议的最大帧长度的5倍。
3.根据权利要求1所述的总线通信协议识别方法,其特征在于,
所述第二长度大于或者等于所有兼容协议的最大帧长度的10倍。
4.根据权利要求1所述的总线通信协议识别方法,其特征在于,
所述分帧率标准为60%。
5.根据权利要求1所述的总线通信协议识别方法,其特征在于,所述步骤S1包括:
步骤S11:设置原始字节数组缓存;
步骤S12:添加新的原始字节数据到所述原始字节数组,且每次添加后将所述原始字节数组的字节长度与第一长度对比,直到所述原始字节数组的字节长度大于或者等于所述第一长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510053809.5A CN104717203B (zh) | 2015-02-02 | 2015-02-02 | 总线通信协议识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510053809.5A CN104717203B (zh) | 2015-02-02 | 2015-02-02 | 总线通信协议识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104717203A CN104717203A (zh) | 2015-06-17 |
CN104717203B true CN104717203B (zh) | 2019-01-11 |
Family
ID=53416166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510053809.5A Active CN104717203B (zh) | 2015-02-02 | 2015-02-02 | 总线通信协议识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104717203B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3358789A1 (en) * | 2017-02-03 | 2018-08-08 | ABB Schweiz AG | A method for recognising the communication protocol of data packets travelling over a communication bus |
CN111351669B (zh) * | 2018-12-20 | 2022-03-15 | 比亚迪股份有限公司 | 故障诊断方法和装置、存储介质和车辆 |
CN111385172B (zh) * | 2018-12-27 | 2021-11-26 | 杭州萤石软件有限公司 | 一种基于总线的控制系统、控制方法及存储介质 |
CN116795756B (zh) * | 2023-08-28 | 2023-10-27 | 成都量芯集成科技有限公司 | 一种基于串口通讯的帧数据流软件接收方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714911A (zh) * | 2009-11-11 | 2010-05-26 | 北京交通大学 | 基于通信的列车运行控制系统的数据通信方法 |
EP2285029A1 (en) * | 2008-12-30 | 2011-02-16 | State Grid Corporation of China | Data transmission method, transmission system and data transmitter |
CN103378992A (zh) * | 2012-04-18 | 2013-10-30 | 珠海格力电器股份有限公司 | 家庭总线系统的总线数据测试方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654383B2 (en) * | 2001-05-31 | 2003-11-25 | International Business Machines Corporation | Multi-protocol agile framer |
CN101404659B (zh) * | 2008-11-04 | 2014-12-10 | 中国科学院计算技术研究所 | 一种协议数据单元构造和解析的方法及装置 |
CN101425876B (zh) * | 2008-12-16 | 2015-04-22 | 北京中创信测科技股份有限公司 | 通信协议破译方法和装置 |
-
2015
- 2015-02-02 CN CN201510053809.5A patent/CN104717203B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2285029A1 (en) * | 2008-12-30 | 2011-02-16 | State Grid Corporation of China | Data transmission method, transmission system and data transmitter |
CN101714911A (zh) * | 2009-11-11 | 2010-05-26 | 北京交通大学 | 基于通信的列车运行控制系统的数据通信方法 |
CN103378992A (zh) * | 2012-04-18 | 2013-10-30 | 珠海格力电器股份有限公司 | 家庭总线系统的总线数据测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104717203A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104717203B (zh) | 总线通信协议识别方法 | |
EP2849384B1 (en) | Approximate matching method and related device, and communication system | |
CN105706045A (zh) | 对日志消息内容的面向语义分析 | |
CN103095475B (zh) | 多模通信设备的巡检方法和系统 | |
CN109462590B (zh) | 一种基于模糊测试的未知协议逆向分析方法 | |
US20170244610A1 (en) | Method and system for monitoring quality of data transmission in idc network | |
CN110912944A (zh) | 一种can设备安全测试系统及测试方法 | |
CN107426166B (zh) | 一种信息的获取方法、装置及电子设备 | |
CN110909168A (zh) | 知识图谱的更新方法和装置、存储介质及电子装置 | |
CN109995555A (zh) | 监控方法、装置、设备及介质 | |
CN111784516B (zh) | 业务路径的确定方法、装置和电子设备 | |
CN104601358B (zh) | 一种实现采集系统与分析系统间的匹配方法及装置 | |
CN113079186A (zh) | 基于工控终端特征识别的工业网络边界防护方法和系统 | |
CN117176802A (zh) | 一种业务请求的全链路监控方法、装置、电子设备及介质 | |
CN111064729A (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
CN108833377A (zh) | 一种改进的can协议数据帧结构及数据处理方法 | |
CN103810085A (zh) | 一种通过数据比对进行模块测试的方法及装置 | |
Cisco | ||
Cisco | ||
Cisco | ||
CN109889619B (zh) | 基于区块链的异常域名监测方法及装置 | |
CN111314116A (zh) | 一种管理网络设备的协议方法及装置 | |
CN102891781A (zh) | 网络共享检测系统和网络共享检测方法 | |
CN109379356A (zh) | 自动捕获cpu攻击报文的方法及装置 | |
CN101262379B (zh) | 一种接口报文实时验证系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |