下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 NDIS驱动程序研究和基于NDIS网络监测程序实现

NDIS驱动程序研究和基于NDIS网络监测程序实现.pdf

NDIS驱动程序研究和基于NDIS网络监测程序实现

wangyalin11
2012-03-12 0人阅读 举报 0 0 暂无简介

简介:本文档为《NDIS驱动程序研究和基于NDIS网络监测程序实现pdf》,可适用于IT/计算机领域

《微计算机信息)(测控自动化)OO年第卷第期NDIS序研究和基于NDIS网络监测程序实现NDISDriverStudyAndNDISBasedNetworkMonitoringImplementation摘要:本文介绍了Windows环境下根据网络设备接口规范(NetworkDeviceInterfaceSpecification)NDIS开发网络驱动程序的技术。并分析了开发基于NDIS网络监测程序的要点。关键词:NDIS驱动程序。网络监测。过滤数据包截获中图分类号:'P文献标识码:A文章编号:()OlOlAbstract:ThispapersimplyintroducesthestudyresultoftechniqueofNDISdriverdevelopmentinWindowsoperatingsystem.AndanalyzethekeypointofnetworkmonitoringprogramImplementation.Keywords:NDISnetworkdrivernetworkinonitorfilterdatapacketcapture前言随着计算机网络的普及和相关技术的迅速发展.一些应用软件需要对要网络上传输的数据包进行过滤和分析操作.在Windows环境下有多种方式实现数据包的截获。可以利用WINSOCK的API函数在表示层实现.也可以在会话层用WINDOWS提供的标准API实现也可以在传输层写驱动截获数据包并作相应的操作但过滤不了如ICMP等协议的数据在WINDOWS下实现数据包截获操作最标准最规范最强大的方式应该是在NDIS(网络层实现)功能强大效率高而且相对下面链路层的设备驱动要简单。网络驱动程序接口规范NDIS(NetworkDeviceInterfaceSpecification)是微软和Com公司开发的网络驱动程序接口规范的简称。为在Windows平台上开发网络驱动程序和网络协议驱动程序提供了框架指导。NDIS提供了一个规范的开发流程和函数框架使得开发者只要实现这些函数。而不用考虑操作系统内核以及与其他驱动程序的接口问题就可以开发出高效的网络驱动程序。目前的NDIS版本是NDIS..NDIs网络驱动程序.Windows中的网络通讯体系结构Windowso/XP下网络的组件设计并没有完全实现ISO的OS分层模型。Windows下的网络构架的各类通讯组件主要有:)网络API:在用户态或者核心态为应用程序提供一种独立于协议的方式用于网络通讯)传输驱动程序接口(aDZ)客户:是核心态的设备驱动程序实现了网络API的核心部分)TDI传送器:是工作在核心态的协议驱动程序。他们接受从TDI客户传来的IRP然后处理这些IRP中的请求孙华领顾景文SunHualingGuJingwen)NDIS库:为适配驱动程序提供了封装和支持函数.而且也为TDI传送器的适用提供了函数接口。)NDIS小端口驱动程序:是工作在核心态的驱动程序负责将TDI传送器接入特定的网络适配器。他们之间的层次结构如图所示:.NDIS驱动程序分类NDIS把网络驱动程序从网络硬件中抽象出来制定了网络驱动层与层之间的接口规范。NDIS同时也维护了网络驱动的状态信息和参数包括指向函数的指针句柄请求包(IRQ)和其他的系统值。NDIS支持下列三种类型的驱动程序。他们之间的层次关系如图所示图l)小端口驱动程序NDIS小端口驱动程序主要有两种基本的功能.一方面管理NIC(NETWORKINTERFACECARD)另一方面为高级驱动程序如中问层驱动程序和传输协议驱动程序提供接口支持。)中间驱动程序中间驱动程序是典型的处于小端口驱动程序和传输协议驱动程序之间的驱动程序。中间驱动程序通常以下几种方式使用:在不同的网络媒体中起翻译作用过滤数据包还可以在多个NIC中平衡数据包的传送)协议驱动程序NDIS协议驱动程序经常在一个传输驱动程序中被用来作为最底层的驱动程序来实现一个传输协议栈。协议驱动程序同时也提供协议接口来接收从下一个到达驱动程序中的包一个传输协议驱动程序将接收到的数据传输给适当的客户端应用程序。.NDIS协议驱动程序的函数框架NDIS协议驱动框架与一般形式的WDM驱动的框架有所中国工控网:http://www.autocontro.on一元年邮局订阅号:.电话:们)维普资讯http:wwwcqvipcom网络与通信不同。它制定了一系列的标准的函数接口开发者只需要实现这些函数来完成相应的功能。这些函数主要分为类:图协议驱动程序的初始化函数DriverEntry这个函数必须被命名为DriverEmry..而其他由协议驱动程序导出的函数则可以任意命名.NDIS最终得到的只是这些函数的入口地址。另外一类函数用来支持NDIS的功能实现。如支持即插即用功能:ProtocolBindAda【Dter,ProtocolUnbindAdapter如用于在无连接的网络中接收数据包的函数ProtocolReceive,以及相应的完成例程。这些函数在系统初始化期间会调用DriverEntry完成注册。还有一类函数与上层应用程序相关。这些函数的入口地址被填写在DriverObjeet的MajorFunetion域中。每个函数都有一个相应的功能代码与上层应用程序中使用的WinAPI相对应。如功能代码IRPMJ.一CREATE对应WINAPI的CreateFileIRPhIJCLOSE对应CloseHandlIRPMJREAlD对应ReadFileIRPMJWRITE对应WriteFileIRPhIJCLEANUP对应CloseHandleIRPhIJDEVICECONTROL对应DevieeloContro..数据包的组织和管理在NDIS中数据的接收和发送都是以数据包为单位进行的。一个数据包由以下几部分组成:一个数据包描述符。其包含信息包括整个数据包所占用的物理页面的数量数据包的长度。指向第一个和最后一个缓冲区描述符的指针以及数据包池的句柄等等。一组缓冲区描述符。每个缓冲区描述符用来描述一片存储区域。其中包括起始虚拟地址.偏移量.该存储区域的大小以及指向下一个缓冲区描述符的指针等信息。由缓冲区描述符所描述的虚拟存储区域。该区域可能横跨几个页面。这些页面最终被影射到物理内存中。构造一个数据包需要申请各种资源只有成功得到了各种所需资源才能构造出一个可以用于收发数据的数据包。首先要做的接是得到一个数据包描述符而数据包描述符必须从数据包池中分配其步骤如下:)在驱动程序初始化或是每次向NIC绑定时调用NdisAllocatePacketPool请求分配一个数据包池其中包含有指定数量的数据包描述符)从Ndis,Allocatqe,Packe~ool申请得到的数据包池中请求分配一个数据包描述符。在得到了数据包描述符之后还要通过调用NdisChainBufferAtBack或者Ndis~ChainBufferAtFrom向上面链接一个或是多个缓冲区描述符。而缓冲区描述符所描述的存储区域则可由内核提供的NdisAHocatePacketPool函数得到。最后还要用缓冲区描述符对刚刚得到的存储区域加以影射。.网络上截获数据包的思想设计应当遵循这样一个流程:每当上层应用程序请求读取数据的时候.就为该请求生成一个相应的IRP,并将此IRP置于⋯个读取等待队列中。当NIC从网络上接收到数据包时由NDIS负责调用相应的接收函数。接收函数从接收等待队列的首部取出一个IRP并将从网络上接收到的数据包拷贝到由该IRP指定的缓冲区中去。基于NDIS网络监测程序的开发基于NDIS可以开发出非常高效的网络监视程序。完整的应用程序可以分为上层应用程序和核心态的驱动程序(属于NDIS中间层驱动程序)。上层应用程序负责过滤条件的设置并接受并处理从内核态传过来的数据包。核心态的驱动程序负责数据包的捕获并向上层递交数据包。下面对程序中重要模块做出分析。.过滤条件的设置网卡(NIC)能以多种过滤模式或他们的组合方式工作过滤模式由网卡驱动程序(NICD)通过一个NDIS管理信息库维护对监视系统最重要的是混杂模式和全本地模式分别用于截获全部和本机收发的数据包NICD向上支持过滤模式的设置但设置操作必须解决不同形式的请求和应答在协议栈不同层次间传递的问题根据需要应用程序还可以设置广播组播也可以监听指定的网络和特定的IP地址和端口等。上层应用程序应该根据设置的监听条件有预见性的设置缓冲区还要考虑当要截获大量数据包时.核心态的驱动程序截包的速度比上层应用程序取包的速度快时可能发生丢包情况。过滤条件的设置步骤如下:)由用户确定监听的参数应用程序根据监听的参数智能的设置缓冲区和相应的优化措旋。)调用winAPI的DeviceIoControl函数.监听参数作为入口参数传入。设置操作的子功能号和过滤模式供I/O管理器构造IRP使用.I/O管理器会调用我们完成的核心态的函数erotocolloControl来处理)ProtocolIoControl根据IRP的子功能号.构造一个设置请求填入IRP中的过滤模式和子功能号对应的对象标示(OID):使IRP进入挂起状态将IRP和设置请求加入请求队列.使用绑定句柄调用设置操作:)驱动把过滤设置传给网卡驱动(NICD).并立即返回完成异步操作当有符合条件的数据包到达时。系统会自动调用ProtocolIoControl的完成例程。)ProtocolIoControl完成例程在请求队列中取对应元素解除IRP的挂起状态.将它传回I/O管理器释放设置请求。I/O管理器向用户态程序返回执行状态和出口参数)I/O管理器把数据包复制到用户指定的缓冲区中.并把其从网卡的缓冲池中删除。应用程序根据需要可以将数据包显示后删除或是存入文件.截包请求和截包操作⋯罔维普资讯http:wwwcqvipcom《微计算机信息>(测控自动化)o年第卷第期当过滤条件设置完成后核心态的驱动程序就可以根据上层的要求来截获数据包这里讨论的截包请求是用户态程序发给核心态驱动的他代表了对一个满足过滤条件的网络包的转储要求。截包请求经过下列步骤:I)用户态程序调用WinAPI的ReadFile函数在入口参数中传入存储数据包的内存块的首地址和长度操作系统的I/O管理器将会负责构造一个IRP将上述参数填入并将这个IRP传给对应的驱动提供的处理函数ProtocolRead函数。)ProtocolRead从包缓存池分配一个空的包描述符将IRP中内存块的信息填入一个记录分页内存信息的内存描述清单(MDL)。通过系统调用使它被包描述符的内存描述域所映射:使IRP进入挂起状态将IRP和MDL的地址存入包描述符的扩展。)当满足接口设备过滤条件的网络包由NICD截获后他通知NFDIS实现:)NDIS实现为每个相关的监视实例调用一次核心驱动的的ProtocolRead完成例程.同时传递网络数据包的地址。)ProtocolRead完成例程根据实例上下文中的设置进行上层过滤或其他处理:如果得到地址为空则丢弃包并返回否则取出队头元素.通过NDIS实现将包复制到包描述符的内存描述域所影射的内存中:)NDIS实现完成复制后。调用驱动的复制完成例程传回包描述符地址。)复制完成例程释放在包描述符扩展中得到的MDL解除IRP的挂起状态并将其返回I/O管理器清空包描述符将其归还包缓存池:)I管理器向用户态应用返回执行状态和出口参数。结束语开发功能强大的NDIS驱动程序在实际应用中十分广泛。但从头开发一个监视程序又十分复杂.可以借鉴微软提供的DDK例程相应的截包驱动在其基础上开发网络监视应用程序。本文介绍了开发NDIS驱动程序的特点和要点。并分析了一个网络监测程序中的重要模块。参考文献WindowsDDKDocumentMicrosoftWalterOneyProgrmmingtheWindowsDriverModeWindows操作系统原理尤晋元史美林作者简介:孙华领男年月出生汉硕士研究生计算机应用学生研究方向:多媒体通讯电话:Emaihhualsunhotmail.eomhualsuncitiz.netAuthorSbriefintroduction:sunhualing(.)male,,Nation:HAN.masterdegreeAsastudemofComputerSc~ienceDepartmentTlel:Email:hualsunhotmail.eomhualsuneitiz.net(O上海市武东路号同济大学计算机系O畔)孙华领顾量文(DepartmentofComputerScienceandEngineeringTongjiUniversityShanghaiOOOChina)SunHualingGuJingwen(收稿日期...)(接第页)()保留表盘显示采用位数码管和表盘同步显示.显示直观、正确便于有关部门例行常规检定自动按新老标准进行抗压强度的数据处理并由微打印机打印测定结果:同时可长期保存试验数据便于查询还可通过RS接口与管理微机联机。()无须改动油路现场改造工作简便快捷一台液压试验机的改造时问不超过小时不会影响水泥日常检验工作而且随时可换上手柄改由手动操作。()改造费用低.仅为新购一台性能相当的全自动压力试验机的%左右.性能价格比高。()设有快慢升降速度自动控制功能即可减少强度试验时间又可避免对试块的冲击载荷。()设有压力机抗压夹具自动保护功能使用安全可靠。()设有工作介质油自动温度控制措施降低油粘度对控制精度的影响。主要技术指标()压力测量:测量准确度:<lJ)%(示值相对误差及重复性相对误差)显示精度:O.kN位数码和表盘同步显示。测量范围:o、、可选。I()/Jn荷速度自动控制:.±.kN/s或±.kN/s可选kN开始达到设定加荷速度检定或测定低强度试块时最低还可选用..kN/s:加荷速度显示精度.kN/s(位数码显示)。()零点相对误差:<O.%。()数据保存及查询:组(如每天组试块可保存一年的全部数据)。查询方式:可按日期或编号查询。()通讯接口:RSms(选项)。()供电:VAC~%Hz~%≤W压力机设备接地电阻~<f/。()应用环境:温度℃一℃:无强电场、磁场干扰。结束语通过智能阀门控制器改造压力机实现全自动控制经用户实际应用表明使用效果良好.本系统完全达到全自动控制功能要求.具有操作简单、仪器调试检验极为方便实现了压力机的全自动控制从而节省了抗压强度的检验时间提高了工作效率。参考文献黄一夫.微型计算机控制技术.北京:机械工业出版社王家桢.传感器与变送器.北京:清华大学出版社刘宝庭.步进电机及驱动控制系统.哈尔滨:哈尔滨工业大学出版社吴兴惠王彩君.传感器与信号处理.北京:电子工业出版社谭建成.电机控制专用集成电路.北京:机械工业出版社作者简介:王作文男..汉族山东青岛即墨人东北林业大学采运工程专业本科进修工民建。工学学士汽车系副主任副教授工程师现主要从事建筑机械、电工电子和计算机等方面的教学研究工作。发表论文余篇.书二部。电话:O、:初艳鲲大学本科讲师现主要从事计算机和建筑等方面的教学研究工作。发表论文篇书一部。苏晓华大学本科讲师工程师现主要从事计算机和建筑等方面的教学研究工作。发表论文篇书一部。孟晓平大学本科。技术开发部主任高级工程师现主要从事电子电气、电工、计算机和机械等方面的研究工作。发表论文余篇。(o山东济宁职业技术学院汽车工程系)王作文初艳鲲苏晓华(山东济宁高科股份有限公司)孟晓平(Shandong.iningVocationalTechnologyCollege)WangzuowenChu,YanktmSu.Xiaohua(ShandongJiningHighTechCo.Ltd)MengXiaoping(收稿日期:..)中国工控网:httD://www.autocontro.cn一元/年邮局订阅号:.电话:..维普资讯http:wwwcqvipcom

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/3

NDIS驱动程序研究和基于NDIS网络监测程序实现

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利