CN112019491B - 一种报文处理方法及系统 - Google Patents
一种报文处理方法及系统 Download PDFInfo
- Publication number
- CN112019491B CN112019491B CN201910473300.4A CN201910473300A CN112019491B CN 112019491 B CN112019491 B CN 112019491B CN 201910473300 A CN201910473300 A CN 201910473300A CN 112019491 B CN112019491 B CN 112019491B
- Authority
- CN
- China
- Prior art keywords
- message
- protocol
- state
- script
- data
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种报文处理方法及系统,涉及通信技术领域。报文处理方法包括:从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种第一报文基于一种预设协议;从脚本中获取基于预设协议编辑的解析和封装规则以及状态确定规则,将第一报文解析为预定格式的第一数据,并确定预设协议的连接状态;将第一数据和预设协议的连接状态上传给应用。本发明基于预设协议编辑脚本,通过调用脚本实现支持多协议以及单协议多版本的协议栈处理功能,简化网络设备中的协议处理和协议开发。
Description
技术领域
本发明涉及通信技术领域,具体是涉及一种报文处理方法及系统。
背景技术
软件定义网络(Software Defined Networking,SDN)包括控制器和转发设备,控制器和转发设备之间通过控制通道协议进行通信,常用的控制通道协议包括国际互联网工程任务组(The Internet Engineering Task Force,IETF)制定的路径计算通信协议(PathComputation Element Communication Protocol,PCEP)和边界网关协议(Border GatewayProtocol,BGP)等。随着网络通信协议的快速发展,网络管理系统需要处理越来越多的协议,以满足网络设备多样化和智能化的需求。
目前,网络管理系统对每种通信协议都需要开发并应用一套协议栈,不仅在网络设备运行时占用系统资源,而且面对层出不穷的通信协议版本,需要针对该通信协议的更新及时释放补丁。由于通信协议发布存在版本繁多、迭代频繁、以及改动范围不可控等问题,导致网络管理系统难以进行匹配和规划,而且每次迭代更新会挤占大量开发资源。难以实现快速迭代更新,严重制约产品开发和市场销售。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种报文处理方法及系统,基于预设协议编辑脚本,通过调用脚本实现支持多协议以及单协议多版本的协议栈处理功能,简化网络设备中的协议处理和协议开发。
本发明提供一种报文处理方法,其包括:
从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种所述第一报文基于一种预设协议;
从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据,并确定所述预设协议的连接状态;
将所述第一数据和预设协议的连接状态上传给应用。
在上述技术方案的基础上,所述脚本包括数据模型脚本和状态分析脚本,所述数据模型脚本包括所述预设协议的基本信息以及解析和封装规则,所述状态分析脚本包括所述预设协议的基本信息和状态确定规则。
在上述技术方案的基础上,所述数据模型脚本和状态分析脚本均还包括TCP端口信息,所述TCP端口绑定所述第一套接字;
所述方法还包括:
预先加载所述数据模型脚本,将所述数据模型脚本转换为内部数据模型,并存入关联所述TCP端口信息的第一缓存区;
预先加载所述状态分析脚本,从所述状态分析脚本中提取所述状态确定规则,并存入关联所述TCP端口信息的第二缓存区。
在上述技术方案的基础上,所述从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据包括:
根据所述TCP端口信息,从所述第一缓存区中读取所述内部数据模型;
利用C++反射机制,基于所述内部数据模型构建解析类和管理类,将所述第一报文解析为所述第一数据。
在上述技术方案的基础上,所述从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,确定所述预设协议的连接状态还包括:
根据所述TCP端口信息,从所述第二缓存区中读取所述状态确定规则;
基于所述状态确定规则、TCP连接状态和第一数据,确定所述预设协议的当前连接状态和下一个连接状态;
其中,所述状态确定规则包括从所述当前连接状态变化为所述下一个连接状态的触发条件,触发条件包括所述TCP连接状态和所述第一数据中的特定信息。
在上述技术方案的基础上,所述从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态包括:
创建第二套接字,以监听所述第一套接字绑定的TCP端口;
使用IO多路复用技术监控所述第二套接字,并通过多线程的方式获取所述TCP端口所接收的所述第一报文。
在上述技术方案的基础上,所述方法还包括:
当所述预设协议的连接状态为连接建立时,创建心跳报文,通过所述第一套接字将心跳报文下发到所述TCP/IP协议栈。
在上述技术方案的基础上,所述方法还包括:
接收所述应用下发的所述预定格式的第二数据;
根据所述脚本,将所述第二数据封装为基于所述预设协议的第二报文,并确定所述预设协议的连接状态;
通过所述第一套接字将第二报文下发到所述TCP/IP协议栈。
本发明还提供一种报文处理系统,其包括:
收发模块,其用于从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种所述第一报文基于一种预设协议;
协议处理模块,其用于从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据,并确定所述预设协议的连接状态;还用于将所述第一数据和预设协议的连接状态上传给应用。
在上述技术方案的基础上,所述脚本包括数据模型脚本和状态分析脚本,所述数据模型脚本包括所述预设协议的基本信息以及解析和封装规则,所述状态分析脚本包括所述预设协议的基本信息和状态确定规则。
在上述技术方案的基础上,所述数据模型脚本和状态分析脚本均还包括TCP端口信息,所述TCP端口绑定所述第一套接字;
所述协议处理模块包括数据处理单元和状态管理单元;
所述数据处理单元用于加载所述数据模型脚本,将所述数据模型脚本转换为内部数据模型,并存入关联所述TCP端口信息的第一缓存区;
所述状态管理单元用于加载所述状态分析脚本,从所述状态分析脚本中提取所述状态确定规则,并存入关联所述TCP端口信息的第二缓存区。
在上述技术方案的基础上,所述数据处理单元还用于根据所述TCP端口信息,从所述第一缓存区中读取所述内部数据模型;以及利用C++反射机制,基于所述内部数据模型构建解析类和管理类,将所述第一报文解析为所述第一数据。
在上述技术方案的基础上,所述状态管理单元还用于根据所述TCP端口信息,从所述第二缓存区中读取所述状态确定规则;以及基于所述状态确定规则、TCP连接状态和第一数据,确定所述预设协议的当前连接状态和下一个连接状态;其中,所述状态确定规则包括从所述当前连接状态变化为所述下一个连接状态的触发条件,触发条件包括所述TCP连接状态和所述第一数据中的特定信息。
在上述技术方案的基础上,所述状态管理单元还用于当所述预设协议的连接状态为连接建立时,创建心跳消息并发送给所述数据处理单元;
所述数据处理单元还用于将心跳消息封装为创建心跳报文,并发送给所述收发模块;
所述收发模块还用于通过所述第一套接字将所述心跳报文下发到所述TCP/IP协议栈。
在上述技术方案的基础上,所述收发模块包括套接字管理单元和线程管理单元;
所述套接字管理单元用于创建第二套接字,以监听所述第一套接字绑定的所述TCP端口;还用于使用IO多路复用技术监控所述第二套接字;
所述线程管理单元用于通过多线程的方式获取所述TCP端口所接收的所述第一报文。
在上述技术方案的基础上,所述协议处理模块还用于接收所述应用下发的所述预定格式的第二数据;根据所述脚本,将所述第二数据封装为基于所述预设协议的第二报文,并确定所述预设协议的连接状态;还用于将所述第二报文发送给所述收发模块;
所述收发模块还用于通过所述第一套接字将所述第二报文下发到所述TCP/IP协议栈。
与现有技术相比,本发明实施例报文处理方法包括:从传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol,TCP/IP)协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种第一报文基于一种预设协议;从脚本中获取基于预设协议编辑的解析和封装规则以及状态确定规则,将第一报文解析为预定格式的第一数据,并确定预设协议的连接状态;将第一数据和预设协议的连接状态上传给应用。本发明实施例基于预设协议编辑脚本,通过调用脚本实现支持多协议以及单协议多版本的协议栈处理功能,简化网络设备中的协议处理和协议开发。
附图说明
图1是本发明实施例报文处理方法流程图;
图2是本发明实施例数据模型脚本的示意图;
图3是本发明实施例状态分析脚本的示意图;
图4是C++反射机制解析过程示意图;
图5是本发明实施例报文的处理系统一个示意图
图6是本发明实施例报文的处理系统另一示意图;
图7是本发明实施例处理系统实现报文处理方法的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
本发明实施例提供一种报文处理方法,应用于通过传输控制协议(TransmissionControl Protocol,TCP)相连的多个网络设备中的至少一个。例如,在软件定义网络(Software Defined Networking,SDN)中的控制器和/或转发设备,控制器与转发设备通过套接字(Socket)建立TCP连接,以通过控制通道传输基于预设的通信协议的报文。在网络设备中,应用调用套接字应用程序接口(Application Programming Interface,API),创建套接字。TCP/IP协议栈对收、发的报文进行TCP/IP协议处理。
作为示例而非限定,上述控制通道可以是基于控制信道协议的信道。控制通道协议可以包括以下至少一种:PCEP、BGP、简单网络管理协议(Simple Network ManagementProtocol,SNMP)和网络配置(Network Configuration,NETCONF)协议等。
参见图1所示,当接收到报文时,本发明实施例报文处理方法包括:
S110从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种第一报文基于一种预设协议。
具体的,第一报文的数量可以是多个,预设协议是预设的通信协议,例如上述的控制信道协议。
TCP连接状态可以根据第一套接字的函数socket()确定,包括监听状态(listen)、连接(connect)和连接建立(established)。
S120从脚本中获取基于预设协议编辑的解析和封装规则以及状态确定规则,将第一报文解析为预定格式的第一数据,并确定预设协议的连接状态。
具体的,解析和封装规则以及状态确定规则与第一套接字的相关信息相关联,第一套接字的相关信息包括本地IP地址、本地端口号和协议类型等,还可以包括远端IP地址和远端端口号等。
S130将第一数据和预设协议的连接状态上传给应用。
本发明实施例根据预先加载的脚本,可以对基于多种协议以及单协议多版本的报文进行处理,实现支持多协议以及单协议多版本的协议栈功能。不仅简化网络设备的协议处理过程,减少系统资源占用,而且将网络通信协议的开发简化为脚本开发,分离通信协议的数据和连接状态,简化该协议栈与应用之间的接口,从而实现高效、通用的协议栈开发逻辑,降低网络通信产品的开发成本,缩短开发周期。
在一种可选的实施方式中,步骤S110包括:
S111创建第二套接字,以监听TCP端口。
S112使用IO多路复用技术监控第二套接字,并通过多线程的方式获取TCP端口所接收的第一报文。
本发明实施例支持Windows和Unix平台。具体的,通过系统select接口(Windows和Unix都支持)或者epoll接口(仅Unix支持),实时获取第一报文的数据,并分配空闲线程上报获取的数据。
在一种可选的实施方式中,脚本包括数据模型脚本和状态分析脚本,数据模型脚本包括预设协议的基本信息以及解析和封装规则,状态分析脚本包括预设协议的基本信息和状态确定规则。
步骤S120包括:
S121根据预先加载的数据模型脚本,将第一报文解析为预定格式的数据。
S122根据预先加载的状态分析脚本,确定预设协议的连接状态。
具体的,网络设备启动时可以加载指定路径下的脚本,实现预先加载。预设协议的基本信息包括协议名称和版本信息。基于解析和封装规则,在第一报文和预定格式的第一数据之间进行双向转换。
本发明实施例采用数据层和状态机层对报文进行处理,在数据层中执行步骤S121,在状态机层执行步骤S122,从而最大限度地实现数据处理和状态处理逻辑的分离,在实际应用中,可以根据需要对数据层和状态机层进行动态扩展,进一步提高本发明实施例实现的协议栈的通用性和开发效率。
进一步的,数据模型脚本和状态分析脚本均还包括TCP端口信息,TCP端口绑定第一套接字。
具体的,TCP端口是本地端口,TCP端口信息可以是本地端口号。
作为示例而非限定,数据模型脚本如图2所示,包含:协议的基本信息及端口信息(PROTOCOL节点)、协议头(HEAD节点)以及协议内容(TLVDATA节点),其中,类型长度值(Type-length-value,TLV)结构是网络协议通用的数据结构,其中,T代表类型,L代表长度,V代表值。
PROTOCOL节点包括:协议名称(name属性)、协议版本(version属性)和端口信息(port属性),例如,协议名称为BGP,协议版本为1.0,端口信息为前述的TCP端口信息。
TLVDATA节点表示可选的TLV格式,包括每个TLV定义自身的类型、长度以及父节点。TLVDATA节点定义了上报给应用的TLV数据格式和TLV层级结构。
作为示例而非限定,状态分析脚本如图3所示,包含:协议的基本信息及端口信息(PROTOCOL节点)、协议状态(STATUS节点)和状态变化路径(DIRECTION节点),状态确定规则可以是图3中的状态变化路径。
PROTOCOL节点包括:协议名称(name属性)、协议版本(version属性)和通信端口(port属性),协议名称为BGP,协议版本为1.0,通信端口为前述的TCP端口信息。
STATUS节点包括:监听状态(listen)、连接状态(connect)、连接建立状态(established)、开放状态(open)和结束状态(finish)。
具体的,监听状态(listen)、连接状态(connect)和连接建立状态(established)、TCP连接状态和第一套接字的函数名称(如listen,connect和established函数))保持一致。开放状态(open)和结束状态(finish)分别与BGP协议中的open函数和finish函数保持一致。
DIRECTION节点包括多条状态变化路径,每条状态变化路径均包括:
当前连接状态(BEGIN)、下一个连接状态(END)和触发条件(ACT),当前连接状态(BEGIN)、下一个连接状态(END)和触发条件(ACT)从TCP连接状态或者第一数据中的特定信息得到。
触发条件可以与具体的函数名称保持一致,具体的函数名称包括TCP连接中第一套接字的函数名称以及BGP协议中的函数。
进一步的,在步骤S110之前,报文处理方法还包括:
S100预先加载数据模型脚本和状态分析脚本。
预先加载数据模型脚本,将数据模型脚本转换为内部数据模型,并存入关联TCP端口信息的第一缓存区。
具体的,内部数据模型为程序语言定义的关系型内部数据模型,例如C++的MAP型数据结构。
预先加载状态分析脚本,从状态分析脚本中提取状态确定规则,并存入关联TCP端口信息的第二缓存区。
进一步的,步骤S121包括:
S1211根据TCP端口信息,从第一缓存区中读取内部数据模型。
S1212利用C++反射机制,基于内部数据模型构建解析类和管理类,将第一报文解析为第一数据。
图4所示为利用C++反射机制的解析过程,在内部数据模型的基础上构建解析代码,自动解析接收的第一报文的数据。其中自动解析算法具体如下:
A、加载对数据模型脚本的关键节点(如图2中TLVDATA节点)的解析代码,解析代码包括解析类和管理类,解析类的类名与节点名称保持一致。
B、在预先加载数据模型脚本的过程中,解析类向管理类注册自身解析函数指针和解析类名称。
C、管理类通过地图map结构建立解析类名称到解析函数指针的映射以及map缓存。
D、接收第一报文。
E、对照数据模型脚本解析第一报文,例如,对于BGP报文,BGP报文具有TLV结构,检查到某个TLV结构时,根据类型T的定义,在步骤C的管理类map缓存中查找对应的解析函数指针。
F、调用解析函数指针自动解析类型T后面紧跟的长度L的二进制流,并输出解析结果。
进一步的,步骤S122包括:
S1221根据TCP端口信息,从第二缓存区中读取状态确定规则。
S1222基于状态确定规则、TCP连接状态和第一数据,确定预设协议的当前连接状态和下一个连接状态。其中,状态确定规则包括从当前连接状态变化为下一个连接状态的触发条件,触发条件包括TCP连接状态和第一数据中的特定信息。
具体的,结合S100中构建的第二缓存区以及S1212中解析出的第一数据,计算出下一个协议状态,并通知上层的应用,便于应用组织应答数据。
在一种可选的实施方式中,当预设协议的连接状态为连接建立时,创建心跳报文,通过第一套接字将心跳报文下发到TCP/IP协议栈。
当应用向其它网络设备发送报文时,本发明实施例报文处理方法包括:
S210接收应用下发的预定格式的第二数据。
S220根据脚本,将第二数据封装为基于预设协议的第二报文,并确定预设协议的连接状态。
S230通过第一套接字将第二报文下发到TCP/IP协议栈。
本发明实施例对不同网络协议的协议内容脚本化,将每种协议的版本更新简化为相应脚本的更新;分离协议相关的解析和封装功能,以及协议无关的连接状态管理功能和数据传送功能,分层实现连接状态管理功能和数据传送功能,从而极大地降低网络协议的开发工作量、周期和成本,减少版本编译、发布等后期的各项繁琐工作,以快速推出相关通信产品。
参见图5所示,本发明实施体还提供一种报文的处理系统,用于实现前述实施例的方法,报文的处理系统包括收发模块和协议处理模块。
收发模块用于从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种第一报文基于一种预设协议。
协议处理模块用于从脚本中获取基于预设协议编辑的解析和封装规则以及状态确定规则,将第一报文解析为预定格式的第一数据,并确定预设协议的连接状态;还用于将第一数据和预设协议的连接状态上传给应用。
在一种可选的实施方式中,收发模块包括套接字管理单元和线程管理单元,套接字管理单元用于创建第二套接字,以监听第一套接字绑定的TCP端口;还用于使用IO多路复用技术监控第二套接字。线程管理单元用于通过多线程的方式获取TCP端口所接收的第一报文。
在一种可选的实施方式中,脚本包括数据模型脚本和状态分析脚本,数据模型脚本包括预设协议的基本信息以及解析和封装规则,状态分析脚本包括预设协议的基本信息和状态确定规则。
进一步的,参见图6所示,协议处理模块包括数据处理单元和状态管理单元,获取模块、数据处理单元和状态管理单元通过TCP端口信息相关联。
数据处理单元用于加载数据模型脚本,将数据模型脚本转换为内部数据模型,并存入关联TCP端口信息的第一缓存区。
状态管理单元用于加载状态分析脚本,从状态分析脚本中提取状态确定规则,并存入关联TCP端口信息的第二缓存区。
进一步的,数据处理单元还用于根据TCP端口信息,从第一缓存区中读取内部数据模型;以及利用C++反射机制,基于内部数据模型构建解析类和管理类,将第一报文解析为第一数据。
状态管理单元还用于根据TCP端口信息,从第二缓存区中读取状态确定规则;以及基于状态确定规则、TCP连接状态和第一数据,确定预设协议的当前连接状态和下一个连接状态;其中,状态确定规则包括从当前连接状态变化为下一个连接状态的触发条件,触发条件包括TCP连接状态和第一数据中的特定信息。
在一种可选的实施方式中,状态管理单元还用于当预设协议的连接状态为连接建立时,创建心跳消息并发送给数据处理单元。
数据处理单元还用于将心跳消息封装为创建心跳报文,并发送给收发模块。
收发模块还用于通过第一套接字将心跳报文下发到TCP/IP协议栈。
具体的,对于部分需要定时发送心跳的状态,由状态管理单元启动定时器定时发送请求给数据处理单元,并由数据处理单元组织心跳数据,经由收发模块发送给TCP/IP协议栈,然后发送给对端网络设备。状态管理单元根据心跳请求结果,实时确定连接状态的变化。
在一种可选的实施方式中,协议处理模块还用于接收应用下发的预定格式的第二数据;根据脚本,将第二数据封装为基于预设协议的第二报文,并确定预设协议的连接状态;还用于将第二报文发送给收发模块。
收发模块还用于通过第一套接字将第二报文下发到TCP/IP协议栈。
图7所示是本发明实施例报文处理系统对收到的报文的处理方法,包括:
S301套接字管理单元初始化。
a、构建一个套接字资源管理对象,通过引用计数指针管理系统内部所有套接字封装类。
b、构建若干个套接字封装类。
创建套接字封装类,可以通过构造函数调用系统套接字接口中的监听接口listen,以及通过析构函数调用系统套接字接口中的关闭接口close,进而简化系统原生套接字接口的使用流程。
创建套接字封装类还可以使用已有第三方库的封装类,例如boost库的asio模块。
S302线程管理单元初始化,以管理收发模块中的线程资源。
例如直接使用boost库的thread_group模块,或者自行构建管理类,以管理系统原生线程thread类。Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。
S303数据处理单元注册TCP端口。
S304套接字管理单元根据TCP端口调用套接字封装类,并启动网络数据监听工作。套接字管理单元通过系统select接口(Windows和Unix都支持)或者epoll接口(仅Unix支持),实时获取第一报文,并调用线程管理单元分配空闲线程,上报第一报文给协议处理模块进行处理。
S401数据处理单元初始化。
S402数据处理单元接收第一报文后,从缓存区域读取相应的数据模型脚本,解析第一报文。
S403数据处理单元将第一数据和预设协议的连接状态发送给状态管理单元。
S404数据处理单元将心跳消息封装为心跳报文,发送心跳报文给收发模块,通过TCP/IP协议栈发送给对端网络设备。
S405数据处理单元从收发模块接收心跳消息的响应。
S406数据处理单元将心跳消息的响应发送给状态管理单元。
S501状态管理单元初始化。
S502状态管理单元确定预设协议的连接状态。
S503状态管理单元将第一数据和预设协议的连接状态上传给应用。
S504对于部分需要定时发送心跳报文的状态,状态管理单元启动定时器。
S505状态管理单元定时发送心跳消息给数据处理单元。
S506状态管理单元接收数据处理单元返回的心跳消息的响应。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (14)
1.一种报文处理方法,其特征在于,其包括:
从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种所述第一报文基于一种预设协议;
从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据,并确定所述预设协议的连接状态;
将所述第一数据和预设协议的连接状态上传给应用;
所述脚本包括数据模型脚本和状态分析脚本,所述数据模型脚本包括所述预设协议的基本信息以及解析和封装规则,所述状态分析脚本包括所述预设协议的基本信息和状态确定规则。
2.如权利要求1所述的报文处理方法,其特征在于:
所述数据模型脚本和状态分析脚本均还包括TCP端口信息,所述TCP端口绑定所述第一套接字;
所述方法还包括:
预先加载所述数据模型脚本,将所述数据模型脚本转换为内部数据模型,并存入关联所述TCP端口信息的第一缓存区;
预先加载所述状态分析脚本,从所述状态分析脚本中提取所述状态确定规则,并存入关联所述TCP端口信息的第二缓存区。
3.如权利要求2所述的报文处理方法,其特征在于,所述从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据包括:
根据所述TCP端口信息,从所述第一缓存区中读取所述内部数据模型;
利用C++反射机制,基于所述内部数据模型构建解析类和管理类,将所述第一报文解析为所述第一数据。
4.如权利要求2所述的报文处理方法,其特征在于,所述从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,确定所述预设协议的连接状态还包括:
根据所述TCP端口信息,从所述第二缓存区中读取所述状态确定规则;
基于所述状态确定规则、TCP连接状态和第一数据,确定所述预设协议的当前连接状态和下一个连接状态;
其中,所述状态确定规则包括从所述当前连接状态变化为所述下一个连接状态的触发条件,触发条件包括所述TCP连接状态和所述第一数据中的特定信息。
5.如权利要求2所述的报文处理方法,其特征在于,所述从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态包括:
创建第二套接字,以监听所述第一套接字绑定的TCP端口;
使用IO多路复用技术监控所述第二套接字,并通过多线程的方式获取所述TCP端口所接收的所述第一报文。
6.如权利要求1所述的报文处理方法,其特征在于,所述方法还包括:
当所述预设协议的连接状态为连接建立时,创建心跳报文,通过所述第一套接字将心跳报文下发到所述TCP/IP协议栈。
7.如权利要求1所述的报文处理方法,其特征在于,所述方法还包括:
接收所述应用下发的所述预定格式的第二数据;
根据所述脚本,将所述第二数据封装为基于所述预设协议的第二报文,并确定所述预设协议的连接状态;
通过所述第一套接字将第二报文下发到所述TCP/IP协议栈。
8.一种报文处理系统,其特征在于,其包括:
收发模块,其用于从TCP/IP协议栈获取至少一种第一报文、对应的第一套接字和TCP连接状态,每种所述第一报文基于一种预设协议;
协议处理模块,其用于从脚本中获取基于所述预设协议编辑的解析和封装规则以及状态确定规则,将所述第一报文解析为预定格式的第一数据,并确定所述预设协议的连接状态;还用于将所述第一数据和预设协议的连接状态上传给应用;所述脚本包括数据模型脚本和状态分析脚本,所述数据模型脚本包括所述预设协议的基本信息以及解析和封装规则,所述状态分析脚本包括所述预设协议的基本信息和状态确定规则。
9.如权利要求8所述的报文处理系统,其特征在于:
所述数据模型脚本和状态分析脚本均还包括TCP端口信息,所述TCP端口绑定所述第一套接字;
所述协议处理模块包括数据处理单元和状态管理单元;
所述数据处理单元用于加载所述数据模型脚本,将所述数据模型脚本转换为内部数据模型,并存入关联所述TCP端口信息的第一缓存区;
所述状态管理单元用于加载所述状态分析脚本,从所述状态分析脚本中提取所述状态确定规则,并存入关联所述TCP端口信息的第二缓存区。
10.如权利要求9所述的报文处理系统,其特征在于:
所述数据处理单元还用于根据所述TCP端口信息,从所述第一缓存区中读取所述内部数据模型;以及利用C++反射机制,基于所述内部数据模型构建解析类和管理类,将所述第一报文解析为所述第一数据。
11.如权利要求9所述的报文处理系统,其特征在于:
所述状态管理单元还用于根据所述TCP端口信息,从所述第二缓存区中读取所述状态确定规则;以及基于所述状态确定规则、TCP连接状态和第一数据,确定所述预设协议的当前连接状态和下一个连接状态;其中,所述状态确定规则包括从所述当前连接状态变化为所述下一个连接状态的触发条件,触发条件包括所述TCP连接状态和所述第一数据中的特定信息。
12.如权利要求9所述的报文处理系统,其特征在于:
所述状态管理单元还用于当所述预设协议的连接状态为连接建立时,创建心跳消息并发送给所述数据处理单元;
所述数据处理单元还用于将心跳消息封装为创建心跳报文,并发送给所述收发模块;
所述收发模块还用于通过所述第一套接字将所述心跳报文下发到所述TCP/IP协议栈。
13.如权利要求9所述的报文处理系统,其特征在于:
所述收发模块包括套接字管理单元和线程管理单元;
所述套接字管理单元用于创建第二套接字,以监听所述第一套接字绑定的所述TCP端口;还用于使用IO多路复用技术监控所述第二套接字;
所述线程管理单元用于通过多线程的方式获取所述TCP端口所接收的所述第一报文。
14.如权利要求8所述的报文处理系统,其特征在于:
所述协议处理模块还用于接收所述应用下发的所述预定格式的第二数据;根据所述脚本,将所述第二数据封装为基于所述预设协议的第二报文,并确定所述预设协议的连接状态;还用于将所述第二报文发送给所述收发模块;
所述收发模块还用于通过所述第一套接字将所述第二报文下发到所述TCP/IP协议栈。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910473300.4A CN112019491B (zh) | 2019-05-31 | 2019-05-31 | 一种报文处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910473300.4A CN112019491B (zh) | 2019-05-31 | 2019-05-31 | 一种报文处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112019491A CN112019491A (zh) | 2020-12-01 |
CN112019491B true CN112019491B (zh) | 2022-09-13 |
Family
ID=73506864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910473300.4A Active CN112019491B (zh) | 2019-05-31 | 2019-05-31 | 一种报文处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112019491B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361456B (zh) * | 2022-08-04 | 2023-05-09 | 广东中设智控科技股份有限公司 | 一种数据报文的处理方法、装置及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789981A (zh) * | 2010-03-18 | 2010-07-28 | 杭州华三通信技术有限公司 | 双协议栈数据传输的方法和设备 |
CN102685243A (zh) * | 2012-05-22 | 2012-09-19 | 清华大学 | 一种轻量级tcp/ip协议栈的实现方法 |
CN102724183A (zh) * | 2012-05-28 | 2012-10-10 | 浙江工业大学 | 一种车载gps设备协议转换软网关 |
CN103095609A (zh) * | 2013-01-09 | 2013-05-08 | 大唐软件技术股份有限公司 | 一种基于物联网终端的接入适配方法和装置 |
CN103825811A (zh) * | 2013-10-11 | 2014-05-28 | 江苏飞尚安全监测咨询有限公司 | 一种接入传感器协议自识别的物联网网关实现方案 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180091631A1 (en) * | 2017-08-02 | 2018-03-29 | Akamai Technologies, Inc. | Systems and methods for writing prioritized http/2 data to a socket buffer |
-
2019
- 2019-05-31 CN CN201910473300.4A patent/CN112019491B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789981A (zh) * | 2010-03-18 | 2010-07-28 | 杭州华三通信技术有限公司 | 双协议栈数据传输的方法和设备 |
CN102685243A (zh) * | 2012-05-22 | 2012-09-19 | 清华大学 | 一种轻量级tcp/ip协议栈的实现方法 |
CN102724183A (zh) * | 2012-05-28 | 2012-10-10 | 浙江工业大学 | 一种车载gps设备协议转换软网关 |
CN103095609A (zh) * | 2013-01-09 | 2013-05-08 | 大唐软件技术股份有限公司 | 一种基于物联网终端的接入适配方法和装置 |
CN103825811A (zh) * | 2013-10-11 | 2014-05-28 | 江苏飞尚安全监测咨询有限公司 | 一种接入传感器协议自识别的物联网网关实现方案 |
Also Published As
Publication number | Publication date |
---|---|
CN112019491A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chung et al. | NS by Example | |
CN113411215B (zh) | 基于opc ua的时间敏感网络集中用户配置方法及系统 | |
CN109088820B (zh) | 一种跨设备链路聚合方法、装置、计算装置和存储介质 | |
CN109547524B (zh) | 基于物联网的用户行为存储方法、装置、设备及存储介质 | |
CN112838940B (zh) | 一种网络控制器框架和数据处理方法 | |
CN115150274B (zh) | 时间敏感网络设备的统一配置方法、系统及存储介质 | |
CN112217845B (zh) | 一种基于Netconf协议的数据传输方法及相关设备 | |
CN111917717A (zh) | 基于网关识别的工业现场协议自动解析的方法及系统 | |
CN112019491B (zh) | 一种报文处理方法及系统 | |
KR101975082B1 (ko) | 소프트웨어 정의 네트워킹 네트워크에서 트랜잭션 관리 방법 | |
KR102094041B1 (ko) | IoT 단말 간 실시간으로 자율적인 상호작용을 위한 RDF 그래프 기반의 Semantic 엔진을 구비한 시스템 | |
CN112672363B (zh) | 随流信息遥测能力的确认方法和设备 | |
CN104320322A (zh) | 一种报文控制方法和设备 | |
CN115004650A (zh) | 节点配置方法、装置、分布式系统及计算机可读介质 | |
CN101572624A (zh) | 一种跨平台跨方法的snmp扩展mib实现方法 | |
CN109274715A (zh) | 车载多通道通信系统的平台资源管理系统 | |
CN107103058B (zh) | 基于Artifact的大数据服务组合方法及复合服务组合方法 | |
CN113115059B (zh) | 弹幕连接监控方法、装置、设备及存储介质 | |
CN108683540B (zh) | 一种网络管理协议通道跨平台的轻量级实现方法及系统 | |
CN116056120A (zh) | 一种运维操作方法、系统及网络设备 | |
US20050076343A1 (en) | Persistent storage of network management data using object references | |
KR20010055482A (ko) | 통합망 환경에서 서비스관리시스템의 관리명령을 교환기명령어로 변환하는 방법 | |
CN113395293B (zh) | 一种基于rpc的网络套接字实现方法 | |
CN110868317B (zh) | 设备监测方法、装置、电子设备及存储介质 | |
KR20030043398A (ko) | 망 요소 관리 시스템의 장치 연동부 구성 및 연동 방법 |
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 |