CN108429764B - 一种基于私有协议的数据传输和解析的方法 - Google Patents
一种基于私有协议的数据传输和解析的方法 Download PDFInfo
- Publication number
- CN108429764B CN108429764B CN201810520320.8A CN201810520320A CN108429764B CN 108429764 B CN108429764 B CN 108429764B CN 201810520320 A CN201810520320 A CN 201810520320A CN 108429764 B CN108429764 B CN 108429764B
- Authority
- CN
- China
- Prior art keywords
- data
- protocol
- length
- data structure
- client
- 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
Images
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/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- 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
-
- 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/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种基于私有协议的数据传输和解析的方法,包括以下步骤:根据客户端协议版本将协议数据填充到第一数据结构中形成第一数据,其中每个条目包括固定字段部分和变长结构部分的数据结构;根据服务端协议版本获得当前条目所使用的第二数据结构,并确定其中固定字段部分和变长结构部分的数据结构;服务端根据所述第一和第二数据结构中固定字段和变长结构部分的数据结构,确定所述协议数据的位置,并解析所述第一数据获得所述协议数据。本发明,通过固定字段部分和变长结构部分对协议的数据结构进行了扩展,有效解决了私有协议数据结构的扩展性问题,具有高效解析,有效数据率高,易于开发和维护等优点。
Description
技术领域
本发明涉及网络管理技术领域,具体涉及一种基于私有协议的数据传输和解析的方法。
背景技术
在网络管理系统(简称网管)对电信设备(简称设备)进行管理的过程中,需要对各种数据进行正反向传输和分析,因此需要一套协议来确保数据的准确传输。
协议是对数据格式和计算机之间交换数据时必须遵守的规则的正式描述,是通信双方必须共同遵从的一组约定。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义和时序。
目前,因为这些协议一般是采用二进制格式,不具备可读性,且随着业务量的不断增大及业务场景的复杂化,需要对网络管理系统与电信设备之间协议数据的私有协议的数据结构不断的进行更新,从而造成了对应的协议字段及长度都需要不断的变化,因此,要求这些相应的私有协议的数据结构必须是具有可扩展性的。
针对以上需要,目前通常的方法是采用预留字段的方式来应对协议字段及长度的变化,但是,当协议需要进行较大的更改时,这种常规的方法就无法满足要求了,需要额外引入第三方的库和工具,因此,使用起来非常不方便,特别是当出现问题需要进行排查时,需要检查第三方代码,维护较为困难。
有鉴于此,针对上述私有协议,需要提供一种新的数据结构和解析方法,使其具有高效解析性,有效数据率高,并且易于开发和维护。
发明内容
本发明所要解决的技术问题是现有网络管理系统与电信设备之间协议数据采用的私有协议,使用不方便,维护较为困难的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种基于私有协议的数据传输和解析的方法,包括以下步骤:
根据客户端协议版本,客户端将协议数据填充到第一数据结构中形成第一数据,所述第一数据结构为客户端协议使用的数据结构,其中每个条目包括固定字段部分的数据结构和变长结构部分的数据结构;
根据服务端协议版本,服务端获得当前条目所使用的第二数据结构,并确定其中固定字段部分的数据结构和变长结构部分的数据结构,所述第二数据结构为服务端协议版本使用的数据结构;
服务端接收到所述第一数据后,解析所述第一数据获得所述第一数据结构,并获得其中固定字段部分和变长结构部分的数据结构,根据所述第一数据结构和所述第二数据结构中固定字段部分和变长结构部分的数据结构,确定所述协议数据的位置,并解析所述第一数据获得所述协议数据。
在上述方法中,
所述固定字段部分的数据结构包括固定字段长度,用于确定固定字段的条目数;
所述变长结构部分的数据结构包括变长结构的数目以及每个变长结构包含的条目数、条目的字段长度和数据。
在上述方法中,所述第一数据结构和所述第二数据结构中均包括协议版本号,用于确定客户端协议版本与服务端协议版本是否一致。
在上述方法中,所述第一数据结构和所述第二数据结构中均包括总条目数和当前条目数据总长度,用于循环解析所有的条目数据。
在上述方法中,
生成所述第一数据包括以下步骤:
填写协议版本信息、总条目数和当前条目数据总长度;
填写固定字段长度,填充固定字段数据;
填写变长结构数目,循环填写变长结构的条目数和每个条目的字段数据长度,循环填写变长结构每个条目的数据。
在上述方法中,根据所述第一或第二数据结构中的固定字段长度,通过偏移量获得变长结构数目,并循环获得变长结构的条目数和每个条目的字段长度。
在上述方法中,当客户端与服务端协议版本一致时,按照客户端协议使用的数据结构解析所述第一数据,当客户端与服务端协议版本不一致时,按照“小长度解析、客户端长度偏移”的原则解析所述第一数据。
在上述方法中,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前条目的固定字段长度,取较小的值作为固定字段长度。
在上述方法中,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前条目变长结构数目,取较小的值作为变长结构数目。
在上述方法中,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前变长结构条目字段长度,取较小的值作为当前变长结构条目字段长度。
与现有技术相比,本发明提供的网管与设备之间协议数据传输和解析的方法,通过固定字段部分和变长结构部分对协议的数据结构进行了扩展,客户端根据客户端协议版本的数据结构组织协议数据,服务端根据客户端和服务端协议版本对应的数据结构,确定协议数据中固定字段部分和变长结构部分数据的位置,进行解析,有效解决了私有协议数据结构的扩展性问题,具有高效解析,有效数据率高,易于开发和维护等优点。
附图说明
图1为本发明具体实施例1的流程图;
图2为本发明中根据协议版本解析协议数据的流程图;
图3为本发明中实现步骤S10的流程图。
具体实施方式
本发明提供了一种基于私有协议的数据传输和解析的方法,用于网络管理系统对电信设备的管理过程中,各种数据进行正反向传输和分析时,准确传输这些数据。可以适用于任何使用C++作为开发语言的协议数据结构的组织和解析。
本发明提供的基于私有协议的数据传输和解析的方法,通过固定字段部分和变长结构部分形成了可扩展的数据结构,有效解决了私有协议数据结构的扩展性问题,具有高效解析,有效数据率高,易于开发和维护等优点。下面结合说明书附图和具体实施方式对本发明做出详细说明。
本发明的实现原理是:
针对网管与设备之间协议数据传输和解析采用的私有协议,设计了一种全新的可扩展的数据结构,该数据结构中,每个条目均包括固定字段部分和变长结构部分;
客户端根据客户端协议版本的数据结构组织协议数据;
服务端根据服务端协议版本,获得服务端协议版本对应的,当前条目的固定字段部分的数据结构和变长结构部分的数据结构;再根据客户端和服务端协议版本对应的数据结构,确定协议数据中固定字段部分和变长结构部分数据的位置,进行解析。
本发明提供的基于私有协议的数据传输和解析的方法,其基本技术方案的实现主要包括以下步骤:
根据客户端协议版本,客户端将协议数据填充到第一数据结构中形成第一数据,所述第一数据结构为客户端协议使用的数据结构,其中每个条目包括固定字段部分的数据结构和变长结构部分的数据结构;
根据服务端协议版本,服务端获得当前条目所使用的第二数据结构,并确定其中固定字段部分的数据结构和变长结构部分的数据结构,所述第二数据结构为服务端协议版本使用的数据结构;
服务端接收到所述第一数据后,解析所述第一数据获得所述第一数据结构,并获得其中固定字段部分和变长结构部分的数据结构,根据所述第一数据结构和所述第二数据结构中固定字段部分和变长结构部分的数据结构,确定所述协议数据的位置,并解析所述第一数据获得所述协议数据。
为了对本发明的技术方案和实现方式做出更清楚地说明,以下介绍实现本发明技术方案的几个优选的具体实施例。显然,以下所描述的具体实施例仅为本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
具体实施例1。
如图1所示,本发明具体实施例1的技术方案的实现包括以下步骤:
步骤S10:客户端(数据组织方)根据客户端协议版本V(i)的数据结构组织协议数据,将协议数据填充到该客户端协议使用的数据结构中形成第一数据,客户端协议使用的数据结构简称为第一数据结构。
此第一数据结构中,每个条目均包括固定字段部分的数据结构和变长结构部分的数据结构,固定字段部分用于描述协议中的固有属性,如一条路由的关键字、名称、源和宿的信息等;变长结构用于描述协议中可变的一些数据,如一条路由经过的节点信息等。具体结构如表1所示。
表1:协议的数据结构。
根据以上数据结构,客户端在组织协议数据时,需要在数据结构中填写协议版本信息V(i),总条目数N(i),当前条目数据总长度N(ti),固定字段长度N(fi),填充固定字段数据,填写协议中变长结构数目N(ci),循环填写变长结构s(1~N(ci))的条目数N(ki)和每个条目的字段数据长度N(di),循环填写变长结构s(1~N(ci))每个条目的数据。其中,标记i用于标识客户端。
步骤S20:服务端(数据解析方)根据服务端协议版本V(j)的数据结构获得当前条目数据总长度N(tj),固定字段长度N(fj),获得协议中变长结构数目N(cj),循环获得变长结构s(1~N(cj))的每个条目的长度N(dj)。其中,标记j用于标识服务端。
步骤S30:服务端收到客户端发出的第一数据后,通过解析第一数据可获得第一数据结构,近而获得客户端协议数据结构中的协议版本号V(i),总条目数N(i),当前条目数据总长度N(ti),固定字段长度N(fi),并按照N(fi)偏移后获得协议中变长结构数目N(ci),循环获得变长结构s(1~N(ci))的条目数N(ki)和每个条目的长度N(di);
步骤S40:服务端将客户端协议使用的数据结构与服务端协议版本使用的数据结构进行对比,从而确定需要解析的数据的长度,并解析其中的固定字段数据和各个变长条目中的字段数据,完成对第一数据的解析得到协议数据。
在以上的介绍中,网管和电信设备分别既可以作为客户端,也可以作为服务端,当网管向电信设备传输协议数据时,则网管作为客户端,电信设备作为服务端;反之,当电信设备向网管传输协议数据时,则电信设备作为客户端,网管作为服务端。
本发明,通过进下的改进,在客户端和服务端协议版本不一致时,也可以确保数据正确解析,解决了不同协议版本间的兼容性问题。该改进的技术方案形成了本发明的具体实施例2。
具体实施例2。
在本具体实施例2中,由于客户端协议使用的数据结构和服务端协议版本使用的数据结构中均包括协议版本号,因此可通过对比客户端协议使用的数据结构和服务端协议版本使用的数据结构中的协议版本号,确定采用何种方式对协议数据进行解析。当固定字段长度或变长结构变更时,版本号也发生变更,只有固定字段长度或变长结构完全相同时,客户端协议版本和服务端协议版本才一致。
如图2所示,实现具体实施例2的技术方案包括以下步骤:
步骤S201:解析服务端协议条目数据结构,获得协议版本号V(j)、当前条目数据总长度N(tj)、固定字段长度N(fj)和变长结构数目N(cj),循环解析变长结构数目得到N(cj)个变长结构的数据结构,每个变长结构的条目长度N(dj)。
步骤S202:解析收到的客户端协议数据结构及数据,获得协议版本号V(i)和总条目数N(i)。
步骤S203:对比客户端协议和服务端协议的协议版本号V(j)和V(i),如果协议版本一致,则直接按照客户端协议数据结构对协议数据进行解析,此时N(f)=N(fi),N(c)=N(ci),N(d)=N(di)。如果协议版本号不一致,则执行步骤S204。
步骤S204:获取当前条目数据总长度N(ti)和固定字段长度N(fi);
步骤S205:对比当前条目固定字段长度N(fj)和N(fi)的大小,取较小的值作为需要读取的固定字段长度N(f)。
步骤S206:按照N(f)长度读取解析得到当前条目的固定字段数据。
步骤S207:按照N(fi)长度偏移后解析当前条目的变长结构数目N(ci)。
步骤S208:按照N(ci)个数,循环读取解析每个变长结构数据结构,包括变长结构的条目数N(ki)和变长结构中每个条目的字段数据长度N(di)。
步骤S209:对比当前条目变长结构数目N(cj)和N(ci)的大小,取较小的值作为变长结构数目N(c)。
步骤S210:按照N(c)个数循环解析变长结构的具体数据,具体步骤包括:
解析当前条目的变长结构的数据结构;
对比当前变长结构条目字段数据长度N(dj)和N(di)的大小,取较小的值作为当前变长结构条目字段数据长度N(d)。
每个条目按照N(d)长度读取数据,按照N(di)长度偏移后读取当前变长结构内的下一条目数据,循环执行直到当前变长结构数据解析完成。
按照N(i)总条目数循环执行步骤S204~S210,直到所有条目数据解析完成。
本发明中,对步骤S10生成协议数据的进一步细化,形成了具体实施例3。
具体实施例3。
具体实施例3是对本发明中生成第一数据的细化,如图3所示,实现具体实施例3的技术方案包括以下步骤:
步骤S101:填写协议版本信息V和总条目数N;
步骤S102:填写当前条目数据总长度N(t);
步骤S103:填写固定字段长度N(f),并填充固定字段数据;
步骤S104:填写变长结构数目N(c);
步骤S105:循环填写各个变长结构的信息,包括变长结构s的条目数N(k)和每个条目的字段数据长度N(d);
步骤S106:循环填写变长结构每个条目的数据。
本发明并不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (8)
1.一种基于私有协议的数据传输和解析的方法,其特征在于,包括以下步骤:
根据客户端协议版本,客户端将协议数据填充到第一数据结构中生成第一数据,所述第一数据结构为客户端协议使用的数据结构,其中每个条目包括固定字段部分的数据结构和变长结构部分的数据结构;
根据服务端协议版本,服务端获得当前条目所使用的第二数据结构,并确定其中固定字段部分的数据结构和变长结构部分的数据结构,所述第二数据结构为服务端协议版本使用的数据结构;
服务端接收到所述第一数据后,解析所述第一数据获得所述第一数据结构,并获得其中固定字段部分和变长结构部分的数据结构,根据所述第一数据结构和所述第二数据结构中固定字段部分和变长结构部分的数据结构,确定所述协议数据的位置,并解析所述第一数据获得所述协议数据;
所述固定字段部分的数据结构包括固定字段长度,用于确定固定字段的条目数;
所述变长结构部分的数据结构包括变长结构的数目以及每个变长结构包含的条目数、条目的字段长度和数据;
所述第一数据结构和所述第二数据结构中均包括总条目数和当前条目数据总长度,用于循环解析所有的条目数据。
2.根据权利要求1所述的方法,其特征在于,所述第一数据结构和所述第二数据结构中均包括协议版本号,用于确定客户端协议版本与服务端协议版本是否一致。
3.根据权利要求2所述的方法,其特征在于,生成所述第一数据包括以下步骤:
填写协议版本号、总条目数和当前条目数据总长度;
填写固定字段长度,填充固定字段数据;
填写变长结构数目,循环填写变长结构的条目数和每个条目的字段长度,循环填写变长结构每个条目的数据。
4.根据权利要求1所述的方法,其特征在于,根据所述第一或第二数据结构中的固定字段长度,通过偏移量获得变长结构数目,并循环获得变长结构的条目数和每个条目的字段长度。
5.根据权利要求2所述的方法,其特征在于,当客户端与服务端协议版本一致时,按照客户端协议使用的数据结构解析所述第一数据,当客户端与服务端协议版本不一致时,对当前条目的固定字段长度、变长结构数目按照“小长度解析、客户端长度偏移”的原则解析所述第一数据。
6.根据权利要求5所述的方法,其特征在于,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前条目的固定字段长度,取较小的值作为固定字段长度。
7.根据权利要求5所述的方法,其特征在于,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前条目变长结构数目,取较小的值作为变长结构数目。
8.根据权利要求5所述的方法,其特征在于,当客户端与服务端协议版本不一致,解析所述第一数据生成所述协议数据时:
对比所述第一数据结构和所述第二数据结构中,当前变长结构条目字段长度,取较小的值作为当前变长结构条目字段长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810520320.8A CN108429764B (zh) | 2018-05-28 | 2018-05-28 | 一种基于私有协议的数据传输和解析的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810520320.8A CN108429764B (zh) | 2018-05-28 | 2018-05-28 | 一种基于私有协议的数据传输和解析的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108429764A CN108429764A (zh) | 2018-08-21 |
CN108429764B true CN108429764B (zh) | 2021-03-30 |
Family
ID=63164227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810520320.8A Active CN108429764B (zh) | 2018-05-28 | 2018-05-28 | 一种基于私有协议的数据传输和解析的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108429764B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020232707A1 (zh) * | 2019-05-23 | 2020-11-26 | 深圳市大疆创新科技有限公司 | 分布式系统中通信协议版本号的更新 |
CN110445750A (zh) * | 2019-06-18 | 2019-11-12 | 国家计算机网络与信息安全管理中心 | 一种车联网协议流量识别方法及装置 |
CN114866282A (zh) * | 2022-03-30 | 2022-08-05 | 中核武汉核电运行技术股份有限公司 | 一种基于网络行为重构的核电工控协议解析系统和方法 |
CN115623085A (zh) * | 2022-09-22 | 2023-01-17 | 中电工业互联网有限公司 | 面向售货机的数据传输、解析方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594788A (zh) * | 2011-12-02 | 2012-07-18 | 曙光信息产业(北京)有限公司 | 一种面向对象的数据通信协议结构的实现方法 |
CN103326889A (zh) * | 2013-07-18 | 2013-09-25 | 迈普通信技术股份有限公司 | 一种新旧版本间通信兼容的方法及装置 |
CN103428192A (zh) * | 2012-05-25 | 2013-12-04 | 腾讯科技(北京)有限公司 | 一种封装与解析二进制协议数据的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020157041A1 (en) * | 2001-04-23 | 2002-10-24 | Bennett David Charles | Protocol parser-code generator |
-
2018
- 2018-05-28 CN CN201810520320.8A patent/CN108429764B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594788A (zh) * | 2011-12-02 | 2012-07-18 | 曙光信息产业(北京)有限公司 | 一种面向对象的数据通信协议结构的实现方法 |
CN103428192A (zh) * | 2012-05-25 | 2013-12-04 | 腾讯科技(北京)有限公司 | 一种封装与解析二进制协议数据的方法和装置 |
CN103326889A (zh) * | 2013-07-18 | 2013-09-25 | 迈普通信技术股份有限公司 | 一种新旧版本间通信兼容的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108429764A (zh) | 2018-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108429764B (zh) | 一种基于私有协议的数据传输和解析的方法 | |
CN110032575A (zh) | 数据查询方法、装置、设备和存储介质 | |
TWI672027B (zh) | 網頁中的資料處理方法、裝置及系統 | |
CN108881251B (zh) | 一种任意二进制设备接入解析与标准化的系统及方法 | |
CN108733317B (zh) | 数据存储方法和装置 | |
CN111159177B (zh) | 一种基于异构数据的数据融合方法、装置、设备及介质 | |
CN112751698B (zh) | 设备管理方法、装置、系统、设备及存储介质 | |
CN114116065A (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
CN115471307A (zh) | 基于知识图谱的审计评估信息生成方法、装置和电子设备 | |
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN114025027B (zh) | 数据传输脚本的运行方法、装置、存储介质和电子装置 | |
CN110855459B (zh) | 网络配置方法、装置及系统 | |
US8027362B2 (en) | Methods and systems for pushing and pulling network data in user interface design | |
CN113760987A (zh) | 数据处理方法和数据处理平台 | |
US20190087492A1 (en) | Method and apparatus for querying information | |
US7774401B2 (en) | Network data processing system, a network printing system, a data processing unit, a printer, a data processing program and a printing processing program, and a network data processing method and a network printing method | |
CN112256714A (zh) | 数据同步方法、装置、电子设备和计算机可读介质 | |
CN105450786B (zh) | 一种报文处理方法和装置 | |
EP1720285B1 (en) | Apparatus and method for processing messages in a network management system | |
CN115344659B (zh) | 海量轨迹大数据的处理方法及系统、存储介质、电子设备 | |
CN110929500B (zh) | 文件比较方法及相关装置 | |
CN107888696A (zh) | 一种存储实验室设备信息获取方法、系统及相关装置 | |
CN112713956B (zh) | 一种同步以太网的频率选择方法、装置、设备及存储介质 | |
CN110134467B (zh) | 参数配置的处理方法、装置、存储介质及处理器 | |
CN113779139A (zh) | 信息同步方法、装置、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |