接口驱动程序是一个小型计算机程序或一组程序,在计算机软件和网卡(NIC)的硬件之间起着联络作用。网卡制造商和程序员使用一种称为网络驱动程序接口规范(NDIS)的特定应用程序编程接口(API),它规定了计算机程序(如操作系统)进行交...
接口驱动程序是一个小型计算机程序或一组程序,在计算机软件和网卡(NIC)的硬件之间起着联络作用。网卡制造商和程序员使用一种称为网络驱动程序接口规范(NDIS)的特定应用程序编程接口(API),它规定了计算机程序(如操作系统)进行交互所需的所有规则在NDIS下,实际上有几种类型的接口驱动程序被描述,但本质上,NDIS的主要任务是让两个开放系统互连(OSI)模型层相互协作。
网络驱动程序是控制用于将计算机连接到网络的设备的软件程序。
模型由七层组成,其中有些有多个子层,第一层是物理层,它处理网卡的物理规格,如通用串行总线(USB)加密狗、以太网卡、无线适配器卡,等等。OSI模型的第二层和第三层是所有NDIS魔法发生的地方。第二层是数据链路层,由两个子层组成,上层称为逻辑链路控制(LLC),下层称为媒体访问控制(MAC)。设备驱动程序处理MAC子层,而接口驱动程序处理MAC子层处理LLC子层,在它和OSI模型的第三层之间提供接口,网络层。中间驱动程序可用于网络上的数据过滤和负载平衡
NDIS作为一个中介,基本上解决了NIC硬件的所有令人困惑的复杂性,并为其与通信所需的网络协议提供了一组功能。程序员只需遵循NDIS中规定的规则即可创建实际的接口驱动程序在较低的硬件级别,这些驱动程序称为微型端口驱动程序,而上层驱动程序是使用NDIS API编写的,用于处理核心网络协议,如Internet协议(IP)、Internet协议安全性(IPsec)、Internet控制消息协议(ICMP)和网络间数据包交换(IPX),
当通过网卡进行网络通信时,数据位首先由物理设备接收,然后通过OSI模型的体系结构,数据从硬件向上移动到OSI模型的不同层,直到它们以用户更容易理解的格式呈现。因此,模型的每一层都为其邻居提供服务,数据离开第一层即物理层,到达第二层下层的MAC层,设备驱动程序将其传递给LLC。然后LLC协议驱动程序将其向上移动到网络层。
另一种类型的接口驱动程序是中间驱动程序,它起到了外壳的作用,包含微型端口驱动程序和网络协议驱动程序的接口。这些中间驱动程序可以链接在一起,并为接口驱动程序提供控制NIC接收的通信量的能力。中间驱动程序可用于各种需要,如数据过滤、负载平衡,监控网络流量,收集统计信息。它们还可以很好地在较老的传输驱动程序和微型端口驱动程序之间进行转换,后者与较老的驱动程序无法理解的媒体格式进行对话
NDIS最初是由Microsoft®与3Com®合作设计的,因此许多硬件制造商首先编写了支持Microsoft®操作系统的驱动程序。因此,NDIS仅限于基于Intel®80386系列(32位或64位处理器)的计算机硬件体系结构。自由软件运动还开发了一个名为NDISWrapper的程序,该程序能够加载最初为Microsoft®Windows®开发的接口驱动程序,以便与,类似Unix®的操作系统,如Linux®。Berkley Software Distributions(BSD)的免费衍生产品(如FreeBSD®和NetBSD®)的用户也发现了通过使用名为project Viil的项目开发的软件来使用Windows®接口驱动程序的能力。NDIS的x86硬件限制导致了另一个项目,由Apple和Novell®开发,称为开放式数据链路接口(ODI),它提供了与NDIS相同的规则和功能,但主要集中在Apple®Macintosh和Novell NetWare®系统上。