第4章 基于NDIS的网络编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:83 大小:411KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第4章 基于NDIS的网络编程.ppt

第4章基于NDIS的网络编程.ppt

预览

免费试读已结束,剩余 73 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章基于NDIS的网络编程内容一、WindowsNT网络体系结构图1Windows网络结构体系与协议模型的对照二、NDIS的基本概念NDIS是一个较为成熟的网络驱动接口标准,包含:局域网网卡驱动程序标准广域网络驱动程序标准中间驱动程序标准NDIS定义了操作系统网络传输模块的一个抽象环境,在这个环境中,各层驱动程序实体之间没有直接的通信机制。NDIS负责上下层驱动程序之间服务原语和实际驱动程序相应调用入口之间的转换,分派消息通知。NDIS驱动程序一般在主入口函数DriverEntry中根据驱动程序类型使用不同注册函数注册自己的输出函数集的入口。WindowsNT网络组件的体系结构WindowsNT支持三种网络驱动程序:网卡驱动程序(与硬件打交道)中间协议驱动程序(在不同协议之间进行转换)传输驱动程序(执行具体的通信协议,如TCP/IP,IPX/SPX等)NDIS驱动程序的分类1、网卡驱动程序网卡驱动程序(NICDriver,又称MACDriver)通过NDIS提供的调用来访问和管理网卡,负责接收来自网卡的数据包并传递给上层驱动程序,把上层要发送的数据包发给网卡。发送:NIC驱动程序通过NDIS从上层驱动程序接收数据包,根据实际网卡的不同特点和要求,将数据送入网卡的发送缓冲区。接收:将网卡接收缓冲区中接收到的数据,通过NDIS传送到相应的协议驱动程序。NDIS根据从NDIS接口库得到的帮助的多少,NIC驱动程序可分类为小端口驱动程序或全网卡驱动程序。早期的网卡驱动程序需要自己管理有关硬件细节、同步、排队等方面的事情,称为全网卡驱动程序。而小端口驱动程序,这些事情都由NDIS来做。小端口驱动程序包括两种类型:局域网小端口驱动程序广域网小端口驱动程序2、协议驱动程序协议驱动程序执行具体的网络协议,为上层客户程序提供服务,接收来自网卡或中间驱动程序的信息。NDIS要求协议驱动程序实现一组向下层驱动提供的下边界函数集和一组向上层驱动提供的上边界函数集(传输驱动程序接口TDI)。传输驱动程序接口所有的WindowsNT传输驱动程序都通过传输驱动程序接口(TDI)为内核模式网络客户程序提供服务。TDI规范定义支持基于连接的和非连接的协议的低级接口,为所有传输驱动程序提供一个共同的接口,简化了传输驱动程序和它们支持的客户程序的实现。它负责接受上层数据,打包,再调用NDIS库函数将数据发送至下层驱动程序。3、中间层驱动程序中间层驱动程序位于网卡驱动程序和协议驱动程序之间。NDIS中间驱动程序主要用于进行协议转换。中间层驱动程序向上提供小端口(Miniport)函数集,向下提供协议(Protocol)函数集。一个中间层驱动程序可叠加在另一中间层驱动程序上。传输驱动程序(比如:TCP)传输驱动程序三、小端口网卡驱动程序NDIS库对小端口的支持。过滤数据包同步和多处理器支持支持多包发送和接收支持全双工操作小端口必须支持NDIS定义的媒质类型。而且要满足以下需要:简便性多处理器支持功能需求a.当一个传输驱动程序需传输一个数据包时,它调用一个由NDIS库导出的NdisXxx函数。然后NDIS通过调用适当的NdisXxx函数将这个数据包传至小端口。接着小端口通过调用适当的NdisXxx函数将数据包传至NIC来传输。b.当一个NIC接到一个数据包时,它可以发布一个硬件中断让由NDIS或NIC的小端口来进行处理。NDIS通过调用适当的MiniportXxx函数来通知NIC的小端口。小端口对来自NIC的数据建立传输,然后通过调用适当的NdisXxx函数标识接收到的数据来绑定到高层驱动程序上。小端口驱动程序的结构一个小端口驱动程序包括驱动程序对象、驱动程序代码和NDIS库代码。WindowsNTDDK提供ndis.h作为小端口的主头文件。这个头文件定义了小端口的入口、NDIS库函数和公有数据结构。小端口网卡驱动程序的函数主要的小端口函数调用:入口函数初始化状态信息处理数据操作中断处理特殊情况NDIS小端口驱动程序设计NDIS小端口驱动程序设计的方法和步骤。初始化NDIS库以及注册驱动程序注册网卡发送数据接收数据中断处理传输终结处理四、NDIS中间驱动程序传输驱动程序对下端,一个中间驱动程序导出协议实体指针(ProtocolXxx函数),让NDIS调用来完成与底层小端口的通讯请求。对于一个下层小端口驱动程序来说,一个中间驱动程序就像一个协议驱动程序一样。对上端,一个中间驱动程序导出小端口实体指针(MiniportXxx函数),让NDIS调用来和一个或多个上面的协议驱动程序进行通讯。对于一个上面的协议驱动程序,一个中间驱动程序就像一个小端口驱动程序。NDIS中间驱动程序的工