网络数据分类的通用化设计

时间:2022-10-23 03:35:31

网络数据分类的通用化设计

摘 要: 网络数据分类是网络应用的一个基础功能,用于正确解析网络数据的类型和详细内容,提供给网络应用软件进行后续处理。本文设计了一个通用化的网络数据分类方法,具有较强的适应性,可以完成多种格式的网络数据帧的分类处理。

关键词: 网络数据分类 通用化 设计

1.引言

目前,高速以太网等计算机网络技术得到了广泛应用。通过以太网,各种设备之间的互联和数据交换变得简单、快捷、可靠,非常适合于解决设备间的兼容和互操作问题。[1]以太网一个主要的特点是简单,在实践中,简单性带来了可靠、廉价、易于维护等特性,因此,以太网具有强大的生命力。

以太网可以在同一总线上运行不同的传输协议,从而能够建立公共网络平台或基础架构。TCP/IP协议是最常见的网络互连协议,通常被定义为七层网络模型,用户可以根据实际需要,在应用层自定义数据帧格式。[2]通过自定义数据帧,用户可以方便地扩展数据通信功能,或者加强数据通信控制,满足不同的业务需求。这为网络应用带来了极大的灵活性,但同时也带来了一些不便。由于网络上传输的数据多种多样,因此用户需要将接收到的网络数据进行分类,不同的业务应用使用不同的数据信息,这样才不会产生混淆,避免后续的数据处理出现错误。通常,网络数据分类由网络应用软件完成,由软件开发人员根据规定的数据帧格式编制相应的数据分类模块,实现网络数据的分类。随着自定义数据帧格式的增多,需要编制的数据分类模块也不断增加,大大降低了软件开发的效率。

网络数据分类是网络应用的一个基础功能,通用化的网络数据分类方法可以提高网络应用开发的效率,具有较高的实用价值。本文分析了现有网络数据分类方法的共同点,设计了一个具有较强通用性的分类方法,可以在尽可能小的改动下,实现各种网络数据的分类。

2.接收网络数据的场景类型

在实际应用中,网络设备从网络上接收数据帧,然后进行处理。虽然网络数据的格式多种多样,但网络设备接收网络数据帧总可以归纳为以下三个场景。

2.1网络上所有设备都只发送一种格式的数据帧。这种情况下,数据源与数据帧的类型是一一对应的,知道了该数据帧是某个设备发送来的,即明确数据帧的来源,就可以知道该数据帧的类型。这个场景下的网络数据分类就是区分是“XX设备发送来的数据”。

2.2网络上所有设备发送多种格式的数据帧且帧类型码不重复。通常,在帧格式中会定义一个帧类型码,对所有类型的数据帧进行编码,这样,通过帧类型码就可以区分各个类型的数据帧。如果帧类型码是统一编码,就可以保证所有数据帧在帧类型码上不会重复。这种情况下,通过数据源不足以区分开各种类型的数据帧,但可以通过帧类型码区分各种数据帧。这个场景下的网络数据分类就是区分是“YY类型的数据”。

2.3网络上所有设备发送多种格式的数据帧且帧类型码有重复。在某些应用中,帧类型码的编码与设备是相互独立的,不同的设备可以发送同一帧类型码的数据帧。在这种情况下,单独考虑数据源或帧类型码都不能准确区分数据帧的类型,需要综合考虑数据源及帧类型码,才能正确区分数据帧。这个场景下的网络数据分类就是区分是“XX设备发送的YY类型的数据”。

3.网络数据分类的方法及要素

3.1网络数据分类的方法

对应于上述三个接收网络数据帧的场景,可以采用如下方法进行网络数据分类。

3.1.1源IP分类:用于第一个场景下的数据分类,区分是“XX设备发送来的数据”。在网络上,网络设备通常用设备的IP地址标识,源IP即表示了网络数据帧的来源。明确了数据源IP,就可以明确接收的数据帧是从哪个设备发送来的。

3.1.2帧ID分类:用于第二个场景下的数据分类,区分是“YY类型的数据”。帧类型码通常简称为帧ID,如果所有的帧ID是统一编码的,编码值没有重复,则帧ID与数据帧类型一一对应,采用帧ID即可区分所有数据类型。帧ID是数据帧中的一项,获取帧ID需要对网络数据帧进行“解帧”,也就是在数据帧中找到帧ID所在位置,并获取其值。

3.1.3混合分类:用于第三个场景下的数据分类,综合使用源IP和帧ID,区分是“XX设备发送的YY类型数据”。

3.2网络数据分类的要素

网络数据帧格式是网络数据分类的基础和依据。图1给出一个自定义网络数据帧的格式,下文将以此为例进行描述。该帧格式基于TCP/IP协议进行定义,关于TCP/IP协议的论著很多,本文不再赘述。

在上图中,用户关心的是应用层数据,可以根据需要自行定义应用层数据的格式。图中给出了格式定义的一个实例,数据帧由多个数据子帧组成,每个子帧都遵循相同的格式定义,其各个组成项目的作用如表1所示。

上述三种网络数据分类方法的目的,都是从数据帧中获取源地址、帧ID等信息,从而确定数据帧的类型。不难发现,这三种方法中都有几个不可或缺的要素。

3.2.1源IP:即数据帧的源IP地址,表示该数据帧是哪个设备发送的。源IP主要用在第一和第三个场景中,明确是“XX设备”。

3.2.2帧ID:即数据帧的帧类型码,主要用在第二和第三个场景中,明确数据帧的类型,即明确是“YY类型的数据”。

3.2.3应用层数据的帧结构信息:表示应用层数据格式的定义,说明“总帧长”、“帧ID”、“帧长度”、“有效数据”等项目的位置、数据类型、字节数等信息。在解帧过程中,可以根据该帧结构信息,定位到数据帧的各个项目,并获取项目的值。

4.网络数据解帧的通用方法

在网络数据接收的第二和第三个场景中,都需要获取帧ID才能完成数据的分类。获取帧ID通过对网络数据帧进行“解帧”操作完成。解帧就是按照数据帧格式定义,在数据帧中的相应位置找到各个项目,获取项目的值,或解析项目内容。

网络数据帧格式多种多样,解帧的关键在于正确解析数据帧头。数据帧头指有效数据之外的数据信息,通常包含了各种辅助信息,用于帮助控制通信过程和解析数据内容。图1中,“帧类型码”、“日期”、“时间”、“帧长度”、“保留”这几个项目组成了数据帧头。帧头中包含了多个信息,解帧时必须考虑三个因素:第一是帧类型码,这是判别帧类型的重要标识,知道了帧类型码,就可以判断该数据帧是否需要;第二是帧长度(包括总帧长和各个子帧长),这是控制解帧操作结束的标准,知道了帧长度,就可以在解帧到帧尾时停止解帧操作,防止误操作缓冲区;第三是有效数据的位置,以便对有效的数据进行处理。

无论网络数据帧格式如何变化,只要知道了上述信息,就可以正确解帧,获取帧ID及有效数据。基于这种思路的解帧方法与帧格式定义没有关系,可以作为一种通用的解帧算法。图2给出了网络数据解帧通用方法的处理流程。

5.网络数据分类的通用方法

当网络设备接收网络数据帧时,可以同时获取该数据帧的源IP,从而知道发送该数据帧的源设备。每个源设备发送的数据帧格式是预先约定的,按照其帧结构信息,采用上文所述的通用化解帧方法,可以获取帧ID,从而确定数据帧的类型。也就是说,网络数据分类的要素都可以获取。在此基础上,再对照接收网络数据的场景,采用相应的数据分类方法,即可完成网络数据的分类。

图3描述了网络数据分类的通用化处理流程。该处理流程只需要知道数据帧的源IP,以及帧ID、帧长度、有效数据的格式信息,可以适应多种数据帧格式定义,完成数据帧的分类操作,具有较强的通用性。

6.结语

本文概括了网络设备接收网络数据的三个典型场景,分析了在三个场景中进行数据分类不可缺少的共同要素。在此基础上,设计了三种网络数据分类的方法,分别用于相应的场景。对于数据分类过程中涉及的解帧操作,设计了通用化的网络数据解帧方法,其关键在于正确的解析网络数据帧头。

最后,本文综合运用三种网络数据分类方法,设计了通用化的数据分类算法。该算法可以在统一的处理流程中,适应大部分数据帧格式定义,完成各种网络数据的分类,具有较强的通用性。这种网络数据分类算法应用在我开发的多个软件中,不需修改软件代码,即可对不同格式的网络数据帧进行准确分类,提高了软件开发的效率,取得了较好的实用效果。

由于时间关系,本文只是对网络数据分类的方法作了初步探讨,很多详细的技术问题还需要在以后深入研究和验证,文中错误之处,敬请批评指正。

参考文献:

[1]刘晓辉等.以太网组网技术大全.清华大学出版社,2001.

[2]Andrew S. Tanenbaum 著.潘爱民译.计算机网络(4). 清华大学出版社,2004.

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

上一篇:关于《计算机网络》实验课程的教学探索 下一篇:单片机教学中的一些思考与实践