读书频道 > 网站 > 网页设计 > 网络分析技术揭秘:原理、实践与WinPcap深入解析
3.2.1 三种类型的网络驱动程序
12-08-11    叶孤城
收藏    我要投稿   
本书结合著名的开源软件库WinPcap来说明网络分析技术的实现原理及使用方法。其中包括WinPcap内核驱动,编译与使用,数据包的捕获、发送、内核过滤与接收,以及网络流量的统计与网络状态的分析等重要内容,而且作...立即去当当网订购
3.2  NDIS协议驱动程序
网络驱动程序接口规范(NDIS)标准定义了网络适配器(也可以说是管理网络适配器的驱动程序)与协议驱动程序之间的通信。NDIS的主要目的是扮演一个包装层的角色,允许协议驱动程序不依赖特定的适配器或特定操作系统来发送和接收网络上的数据包。
3.2.1  三种类型的网络驱动程序
NDIS支持三种类型的网络驱动程序:网络接口卡驱动程序、中间层驱动程序、协议驱动程序(或传输层驱动程序)。
1. 网络接口卡驱动程序
网络接口卡的驱动程序直接管理NIC。NIC驱动程序在其下面直接与物理硬件打交道,在其上面提供一个接口,允许高层(驱动)在网络上发送数据包、处理中断、复位NIC、停止NIC,以及请求与设置驱动程序的操作特性。NIC驱动程序的层次关系如图3-2所示。


NIC驱动程序既可为微端口(miniports)驱动程序,也可为遗留的全NIC驱动程序。
微端口驱动程序:微端口驱动程序仅以实现特定的硬件操作来管理NIC,包括发送与接收NIC上的数据。微端口对所有底层NIC驱动程序通用的操作(诸如同步管理)都是由NDIS库提供的。微端口不直接调用操作系统的例程,它们与操作系统的接口是NDIS库。微端口不保持绑定的跟踪,它仅把数据包向上传递给NDIS库,并由NDIS库确定这些数据包是否传递给了合适的协议。
全NIC驱动程序:全NIC驱动程序被编制为既执行特定硬件的操作,又执行所有同步与排队等通常由NDIS库完成的操作。例如,在全NIC驱动程序中,需要维护它们自己的绑定信息以标识所接收的数据。
2. 中间层驱动程序
中间层驱动程序是上层驱动程序(诸如协议驱动程序)与微端口驱动程序之间的一个接口。对上层驱动程序而言,中间层驱动程序看起来像一个微端口驱动程序。对一个微端口驱动程序而言,中间层驱动程序看起来像一个协议驱动程序。一个中间层驱动程序可以位于另一个中间层驱动程序的顶部,尽管这样的分层对系统性能有负面影响。开发中间层驱动程序的典型原因是在一个已有的遗留协议驱动程序与一个微端口驱动程序之间执行介质转换任务,而该微端口驱动程序是把NIC作为一种对协议驱动程序而言是未知的新介质类型来管理的。例如,一个中间层驱动程序能够从LAN协议转换到ATM协议;一个中间层驱动程序不能与用户层的应用程序通信,只能与其他NDIS驱动程序通信。
3. 协议驱动程序
协议驱动程序用于实现一个网络协议栈,如IPX/SPX 或TCP/IP等,它在一个或多个网络接口卡上提供服务。一个协议驱动程序为其上面的应用程序层的客户提供服务,同时与一个或多个NIC驱动程序或其下面的中间层NDIS驱动程序连接。
协议驱动程序和底层NDIS驱动程序的通信(如发送和接收数据包),总是使用NDIS库提供的函数来进行的。例如,下边界是面向无连接的协议驱动程序(比如,与面向无连接介质的底层驱动程序进行通信,典型例子有以太网、令牌环网等)必须调用NdisSend或者NdisSendPackets函数向底层NDIS驱动程序发送数据包,也必须调用NdisRequest来进行查询,以及使用网络相关的底层面向无连接的驱动程序所支持的OID_XXX函数来设置信息请求。
NDIS库提供了一组隐藏底层操作系统细节的NdisXXX函数。例如,协议驱动程序调用NdisInitializeEvent为同步目的创建事件,调用NdisInitializeListHead创建链表。使用这些函数的NDIS协议驱动程序在微软操作系统之间的可移植性会更好。协议驱动程序也可调用OS专用的内核模式函数,例如可用KeInitializeEvent创建事件、用KeWaitForSingleObject同步两个执行线程
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站