Windows内核原理与实现之 NDIS(网络驱动程序接口规范)

本文介绍了Windows内核中NDIS(网络驱动程序接口规范)的工作原理,包括NDIS驱动程序如何与网络适配器交互,NDIS库的作用,以及NDIS中间驱动程序的用途。NDIS驱动程序不直接处理IRP,而是通过调用NDIS库函数与上层协议驱动程序通信。此外,还探讨了NDIS驱动程序的开发要点和NDIS 6相对于NDIS 5的主要改进,如性能提升和开发模型的简化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章摘录自《Windows内核原理与实现》一书。

在Windows的网络栈中,网络协议与网络适配器是分离的,协议驱动程序并不针对特定的网络适配器而设计,然而,当协议驱动程序正真运行时,它必须通过一个网络适配器才能发送和接收数据。协议驱动程序通过统一的接口与网络适配器驱动程序进行通信,此接口即为 Microsoft 和 3COM 于 1989 年联手开发的NDIS(Network Driver Interface Specification,网络驱动程序接口规范)。符号NDIS 的网络适配器驱动称为 NDIS 驱动程序, 或NDIS 小端口驱动程序(NDIS miniport driver)。Windows提供了NDIS 库,即 ndis.sys,作为协议驱动程序与 NDIS 驱动程序之间的桥梁。随 Windows XP 和 Windows Server 2003 一起发行的 NDIS 库是 NDIS 5.1。

NDIS 客户,即 TDI传输器,利用NDIS库提供的功能,对将要发送给NDIS 驱动程序的命令进行格式化,并发送给 NDIS 驱动程序;而 NDIS 驱动程序则利用 NDIS 库,接收请求和送回应答。图 9.4显示了 Windows 实现的NDIS结构。

NDIS 库为 NDIS 驱动程序提供了一个完全的开发环

  对于在“蓝网之家”影响下蠢蠢而动搞 Windows 95 远程启动的朋友可能不少,那么大家一定对 NDIS 这几个字母不会感到陌生。其实不只是在远程启动这一层,只要是网卡的驱动盘,大家都会在里面发现有类似 NDISNDIS2、NDIS3、NDIS4一样的目录,只是大家在 Windows 9x 或 NT 中安装、设置网卡时没有注意到它罢了。但即使大搞特搞 RPL 的朋友对其大概也是只知其然而不其所以然。    NDIS 是什么?有什么作用?       NDIS 的全称是 Network Device Interface Specification,中文意思就是网络设备接口规范。    根据 OSI 七层模型,物理层定义了对网卡、线缆以及其它物理硬件设备进行配置的标准。节点间建立通信时是由物理层在传输介质上传送二进制信息实现的,因此,在发送端和接收端都还必须有一个程序来格式化这种信息流并将其传送给上一层。NDIS 的作用就是避免在访问网卡每次进行传输时都编写相应的代码。由此说来,NDIS 本质上是一种软件接口,有了 NDIS ,所有的传输就可以采用一种通用的方式来访问由不同厂商制造的网卡了,即它是用来连接协议堆栈和网卡的。   此相关的软件还有重定向器(Redirector)和服务器(Server)。前者的目的是截获来自 OSI 会话层的网络调用,并通过将其传送到相应的协议驱动程序接口而格式化成 NDIS 能够识别和使用的命令。后者则负责接收从重向器传过来的来自于远程计算机的请求,再将这一请求传送给相应的本地文件系统驱动程序,最后再由该“服务器”将数据沿协议堆栈向下传递给客户机。    TCP协议也是通过调用 NDIS 接口服务来完成传输操作的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡而伟大.

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值