网络驱动程序接口规范

目录

简介

网络驱动程序接口规范(NDIS)是一个用于网络接口控制器(NIC)的应用程序编程接口(API)。

规范

它由微软和3Com公司联合开发,主要用于微软的Windows系统。然而,开源的NDISwrapper和Project Evil驱动包装项目允许许多符合NDIS的网卡在Linux、FreeBSD和NetBSD中使用。

NDIS形成了逻辑链路控制(LLC)子层,它是OSI数据链路层(第二层)的上层子层。因此,NDIS作为媒体访问控制(MAC)子层(数据链路层的下层子层)和网络层(第三层)之间的接口。

一个迷你端口可以与一个或多个协议相关联。这意味着进入迷你端口的流量可能会被几个协议驱动程序并行接收。例如,Winpcap在选定的miniport上添加了第二个协议驱动程序,以便捕获进入的数据包。此外,还可以通过实现虚拟miniport驱动程序来模拟几个虚拟网卡,从一个物理网卡发送和接收流量。

虚拟miniport驱动使用的一个例子是添加虚拟网卡,每个网卡都有不同的VLAN。因为实现不能假设其他驱动收到了相同的缓冲区,所以必须把传入的缓冲区视为只读,改变数据包内容的驱动必须分配自己的缓冲区。NDIS Miniport驱动也可以使用Windows驱动模型接口来控制网络硬件

网络驱动程序接口规范

另一种驱动类型是NDIS中间驱动。中间驱动程序位于MAC和IP层之间,可以控制网卡接受的所有流量。在实践中,中间驱动同时实现了迷你端口和协议接口。

迷你端口驱动和协议驱动实际上与驻扎在中间驱动中的相应迷你端口和协议接口进行通信。

这种设计可以在迷你端口和协议驱动之间添加几个连锁的中间驱动。因此,驱动厂商不能假设他们发送流量的接口是由链上的最后一个驱动实现的。

为了编写使用NDIS的应用程序,人们可以使用Microsoft’s Windows Driver Kit (WDK)附带的样本。

PassThru样本是中间驱动的一个很好的起点,因为它实现了这种驱动类型所需的所有必要细节,但只是将流量传递给链上的下一个驱动。

0

点评

点赞

相关文章