基于VxWorks的端口控制实现

更新时间:2023-05-27 13:24:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于VxWorks的端口控制实现

 2004年第11期

文章编号:100622475(2004)1120132203

计算机与现代化

JISUANJI YU XIANDAIHUA

总第111期

基于VxWorks的端口控制实现

张敬伟1,周 娅1,周德新2

(1.桂林电子工业学院计算机系,广西桂林 541004;2.桂林电子工业学院通信与信息工程系,广西 摘要:介绍了嵌入式操作系统VxWorks:,并对两种实现方法的特点和性能做了比较。

关键词:端口控制;MUX接口;HOOK中图分类号:TP393.09ofPortControlBasedonVxWorks

ZHANGJing2wei1,ZHOUYa1,ZHOUDe2xin2

(1.Dept.ofComputerScience,GuilinInstituteofElectronicTechnology,Guilin 541004,China;

2.Dept.ofCommunicationandInformationEngineering,GuilinInstituteofElectronicTechnology,Guilin 541004,China)Abstract:TwokindsofmethodbasedonVxWorkstorealizeportcontrol,HOOKfunctionsandMUXinterfacearediscussedinthispaper.Theperformanceandcharactercomparisonsofthetwomethodsarealsodetailed.Keywords:portcontrol;MUXinterface;HOOKfunctions

0 引 言

网络用户的主观行为是网络安全的最大“敌人”,

因此需要从职业道德和安全技术两方面来保证网络的安全性。从技术角度上来看,控制网络用户的主观行为主要是要根据网络用户的合法性来控制(用户使用的)物理通信端口的状态(开放或者关闭),从而达到限制或者阻止网络用户的恶意主观行为的效果。因此,如何有效对端口进行控制,使得在被控端口上,既能保证端口通信的流畅,又能很好地解决网络安全问题成了在各个开发平台下的一个主要任务。

现今,端口控制在不同的应用平台上有不同的实现方法。在Windows操作平台下,有winpcap开发包来实现对底层通信设备的驱动;Linux提供了原始套接字来访问通信设备的输入输出缓冲区。随着当前越来越多的网络设备对网络安全功能的加强,提出了端口控制在嵌入式系统中的实现。本文主要讨论端口控制在实时嵌入式系统VxWorks中的解决方案。

1 VxWorks简介

VxWorks

是当前比较流行的一个实时嵌入式操

作系统,主要应用于各种有实时需求的系统开发和嵌入式系统开发。VxWorks具有高效的任务管理功能,使得开发人员能够方便地设计高效的嵌入式系统;其可剪裁的微内核结构,使得基于VxWorks的应用实现只占用很少的存储空间便可以完成复杂的任务;Vx2Works提供了强大的网络功能和硬件驱动支持。

2 端口控制的方法

对一个物理通信端口进行控制,一般的处理措施是设法访问该物理端口的输入输出缓冲区,通过直接对输入输出缓冲区中的数据进行操作,从而达到控制端口的目的。例如,我们可以把合法的数据发送到网络中去,或者交给上层协议进行处理;而把非法的数据(没有合法身份的用户发来的数据)直接从缓冲区中删除,阻止这样的信息的流通。但对物理端口的缓冲区进行访问一般需要涉及到硬件的底层操作和复

收稿日期:2003212219

作者简介:张敬伟(19772),男,山东烟台人,桂林电子工业学院硕士研究生,研究方向:网络安全技术;周娅(19652),女,湖北人,副教授,研究方向:数据库理论与应用技术;周德新(19352),男,安徽人,教授,研究方向:计算机网络。

基于VxWorks的端口控制实现

 2004年第11期张敬伟等:基于VxWorks的端口控制实现

133

杂的数据结构,从而使得这方面的编程比较困难。目前,Windows下有辅助软件包winpcap,Linux系统提供可直接进行底层操作的原始套接字,以简化底层操作的复杂性。VxWorks结合其在嵌入式领域的特殊应用,提供了两种对底层设备的处理方法:HOOK函数和MUX接口,利用这两种方法都能够实现对底层设备的操作。

下面我们来具体讨论如何利用这两种方法来实现端口控制。2.1 HOOK函数

主机在接收到一个数据包后,始去掉相应的头部,。VxWorks允许我们使用H

。,由HOOK函数OOK函数一般用来判断包的合法性。HOOK函数每处理完一个数据包会返回一个布尔值,VxWorks则根据HOOK

函数的返回值来决定是否继续将该数据包交由上层协议处理。HOOK函数返回FALSE,表示该数据包是合法数据,应被上层协议继续处理;HOOK函数返回TRUE,表示该数据包是非法数据,应被丢弃,从而达到端口控制的目的。HOOK函数的处理流程如图1所示。

层可以调用相应的MUX函数来完成;同理,如果数据链路层的驱动程序需要访问网络层服务(IP服务和其它服务),也可以通过调用相应的MUX函数来实现。这样使得网络层和数据链路层不再直接交互,由MUX接口来屏蔽双方的细节。因此无论是改变数据链路层的驱动程序,,都不会影响到对方UX3MUX接口屏蔽了网络层和数据链路层的大部分

细节操作,但使用MUX对端口进行控制,一个关键的问题是需要直接操作数据缓冲区,因此需要熟悉缓冲区的组织结构。VxWorks使用网络内存池来存放数据包,其组织结构如图4所示。由图4可以看出,网

HOOK函数工作在数据链路层,

可以在输入和输

出两个方向对端口进行控制(分别使用InputHook和OutputHook函数)。2.2 MUX接口

为了更好地提供网络服务,VxWorks提供了MUX接口,以支持网络层和数据链路层的独立性,其网络层次图如图2所示。如果网络层需要使用数据链路层的驱动程序,则网络

络内存池主要有3种形态的组织结构,它们构成了MUX函数要操作的主要数据结构,分别是mBlk,clBlk和Cluster。其中Cluser为数据的存储区域,根据应用

基于VxWorks的端口控制实现

134

计 算 机 与 现 代 化2004年第11期

的需求,各个Cluster的大小可能不一样(64,128字节

不等);而mBlk和clBlk存储数据的管理信息。这3种结构通过指针连接在一起,形成一个完整的数据包。数据包的组织结构如图5所示。

使用MUX接口前,需要使用函数muxBind()将上层协议和底层端口进行绑定。同时在该函数中,要指定MUX将接收到的数据包递交给该协议时,

先进行的预处理操作(由自定义的函数来完成)。MUX对端口进行控制的流程如图6所示,其中实线表示发送数据包,虚线表示接收数据包。

(3)两者对数据包的操作。HOOK函数是不能够直接对网络内存池进行操作的,其实际上是对数据包的副本进行操作;而MUX函数则直接对网络内存池进行操作,显然具有较高的工作效率。

(4)使用HOOK函数进行编程比使用MUX函数要相对简单。对端口进行控制函数仅需要6个函数,构(;10M而且除了使用描述端口的,还需要了解一些其它的复杂数据,clBlk和Cluster,需要对网络数据包的组织结构有较清晰的了解。

4 结束语

在对交换机(例如24端口)这样的小型应用中,这两种端口控制的实现方法基本都可采纳。但WindRiver公司决定在将来的VxWorks版本中不再支持

3 特点与性能比较

使用HOOK函数和MUX接口来实现端口控制,都不需要了解太多的数据链路层和网络层协议细节,能够简化实现的复杂性。但二者在工作效率、操作简易度等方面还有一些区别,主要有以下几方面:

(1)HOOK函数主要是为以太网设计的,不适合对其它类型网络的端口进行控制;而MUX接口没有这个限制。

(2)HOOK函数工作在数据链路层;而MUX接口用于屏蔽数据链路层和网络层的交互。

HOOK函数,而致力于提供MUX接口服务。因此,考

虑到将来系统的兼容性和可扩展性,使用MUX接口进行端口控制将是最佳选择。

参考文献:

[1] IEEEStd802.1X22001,IEEEStandardforLocalandMetropol2

itanAreaNetworks—Port2BasedNetworkAccessControl[S].[2] WindRiverSystems,Inc.VxWorksNetworkProgrammer’s

Guide[M].WindRiverSystems,Inc.,2000.

[3] WindRiverSystems,Inc.VxWorksProgrammer’sGuide[M].

WindRiverSystems,Inc.,2000.

[4] 孔祥营,柏桂枝.嵌入式实时操作系统VxWorks及其开

发环境Tornado[M].北京:中国电力出版社,2002.

(上接第131页) 

xl.Caption=″打印预览″ ‘设置预览窗口的标题xl.ActiveSheet.PrintPreview ‘打印预览xl.ActiveSheet.PrintOut ‘打印输出

到一张张漂亮的报表轻易地被打印出来了。

2 结束语

本文对表格的制作、图表的插入等几个方面进行了详细的技术分析。在Excel软件中所能做到的,在应用程序开发中都可以通过调用来实现。这就很好地解决了复杂报表的设计问题,在实践应用中具有一定的实用价值。

参考文献:

[1] JeffSpots.VisualBasic6.0开发使用手册[M].北京:机械

通过打印方向、打印纸张大小的设置,不断进行预览,直到满意为止,最终进行打印输出。

(8)退出Excel。

xl.DisplayAlerts=False ‘不提示用户是否保存已修改的

文件

xl.Quit 

‘退出Excel

xl.DisplayAlerts=True ‘设置为默认值

设计的报表打印是通过Excel程序来控制后台实现的。对于使用者来说,根本看不到具体过程,只看

工业出版社,2000.

本文来源:https://www.bwwdw.com/article/ktb4.html

Top