请参见第三部分第1章 面向连接的下层 如果你要编写一个中间层驱动程序,并在它的下层为面向连接微端口提供一个接口,请 参见第三部分第1章和第四部分第4章。 协议驱动程序 选择你将编写的协议驱动程序类型: 面向一个无连接的下层 如果你要编写的协议驱动程序为下层的无连接微端口提供接口,请参见第三部分第2 章。 面向TDI的上一层 如果你要编写一个拥有一个TD的上层的协议,请参见第三部分的第2,3,4和第5 章 支持 Winsock 如果你要编写一个提供 Winsock支持的协议,请参见第三部分的2,3,4,5,6章 面向连接客户或呼叫管理器 如果你要编写一个面向连接的客户方,它对面向连接的微端口提供了接口,或者你要编 写一个面向连接的呼叫管理器,请参见第三部分的第2章和第四部分的第1章 过滤勾子驱动程序 请参见第六部分第1章
- 16- 请参见第三部分第 1 章。 面向连接的下层 如果你要编写一个中间层驱动程序,并在它的下层为面向连接微端口提供一个接口,请 参见第三部分第 1 章和第四部分第 4 章。 协议驱动程序 选择你将编写的协议驱动程序类型: 面向一个无连接的下层 如果你要编写的协议驱动程序为下层的无连接微端口提供接口,请参见第三部分第 2 章。 面向 TDI 的上一层 如果你要编写一个拥有一个 TDI 的上层的协议,请参见第三部分的第 2,3,4 和第 5 章。 支持 Winsock 如果你要编写一个提供 Winsock 支持的协议,请参见第三部分的 2,3,4,5,6 章。 面向连接客户或呼叫管理器 如果你要编写一个面向连接的客户方,它对面向连接的微端口提供了接口,或者你要编 写一个面向连接的呼叫管理器,请参见第三部分的第 2 章和第四部分的第 1 章。 过滤勾子驱动程序 请参见第六部分第 1 章
第二章内核模式驱动程序的网络结构 这一章讲述 Windows2000的内核模式驱动程序的网络结构,这章包含以下几个部 2.1 Windows2000网络结构和OSI模型 2.2NDS网络驱动程序 23TDl驱动程序 24网络驱动程序环境 2.1 Windows2000网络结构和0SI模型 Windows2000网络结构是以国际标准化组织(SO)制定的七层网络模型为基础的,1978 年,ISO制定的开放式系统(OSI)参考模型,将网络描述为一系列的协议层,在每个协议层 中完成一系列的特定功能。每一层都向上一层提供明确的服务,同时将本层服务的实现封装 起来一个在相邻层之间完善的接口定义了下层对上层所提供的服务以及如何访问这些服 务 (应用层,表示层,会话层传输层网络层链路层物理层物理介质图2.1OSI参考模 Windows2000的网络驱动程序实现了这个网络结构的下面四层。 物理层 这是OSI模型中的最底层,这一层用来通过物理介质接收和发送的原始的没有结构的 二进制数据流,它描述了对于物理介质的电/光,机械和功能的的接口,物理层为所有的上 层传送信号,在 Windows2000中,物理层通过网络接口卡(NC)来实现,物理层的收发是依 缚于NC介质的。使用串行端口的网络组件,物理层也同样包含了底层的网络软件,它定 义了串行位流是如何分成数据包的 数据链路层 电气电子工程师协会(EEE)将该层进一步分成了两个子层,LLC和MAC。LLC子 层用于将数据帧从一个结点无错的传输到另一个结点。LLC子层用来建立和终止逻辑链接, 控制帧流,对帧排序,接收帧,并且对没有被接收的帧进行重发。LLC子层使用帧应答和 帧的重发为经过链路层的上层提供了真正的无错发送。MAC子层控制物理介质的访问,检 查帧的错误,并且管理接收帧的地址认证。在 Windows2000网络结构中,逻辑链路控制子 层在传输驱动程序中实现,而介质访问控制子层则在网络接口卡(NC)中实现,NC由一个 名为NC驱动程序的设备驱动程序软件控制。 Windows2000的附带了许多常用的NIC的驱 动程序。 网络层 这一层控制着子网的运作,它基于以下因素决定数据的物理路径: 网络状况 ·服务优先权 其他因素,包括路由、流量控制、帧的分解和重组、逻辑到物理地址的映射、用户帐 传输层 这一层确保信息传送的无错传输,连续传输和不丢失或不重复。它使得上层协议与上层
- 17- 第二章 内核模式驱动程序的网络结构 这一章讲述 Windows 2000 的内核模式驱动程序的网络结构,这章包含以下几个部 分: 2.1 Windows 2000 网络结构和 OSI 模型 2.2 NDIS 网络驱动程序 2.3 TDI 驱动程序 2.4 网络驱动程序环境 2.1 Windows 2000 网络结构和 OSI 模型 Windows 2000 网络结构是以国际标准化组织(ISO)制定的七层网络模型为基础的,1978 年,ISO 制定的开放式系统(OSI)参考模型,将网络描述为一系列的协议层,在每个协议层 中完成一系列的特定功能。每一层都向上一层提供明确的服务,同时将本层服务的实现封装 起来.一个在相邻层之间完善的接口定义了下层对上层所提供的服务以及如何访问这些服 务。 (应用层,表示层,会话层,传输层,网络层,链路层,物理层,物理介质 图 2.1 OSI 参考模 型) Windows 2000 的网络驱动程序实现了这个网络结构的下面四层。 物理层 这是 OSI 模型中的最底层,这一层用来通过物理介质接收和发送的原始的没有结构的 二进制数据流,它描述了对于物理介质的电/光,机械和功能的的接口,物理层为所有的上 层传送信号,在 Windows 2000 中,物理层通过网络接口卡(NIC)来实现,物理层的收发是依 缚于 NIC 介质的。使用串行端口的网络组件,物理层也同样包含了底层的网络软件,它定 义了串行位流是如何分成数据包的。 数据链路层 电气电子工程师协会(IEEE)将该层进一步分成了两个子层,LLC 和 MAC。LLC 子 层用于将数据帧从一个结点无错的传输到另一个结点。LLC 子层用来建立和终止逻辑链接, 控制帧流,对帧排序,接收帧,并且对没有被接收的帧进行重发。LLC 子层使用帧应答和 帧的重发为经过链路层的上层提供了真正的无错发送。MAC 子层控制物理介质的访问,检 查帧的错误,并且管理接收帧的地址认证。在 Windows 2000 网络结构中,逻辑链路控制子 层在传输驱动程序中实现,而介质访问控制子层则在网络接口卡(NIC)中实现,NIC 由一个 名为 NIC 驱动程序的设备驱动程序软件控制。Windows 2000 的附带了许多常用的 NIC 的驱 动程序。 网络层 这一层控制着子网的运作,它基于以下因素决定数据的物理路径: ·网络状况 ·服务优先权 ·其他因素,包括路由、流量控制、帧的分解和重组、逻辑到物理地址的映射、用户帐 号。 传输层 这一层确保信息传送的无错传输,连续传输和不丢失或不重复。它使得上层协议与上层
协议之间或与它同层的协议之间通讯不必关心数据的传输。传输层所在的协议栈至少应包括 个可靠的网络层,或在逻辑链路控制子层中提供一个虚电路。例如,因为 Windo NetbEUI传输驱动程序包括一个与OSI兼容的LLC子层,它的传输层的功能就很小。如果 协议栈不包括LLC子层,并且网络层不可靠,并且/或者支持自带地址信息(例如TCPP的 IP层或 NWLINK的PⅩ层),那么传输层应能进行帧的顺序控制和帧的响应,同时要对未 响应帧进行重发 在 Windows2000网络结构中,逻辑链路层,物理层和传输层都是通过名为传输驱动程 序的软件实现的,它有时也称作协议,协议驱动程序或协议模块。 Windows2000附带了 TCP/IP, IPX/SPX, NetBEUi和 Apple Talk传输驱动程序。 2.2NDIS驱动程序 网络驱动程序接口说明(NDS库将网络硬件抽象为网络驱动程序。NDIS也说明了网络 驱动程序间的标准接口,因此它将用来管理硬件的底层驱动程序抽象为上层驱动程序,例如 网络传输层。NDS也维护着状态信息和网络驱动程序的参数,包括指向函数的指针,句柄 和链接时参数块的指针,以及其他系统参数 正如图22所示,NDS支持以下几种类型的网络驱动程序: 微端口驱动程序 中间层驱动程序 ·协议驱动程序 图2.2NDS驱动程序) 221NDs微端口驱动程序 个NDS微端口驱动程序(也叫微端口NC驱动程序)有两个基本功能: 管理一个网络接口卡(NC),包括通过NC发送和接收数据 ·与高层驱动程序相接,例如中间层驱动程序和传输协议驱动程序。 个微端口驱动程序与它的NC通信,并且通过NDS库与高层驱动程序通信 NDS库对外提供了一整套的函数( NdisXXX函数),这些函数封装了微端口需要调用的所有 操作系统函数。同时,微端口必须向外提供一组入口( MiniportXxx函数),使NDS可以为了 完成自己或高层驱动程序的任务而访问微端口。 发送和接收操作表明了NDS与高层驱动程序和微端口NIC的相互作用 当一个传输驱动程序发送一个包时,它调用一个NDS库所提供的 NdisXxx函数, NDS于是通过调用由微端口提供的合适的 MiniportXxx函数将包传递给微端口,然后微端 口驱动程序通过调用恰当的 NdisXxx函数将包传递给NC来发送包 ·当一个NIC接收到由NC发给它的包时,它将产生一个由NDS或NC的微端口处 理的中断。NDS通过调用恰当的 MiniportXxx函数指示NC的微端口。微端口通过调用恰 当的 NdisXxx函数把数据从NC传送到上层驱动程序,并且同时指示上层驱动程序接收包 NDS既支持无连接环境下的微端口驱动程序,也支持面向连接的微端口驱动程序 无连接的微端口为无连接网络介质,例如 Ethernet,FDD和 Token Ring,控制NIC 可将无连接微端口进一步分为以下几种子类型 串行化的驱动程序它依靠NDS对 MiniportXxx函数调用进行串行化,并管理它们的 发送队列。 非串行化驱动程序,它自己对 MiniportXxx函数操作进行串行化,并且在内部对进入
- 18- 协议之间或与它同层的协议之间通讯不必关心数据的传输。传输层所在的协议栈至少应包括 一个可靠的网络层,或在逻辑链路控制子层中提供一个虚电路。例如,因为 Windows 2000 NetBEUI 传输驱动程序包括一个与 OSI 兼容的 LLC 子层,它的传输层的功能就很小。如果 协议栈不包括 LLC 子层,并且网络层不可靠,并且/或者支持自带地址信息(例如 TCP/IP 的 IP 层或 NWLINK 的 IPX 层),那么传输层应能进行帧的顺序控制和帧的响应,同时要对未 响应帧进行重发。 在 Windows 2000 网络结构中,逻辑链路层,物理层和传输层都是通过名为传输驱动程 序的软件实现的,它有时也称作协议,协议驱动程序或协议模块。Windows 2000 附带了 TCP/IP,IPX/SPX,NetBEUI 和 AppleTalk 传输驱动程序。 2.2 NDIS 驱动程序 网络驱动程序接口说明(NDIS)库将网络硬件抽象为网络驱动程序。NDIS 也说明了网络 驱动程序间的标准接口,因此它将用来管理硬件的底层驱动程序抽象为上层驱动程序,例如 网络传输层。NDIS 也维护着状态信息和网络驱动程序的参数,包括指向函数的指针,句柄 和链接时参数块的指针,以及其他系统参数。 正如图 2.2 所示,NDIS 支持以下几种类型的网络驱动程序: ·微端口驱动程序 ·中间层驱动程序 ·协议驱动程序 (图 2.2 NDIS 驱动程序) 2.2.1 NDIS 微端口驱动程序 一个 NDIS 微端口驱动程序(也叫微端口 NIC 驱动程序)有两个基本功能: ·管理一个网络接口卡(NIC),包括通过 NIC 发送和接收数据。 ·与高层驱动程序相接,例如中间层驱动程序和传输协议驱动程序。 一个微端口驱动程序与它的 NIC 通信,并且通过 NDIS 库与高层驱动程序通信。 NDIS 库对外提供了一整套的函数(NdisXXX 函数),这些函数封装了微端口需要调用的所有 操作系统函数。同时,微端口必须向外提供一组入口(MiniportXxx 函数),使 NDIS 可以为了 完成自己或高层驱动程序的任务而访问微端口。 发送和接收操作表明了 NDIS 与高层驱动程序和微端口 NIC 的相互作用。 ·当一个传输驱动程序发送一个包时,它调用一个 NDIS 库所提供的 NdisXxx 函数, NDIS 于是通过调用由微端口提供的合适的 MiniportXxx 函数将包传递给微端口,然后微端 口驱动程序通过调用恰当的 NdisXxx 函数将包传递给 NIC 来发送包。 ·当一个 NIC 接收到由 NIC 发给它的包时,它将产生一个由 NDIS 或 NIC 的微端口处 理的中断。NDIS 通过调用恰当的 MiniportXxx 函数指示 NIC 的微端口。微端口通过调用恰 当的 NdisXxx 函数把数据从 NIC 传送到上层驱动程序,并且同时指示上层驱动程序接收包。 NDIS 既支持无连接环境下的微端口驱动程序,也支持面向连接的微端口驱动程序。 无连接的微端口为无连接网络介质,例如 Ethernt,FDDI 和 Token Ring,控制 NIC。 可将无连接微端口进一步分为以下几种子类型: ·串行化的驱动程序,它依靠 NDIS 对 MiniportXxx 函数调用进行串行化,并管理它们的 发送队列。 ·非串行化驱动程序,它自己对 MiniportXxx 函数操作进行串行化,并且在内部对进入
的发送包进行排队。它的意义在于有很高的效率,例如驱动程序的临界区(在一个时间段内 只有一个线程可访问的代码区)。面向连接的微端口为面向连接的网络介质,例如ATM和 ISDN,控制NC。面向连接的微端口经常非串行化的——它自己对 MiniportXxx函数操作 进行串行化,并且在内部对进入的发送抱进行排队 个NDS微端口驱动程序可以有一个非NDS的底层(参见图23)。 (图23拥有非NDS的底层NDS微端口) 通过它的非NDS底层,微端口使用某种类型的接口,例如通用串行总线构架(USB 或 IEEE1394(火线)来控制总线上的设备。微端口通过直接发送I/O请求包(RPs到总线或 是发送到连接到总线的其他远程设备上来与设备通信。在它的上层,微端口提供了标准的 NDS微端口接口,它使得微端口可以与上层NDIS驱动程序通信。 NDIS也支持广域网(WAN范围的控制 WAN NIC的微端口,有关更多的WAN网 络环境的信息,可参见243节。 222NDs中间层驱动程序 正如图24所示,中间层驱动程序一般位于微端口驱动程序和传输协议驱动程序之 间 因为它在驱动程序层结构的中间位置,所以既与上层协议驱动程序通信又要与下层 微端口驱动程序通信 在它的下界,中间层驱动程序提供了协议入口点( ProtocolXxx函数),NDS调用这些 函数传递下层微端口的请求。对于一个下层微端口驱动程序,一个中间层驱动程序这时就仿 佛是一个协议驱动程序。 在它的上界,中间层驱动程序提供了微端口的入口指针( MiniportXxx函数),一个或 多个上层协议驱动程序通过NDS调用这些函数进行通信。对于上层协议驱动程序,一个中 间层驱动程序这时就仿佛是一个微端口驱动程序 (图2.4在微端口驱动程序和传输驱动程序之间的中间层驱动程序) 虽然向上层提供了 MiniportXxx函数的一个子集,但是事实上中间层驱动程序并不管理 物理的NC。它只是向上层协议提供了一个或多个可以绑定的虚拟适配器。对于一个协议驱 动程序,一个由中间层驱动程序提供的适配器就如同一个物理的NC。当协议驱动程序发送 包或向一个实际的适配器时发出请求时,中间层驱动程序将传递这些包和请求到下层的微端 口。当下层微端口向上发出接收包的指示、响应协议请求的信息或指示状态信息时,中间层 驱动程序将这些包、响应、和状态指示传递给绑定在虚拟适配器上的协议驱动程序 中间层驱动程序有如下几种典型使用方法: 在不同的网络介质间进行转换 例如,处于 Ethernet和 Token Ring传输层及一个AM微端口之间的中间层驱动程序的 功能是将 Ethenet和 Token Ring的包转换为ATM包,反之亦然 过滤包 个包调度器是中间层驱动程序用作过滤驱动程序的很好例子。包调度器读出每个传输 层传下来的发送数据包和每一个由微端口指示的接收包的优先权。然后包调度器以它的优先 权调度抱的接收和发送顺序
- 19- 的发送包进行排队。它的意义在于有很高的效率,例如驱动程序的临界区(在一个时间段内 只有一个线程可访问的代码区)。面向连接的微端口为面向连接的网络介质,例如 ATM 和 ISDN,控制 NIC。面向连接的微端口经常非串行化的——它自己对 MiniportXxx 函数操作 进行串行化,并且在内部对进入的发送抱进行排队。 一个 NDIS 微端口驱动程序可以有一个非 NDIS 的底层(参见图 2.3)。 (图 2.3 拥有非 NDIS 的底层 NDIS 微端口) 通过它的非 NDIS 底层,微端口使用某种类型的接口,例如通用串行总线构架(USB) 或 IEEEE1394(火线)来控制总线上的设备。微端口通过直接发送 I/O 请求包(IRPs)到总线或 是发送到连接到总线的其他远程设备上来与设备通信。在它的上层,微端口提供了标准的 NDIS 微端口接口,它使得微端口可以与上层 NDIS 驱动程序通信。 NDIS 也支持广域网(WAN)范围的控制 WAN NIC 的微端口,有关更多的 WAN 网 络环境的信息,可参见 2.4.3 节。 2.2.2 NDIS 中间层驱动程序 正如图 2.4 所示,中间层驱动程序一般位于微端口驱动程序和传输协议驱动程序之 间。 因为它在驱动程序层结构的中间位置,所以既与上层协议驱动程序通信又要与下层 微端口驱动程序通信。 ·在它的下界,中间层驱动程序提供了协议入口点(ProtocolXxx 函数),NDIS 调用这些 函数传递下层微端口的请求。对于一个下层微端口驱动程序,一个中间层驱动程序这时就仿 佛是一个协议驱动程序。 ·在它的上界,中间层驱动程序提供了微端口的入口指针(MiniportXxx 函数),一个或 多个上层协议驱动程序通过 NDIS 调用这些函数进行通信。对于上层协议驱动程序,一个中 间层驱动程序这时就仿佛是一个微端口驱动程序。 (图 2.4 在微端口驱动程序和传输驱动程序之间的中间层驱动程序) 虽然向上层提供了 MiniportXxx 函数的一个子集,但是事实上中间层驱动程序并不管理 物理的 NIC。它只是向上层协议提供了一个或多个可以绑定的虚拟适配器。对于一个协议驱 动程序,一个由中间层驱动程序提供的适配器就如同一个物理的 NIC。当协议驱动程序发送 包或向一个实际的适配器时发出请求时,中间层驱动程序将传递这些包和请求到下层的微端 口。当下层微端口向上发出接收包的指示、响应协议请求的信息或指示状态信息时,中间层 驱动程序将这些包、响应、和状态指示传递给绑定在虚拟适配器上的协议驱动程序。 中间层驱动程序有如下几种典型使用方法: ·在不同的网络介质间进行转换 例如,处于 Ethernet 和 Token Ring 传输层及一个 ATM 微端口之间的中间层驱动程序的 功能是将 Ethenet 和 Token Ring 的包转换为 ATM 包,反之亦然。 ·过滤包 一个包调度器是中间层驱动程序用作过滤驱动程序的很好例子。包调度器读出每个传输 层传下来的发送数据包和每一个由微端口指示的接收包的优先权。然后包调度器以它的优先 权调度抱的接收和发送顺序
在多个NC间平衡包的负载 负载平衡驱动程序向上层传输协议提供了一个虚拟的适配器,但实际上它却将包分配了 给多个NIC。 223NDIS协议驱动程序 个网络协议在NDS驱动程序层次结构中属于最高层驱动程序,而它经常在实现传输 层协议的传输驱动程序中被用作最底层的驱动程序,例如TCP/P或 IPX/SPX。一个传输协 议驱动程序分配包,从应用程序中将数据拷贝到包中,并且通过调用NDS函数将这些包发 送到低层驱动程序中。协议驱动程序也为从下层驱动程序中接收包提供了接口。一个传输协 议驱动程序将接收到的数据转换成相应的客户应用数据。 在它的下层,协议驱动程序与中层网络驱动程序和微端口NIC驱动程序相连接。协议 驱动程序调用 NdisXxx函数来发送包,读取和设置由低层驱动程序所维护的信息,以及使 用操作系统服务。协议驱动程序也提供了一套入口点( ProtocolXxx函数),NDS代表下层 驱动程序调用这些函数为自己或向上指示接收包、指示下层驱动程序的状态、以及与协议驱 动程序进行通信 对于上层,传输协议驱动程序对高层驱动程序提供了一个私有接口 2.3TDI驱动程序 传输驱动程序接口(TD1)定义了一个内核模式的网络接口,它是为上层的传输协议 栈提供的。(如图2.5) (图25TDl客户和传输层) TDl客户是内核模式的驱动程序,例如 Redirector和 Server,它通过TDl与传输层相接。 TDl简化了TDl的开发传输驱动程序的工作。同时它也通过减少必需编写的传输层相关代 码的数量来简化开发客户的工作量 传输驱动程序提供了仅可被TD客户方所使用的TD接口。为了提供更多的接入传输 层的方法, Windows2000为当前较通用的网络接口, Windows socket和 Netbios提供了仿 真器模块,每个仿真器模块提供了它自己的一套函数,在用户模型中,可以通过标准的调用 机制来调用它们。当调用它们时,仿真器模块将自己的函数和相关参数以及程序控制传递给 TD函数,然后通过IDL调用相关的传输驱动程序。 为了提高它的性能,TCP/P和 IPX/SPX的实现也作为TD传输驱动程序的一部分。 2.4网络驱动程序环境 这一节将讲述微软 Windows2000基于以下几种类型的内核模式网络驱动程序的网络环 境 241无连接的驱动程序 242面向连接的驱动程序 243WAN驱动程序 24.1无连接环境的网络驱动程序
- 20- ·在多个 NIC 间平衡包的负载 负载平衡驱动程序向上层传输协议提供了一个虚拟的适配器,但实际上它却将包分配了 给多个 NIC。 2.2.3 NDIS 协议驱动程序 一个网络协议在 NDIS 驱动程序层次结构中属于最高层驱动程序,而它经常在实现传输 层协议的传输驱动程序中被用作最底层的驱动程序,例如 TCP/IP 或 IPX/SPX。一个传输协 议驱动程序分配包,从应用程序中将数据拷贝到包中,并且通过调用 NDIS 函数将这些包发 送到低层驱动程序中。协议驱动程序也为从下层驱动程序中接收包提供了接口。一个传输协 议驱动程序将接收到的数据转换成相应的客户应用数据。 在它的下层,协议驱动程序与中层网络驱动程序和微端口 NIC 驱动程序相连接。协议 驱动程序调用 NdisXxx 函数来发送包,读取和设置由低层驱动程序所维护的信息,以及使 用操作系统服务。协议驱动程序也提供了一套入口点(ProtocolXxx 函数), NDIS 代表下层 驱动程序调用这些函数为自己或向上指示接收包、指示下层驱动程序的状态、以及与协议驱 动程序进行通信。 对于上层,传输协议驱动程序对高层驱动程序提供了一个私有接口。 2.3 TDI 驱动程序 传输驱动程序接口(TDI)定义了一个内核模式的网络接口,它是为上层的传输协议 栈提供的。(如图 2.5) (图 2.5 TDI 客户和传输层) TDI 客户是内核模式的驱动程序,例如 Redirector 和 Server,它通过 TDI 与传输层相接。 TDI 简化了 TDI 的开发传输驱动程序的工作。同时它也通过减少必需编写的传输层相关代 码的数量来简化开发客户的工作量。 传输驱动程序提供了仅可被 TDI 客户方所使用的 TDI 接口。为了提供更多的接入传输 层的方法,Windows 2000 为当前较通用的网络接口,Windows Socket 和 NetBIOS 提供了仿 真器模块,每个仿真器模块提供了它自己的一套函数,在用户模型中,可以通过标准的调用 机制来调用它们。当调用它们时,仿真器模块将自己的函数和相关参数以及程序控制传递给 TDI 函数,然后通过 IDL 调用相关的传输驱动程序。 为了提高它的性能,TCP/IP 和 IPX/SPX 的实现也作为 TDI 传输驱动程序的一部分。 2.4 网络驱动程序环境 这一节将讲述微软 Windows 2000 基于以下几种类型的内核模式网络驱动程序的网络环 境。 ·2.4.1 无连接的驱动程序 ·2.4.2 面向连接的驱动程序 ·2.4.3 WAN 驱动程序 2.4.1 无连接环境的网络驱动程序