kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
180楼#
发布于:2002-10-23 11:01
本文简单地介绍了NDIS (Network Driver Interface Specification 即网络驱动接口规范),以及应用程序如何与一个驱动程序交互,如何最好地利用驱动程序。作为例子,本文提供了一个应用程序使用Packet.sys的网络协议层驱动程序的例子,读者在这个例子的基础上可以实现象Netxray等局域网数据包截获程序的功能
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
181楼#
发布于:2002-10-23 11:01
如何编写网络监视器(上)

  本文简单地介绍了NDIS (Network Driver Interface Specification 即网络驱动接口规范),以及应用程序如何与一个驱动程序交互,如何最好地利用驱动程序。作为例子,本文提供了一个应用程序使用Packet.sys的网络协议层驱动程序的例子,读者在这个例子的基础上可以实现象Netxray等局域网数据包截获程序的功能。

  Packet.sys是DDK中的一个非常有用的驱动程序,通过它你能够接收以太网中所有经过你的电脑的数据包,并且可以脱离系统的TCP/IP协议栈独立发送数据包,即通过Packet.sys建立的与TCP/IP同层次的协议发送数据包
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
182楼#
发布于:2002-10-23 11:02
基础知识介绍

1. 驱动程序 Driver
设备驱动程序是拥有与Windows内核相同的最高特权的程序,它是在操作系统与输入/输出设备之间的一层必不可少的\"胶水\"。它的作用相当于转换器,将从操作系统发来的原始的请求转换成某种外围设备能够理解的命令。
系统程序员的主要工作就是编写驱动程序,与系统的底层打交道。许多在应用程序中称为\"mission impossible\"即不可能完成的任务在使用了驱动程序后就可以轻易解决。编写驱动程序最主要的目的当然是为了驱动真正的硬件,使系统能够顺利地控制各种不同型号的外围设备或内部硬件,称为硬件驱动程序,象显卡驱动程序、网卡驱动程序、PCI总线驱动程序等等;还有的驱动程序是为了实现一些应用程序不能够完成的功能的,有的虽然在逻辑上实现了一个硬件的功能,但是物理上并不存在这个硬件,象虚拟光驱,这一大类则称为软件驱动程序,象TCP/IP驱动程序、防火墙的驱动程序、虚拟光驱的驱动程序等等。
在Windows 9x/Me中支持Vxd驱动程序和WDM(Windows Driver Model)驱动程序,Windows NT中支持Kernel Driver即内核式驱动程序,Windows 2000及以后版本的Windows使用WDM驱动程序。Windows NT的内核式驱动程序与WDM驱动程序很相似,只是少了部分功能,而Vxd式驱动程序行将淘汰,所以我们这里用的是WDM驱动程序。
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
183楼#
发布于:2002-10-23 11:02
2. 网络接口卡 Network Interface Card (NIC)
网络接口卡俗称网卡,它是一种硬件设备,作用是在电脑的内部总线和网络的传输介质中充当大门的作用,通过它,我们可以向网络上发送和接收数据包。一般网卡的名称随着它所在网络的类型不同而不同,象处于以太网中的网卡叫做以太网卡,处于令牌网中的网卡叫做令牌网卡。我们这篇文章中讲的是在以太网中的应用。

天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
184楼#
发布于:2002-10-23 11:02
正文:    
 

如何编写网络监视器(上)

  本文简单地介绍了NDIS (Network Driver Interface Specification 即网络驱动接口规范),以及应用程序如何与一个驱动程序交互,如何最好地利用驱动程序。作为例子,本文提供了一个应用程序使用Packet.sys的网络协议层驱动程序的例子,读者在这个例子的基础上可以实现象Netxray等局域网数据包截获程序的功能。

  Packet.sys是DDK中的一个非常有用的驱动程序,通过它你能够接收以太网中所有经过你的电脑的数据包,并且可以脱离系统的TCP/IP协议栈独立发送数据包,即通过Packet.sys建立的与TCP/IP同层次的协议发送数据包。

基础知识介绍

1. 驱动程序 Driver
设备驱动程序是拥有与Windows内核相同的最高特权的程序,它是在操作系统与输入/输出设备之间的一层必不可少的\"胶水\"。它的作用相当于转换器,将从操作系统发来的原始的请求转换成某种外围设备能够理解的命令。
系统程序员的主要工作就是编写驱动程序,与系统的底层打交道。许多在应用程序中称为\"mission impossible\"即不可能完成的任务在使用了驱动程序后就可以轻易解决。编写驱动程序最主要的目的当然是为了驱动真正的硬件,使系统能够顺利地控制各种不同型号的外围设备或内部硬件,称为硬件驱动程序,象显卡驱动程序、网卡驱动程序、PCI总线驱动程序等等;还有的驱动程序是为了实现一些应用程序不能够完成的功能的,有的虽然在逻辑上实现了一个硬件的功能,但是物理上并不存在这个硬件,象虚拟光驱,这一大类则称为软件驱动程序,象TCP/IP驱动程序、防火墙的驱动程序、虚拟光驱的驱动程序等等。
在Windows 9x/Me中支持Vxd驱动程序和WDM(Windows Driver Model)驱动程序,Windows NT中支持Kernel Driver即内核式驱动程序,Windows 2000及以后版本的Windows使用WDM驱动程序。Windows NT的内核式驱动程序与WDM驱动程序很相似,只是少了部分功能,而Vxd式驱动程序行将淘汰,所以我们这里用的是WDM驱动程序。

2. 网络接口卡 Network Interface Card (NIC)
网络接口卡俗称网卡,它是一种硬件设备,作用是在电脑的内部总线和网络的传输介质中充当大门的作用,通过它,我们可以向网络上发送和接收数据包。一般网卡的名称随着它所在网络的类型不同而不同,象处于以太网中的网卡叫做以太网卡,处于令牌网中的网卡叫做令牌网卡。我们这篇文章中讲的是在以太网中的应用。

3. 网络驱动接口规范 Network Driver Interface Specification(NDIS)
  随着计算机网络蓬勃发展,网络相关的驱动程序成为驱动中的热点。为了提高编写网络驱动程序的效率,也为了使各种协议驱动在各种网卡之间独立,Microsoft创建了一个网络驱动程序界面规范,即Network Device Interface Specification (NDIS),这个规范是为原本复杂的网络驱动程序编写框架提供一个并不严格的封装,在这个规范下,编写网络驱动程序中原来应该使用系统有关函数都变换为通过NDIS.sys这个接口,而内部实现的细节由NDIS.sys实现,这样,不仅提高了编写效率,程序员不易出错,而且也增强了驱动程序的强壮性、可维护性,设备独立性等性能。
  目前最新的NDIS是5.1版本,Windows 2K及以后版本的NDIS是5.0,我的例子中使用的是Windows 2K DDK。
NDIS程序库(NDIS.sys)提供了一个面向NIC驱动程序的完全抽象的接口,如下图所示,网卡驱动程序与协议层驱动程序及操作系统通过这个接口进行通信。我们可以把这个接口看做Microsoft为网络驱动设计者提供了一个设计网络驱动程序所必须的抽象的伪\"类\"。(我个人认为,Microsoft引入NDIS是一个在C++的面向对象和C的高编译效率之间的一个折衷,就象MFC封装了WinAPI一样,以后Microsoft迟早会推出真正面向对象标准的DDK,就像现在DriverStudio等某些驱动编写工具所做的那样)NDIS库输出了所有的能够在NIC驱动开发中使用的NT内核模式函数。NDIS库还参与管理操作系统中的与网络有关的特定任务,管理所有底层的NIC驱动的绑定与状态信息。


NDIS驱动程序有三种类型,分别是网络接口卡驱动程序、中间层驱动程序、高层协议驱动程序。

A. 网络接口卡驱动程序 Miniport Network Interface Card drivers

网络接口卡驱动程序管理网络接口卡,NIC驱动程序在它的下端直接控制网络接口卡硬件,在它的上端提供一个较高层的驱动能够使用的接口,这个接口一般完成以下的一些任务:初始化网卡,停止网卡,发送和接收数据包,设置网卡的操作参数等等。
NIC驱动程序分为以下两种:

l 无连接的微端口驱动程序 (Connectionless Miniport Drivers)
无连接的微端口驱动程序是控制无连接的网络介质上的网卡的驱动程序,象以太网(Ethernet)、光纤分布式数据接口(FDDI)、令牌网(Token Ring)。

l 面向连接的微端口驱动程序 (Connection-oriented Miniport Drivers)
面向连接的微端口驱动程序是控制面向连接的网络介质上的网卡的驱动程序,象异步传输模式(ATM)。

B. 中间层驱动程序 Intermediate Protocol Driver

中间层驱动程序在协议驱动程序和微端口驱动程序之间。在高层的传输层驱动程序看来,中间层驱动程序象一个微端口驱动程序,而在底层的微端口驱动程序看来,它象一个协议驱动程序。使用中间层驱动程序的最主要的原因可能是在一个已经存在的传输层驱动程序和一个使用新的,传输层驱动程序并不认识的媒体格式的微端口驱动程序中相互转换格式,即充当翻译的角色。

C. 高层的协议驱动程序 Upper Level Protocol Driver

  象各种TCP/IP协议,一个协议驱动程序完成TDI接口或者其他的应用程序可以识别的接口来为它的用户提供服务。这些驱动程序分配数据包,将用户发来的数据拷贝到数据包中,然后通过NDIS将数据包发送到低层的驱动程序,这个低层的驱动程序可能是中间层驱动程序,也可能是微端口驱动程序。当然,它在自己的下端也提供一个协议层接口,用来与低层驱动程序交互,其中最主要的功能就是接收由低层传来的数据包,这些通讯基本上都是由NDIS完成的
 
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
DLM
DLM
游客
游客
185楼#
发布于:2002-10-23 11:02
懒猫也要!!! :D :D :D
kaput
驱动中牛
驱动中牛
  • 注册日期2002-06-26
  • 最后登录2004-08-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
186楼#
发布于:2002-10-23 11:03
打住~~~~~~~~`
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉......
dzjhnld
驱动老牛
驱动老牛
  • 注册日期2002-09-30
  • 最后登录2002-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
187楼#
发布于:2002-10-23 11:03
别来了老兄――他不会放的 :( :( :P
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉 罪过罪过!!
逸飞
驱动老牛
驱动老牛
  • 注册日期2001-10-01
  • 最后登录2005-10-01
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
188楼#
发布于:2002-10-23 11:29
别来了老兄――他不会放的 :( :( :P

造谣,想骗大家不要灌,自己独吞? :mad: :mad: :mad:
忽然间,与你偶遇,慌乱的我不知所措,你含情脉脉的双眼使我无法回避,我明白你的心,我拼命跑开,你却紧紧相随。我哭喊着:“救命呀!谁家的狗没人管?”
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
189楼#
发布于:2002-10-23 11:51
我也来了!快点放了吧!


too
[color=red]大头鬼! :P[/color]
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
190楼#
发布于:2002-10-23 11:54
管它?
打一枪……换个地方……再打一枪……
dzjhnld
驱动老牛
驱动老牛
  • 注册日期2002-09-30
  • 最后登录2002-11-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
191楼#
发布于:2002-10-23 11:56
管它?
天下风云出我辈 一入江湖岁月催 鸿图霸业谈笑中 不胜人生一场醉 罪过罪过!!
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
192楼#
发布于:2002-10-23 11:57
机会
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
193楼#
发布于:2002-10-23 11:58
桶大量足
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
194楼#
发布于:2002-10-23 12:01
均贫富
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
195楼#
发布于:2002-10-23 12:03
今天到这把
打一枪……换个地方……再打一枪……
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
196楼#
发布于:2002-10-23 17:14
asdfasdfasdfa
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
197楼#
发布于:2002-10-23 17:14
afdasdfadsfadf
DLM
DLM
游客
游客
198楼#
发布于:2002-10-23 17:14
来楼,来楼!!! :D
Dragon2008
驱动中牛
驱动中牛
  • 注册日期2002-04-01
  • 最后登录2006-03-13
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
199楼#
发布于:2002-10-23 17:16
是金子总会发光的。
接分了! :o
我姓龙,我属龙,我叫龙。。。
游客

返回顶部