什么是接口驱动程序?(an interface driver?)

接口驱动程序是一个小型计算机程序或一组程序,充当计算机软件和网络接口卡(NIC)硬件之间的连接。NIC制造商和程序员使用特定的应用程序编程接口(API),称为网络驱动程序接口规范(NDIS)。它规定了计算机程序(如操作系统)与NIC交互所需的所有规则。NDIS下实际上描述了几种类型的接口驱动程序,但本质上,NDIS的主要工作是使开放系统互连(OSI)模型的两个层相互协作。...

接口驱动程序是一个小型计算机程序或一组程序,充当计算机软件和网络接口卡(NIC)硬件之间的连接。NIC制造商和程序员使用特定的应用程序编程接口(API),称为网络驱动程序接口规范(NDIS)。它规定了计算机程序(如操作系统)与NIC交互所需的所有规则。NDIS下实际上描述了几种类型的接口驱动程序,但本质上,NDIS的主要工作是使开放系统互连(OSI)模型的两个层相互协作。

Intermediate drivers may be used for data filtering and load balancing on a network.

OSI模型由七层组成,其中一些有多个子层。第一层是物理层,它处理NIC的物理规范,如通用串行总线(USB)加密狗、以太网卡、无线适配器卡等。OSI模型的第二层和第三层是所有NDIS魔法发生的地方。第二层是数据链路层,由两个子层组成,上层称为逻辑链路控制(LLC),下层称为媒体访问控制(MAC)。设备驱动程序处理MAC子层,而接口驱动程序处理LLC子层,在它和OSI模型的第三层网络层之间提供接口。

Network drivers are software programs that control a device used to connect a computer to a network.

NDIS作为一个中介,基本上解决了NIC硬件的所有复杂问题,并为其与通信所需的网络协议的交互提供了一组功能。程序员只需遵循NDIS中规定的规则即可创建实际的接口驱动程序。在较低的硬件级别,这些驱动程序称为微型端口驱动程序,而较高级别的驱动程序是使用NDIS API编写的,用于处理核心网络协议,如互联网协议(IP)、互联网协议安全性(IPsec)、互联网控制消息协议(ICMP)和互联网数据包交换(IPX)等。

当通过NIC进行网络通信时,数据位首先由物理设备接收,然后通过OSI模型的体系结构,数据从硬件向上移动到OSI模型的不同层,直到以用户更容易理解的格式呈现。因此,模型的每一层都为其邻居提供服务。数据离开第一层,即物理层,并到达第二层较低子层的MAC,设备驱动程序将其传递给LLC。LLC的协议驱动程序然后将其移动到网络层。

另一种类型的接口驱动程序是中间驱动程序,它起着外壳的作用,包含微型端口驱动程序和网络协议驱动程序的接口。然后,这些中间驱动程序可以链接在一起,并为接口驱动程序提供控制NIC接收的流量的能力。中间驱动程序适用于各种需求,如数据过滤、负载平衡、监控网络流量和收集统计信息。它们还可以作为较老的运输驱动程序和微型端口驱动程序之间的翻译器,与较老的驱动程序无法理解的媒体格式进行对话。

NDIS最初是由Microsoft®与3Com®合作设计的,因此许多硬件制造商首先编写驱动程序来支持Microsoft®操作系统。因此,NDIS仅限于基于Intel®80386系列32位或64位处理器的计算机硬件体系结构。自由软件运动还开发了一个名为NDISWrapper的程序,该程序能够加载最初为Microsoft®Windows®开发的接口驱动程序,以便与Linux®等类似Unix®的免费操作系统一起使用。伯克利软件发行版(BSD)免费衍生产品(如FreeBSD®和NetBSD®)的用户还发现,通过使用由名为project Evil的项目开发的软件,可以使用Windows®界面驱动程序。NDIS的x86硬件限制导致了另一个项目,该项目由Apple和Novell®开发,称为开放数据链路接口(ODI),它提供了与NDIS相同的规则和功能,但重点是Apple®Macintosh&;和Novell NetWare®系统。

  • 发表于 2021-12-11 14:34
  • 阅读 ( 66 )
  • 分类:互联网

你可能感兴趣的文章

包裹(package)和java接口(interface in java)的区别

Java中的Package和Interface的主要区别在于,Package有助于对类进行有条理的分类以方便访问和维护,而Interface则有助于实现多个继承和实现抽象。 Java是最流行的编程语言之一。Java的主要优点是它支持面向对象编程。这种方法允...

  • 发布于 2020-10-18 11:01
  • 阅读 ( 570 )

班(class)和接口(interface)的区别

班(class)和接口(interface)的区别 面向对象编程(OOP)是软件开发中的一种常见范式。它有助于使用类和对象为编程带来真实的场景。类是创建对象的蓝图。程序员可以用属性和方法创建一个类。学生和老师是客体。创建对象称...

  • 发布于 2020-10-24 04:25
  • 阅读 ( 258 )

继承(inheritance)和java接口(interface in java)的区别

继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 492 )

什么是笔记本电脑的“显示音频”驱动程序?

当您安装驱动程序时,您可能会看到一些对项目的引用,这些引用让您想知道它们到底是什么以及它们可能有什么用途。有鉴于此,今天的超级用户问答帖子有助于澄清好奇读者的困惑。 今天的问答环节是由SuperUser提供的,Supe...

  • 发布于 2021-04-10 22:42
  • 阅读 ( 135 )

破解一个旧键盘来创建自定义控制接口

Whether you’re looking for an interface for your new DIY arcade cabinet or want to build a custom keypad for an application, this detailed tutorial will show you how to frankenmod an old keyboard into a new interface. 鲁伯特,在失控的Brainz,想避免为一个MAME机柜定制控制接口...

  • 发布于 2021-04-12 16:02
  • 阅读 ( 88 )

抽象类(abstract class)和c中的接口#(interface in c#)的区别

...。它们看起来很像接口,但增加了功能。 什么是接口(an interface)? 另一方面,接口不是只包含功能签名的类。这是一个没有实现的模式。从概念上讲,它只是包含成员声明的方法定义。它是一个空shell,不包含其成员的实现。...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 355 )

抽象类(abstract class)和java接口(interface in java)的区别

...供100%的抽象,因为它可以有具体的方法。 什么是接口(an interface)? 接口虽然看起来像一个类,但实际上不是。因为Java不支持多继承,所以接口有时非常适合为类层次结构提供基础。接口更像是类的蓝图,在Java中也用于实现抽...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 302 )

抽象类(abstract class)和java接口(interface in java)的区别

...ngle draw()中的方法并打印“Rectangle”。 什么是java接口(interface in java)? Java中的接口类似于类。接口中的所有方法都是抽象方法。与抽象类类似,接口不能实例化。接口既可以用于抽象,也可以用于实现多重继承。通过使用inte...

  • 发布于 2021-07-01 01:29
  • 阅读 ( 277 )

包裹(package)和接口(interface)的区别

...st”,则import语句如下所示。 导入测试。*; 什么是接口(interface)? 接口是实现抽象和多重继承的机制。接口中的方法是抽象方法。这些方法没有任何实现。它也可以有变量或字段。它们可以是公共的、静态的或最终的。此外,...

  • 发布于 2021-07-01 09:47
  • 阅读 ( 351 )

封装(encapsulation)和c语言中的抽象#(abstraction in c#)的区别

...对象。这种画法叫做三角形画法。 Figure 3: C# program with an Interface 在上面的程序中,Shape是一个接口。它有一个名为draw的抽象方法。三角形类扩展形状。它提供了draw方法的定义。在main方法中,s是Shape类型的对象。这种画法叫做三...

  • 发布于 2021-07-01 14:04
  • 阅读 ( 373 )
高河清丶
高河清丶

0 篇文章

相关推荐