本文主要是介绍围观网络之三 -- 浅探索NDIS5.1(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:
本文讨论w2k&xp适用的ndis5.x 网络架构。
NDIS4.0源码太老,ROS又YY了太多,所以这次的参考代码基本都是自己f5的…具体结构都有了,我f5的毫无压力=。=
调试的时候利用IMD(中间层驱动)下断点,更无压力了...
NDIS5.x网络的堆叠结构大概是:
WINSOCK API → afd → 协议驱动TCPIP(其上层是TDI接口 ) →可能存在的中间层驱动→NDISWAN 系统提供中间层驱动(用于简化规程对于miniport的绑定) →miniport适配器网卡驱动
Ndis管理的部分,就是抽象成 "规程端(protocol edge) → 小端口端(miniport edge) → 规程端→ 小端口端" 这一流程的管理,tcpip是最靠前的规程驱动,只有规程端,真实网卡驱动只有小端口端,中间层驱动都同时具备小端口和规程的特征属性
WINSOCK供应用程序调用协议驱动主要处理网络连接的逻辑,afd将这些请求转化为协议层明白的参数(TDI规范)发给tcpip
如上图所示,实际上要更复杂一点,ndiswan是系统提供的一个中间层驱动,提供了许多服务
NDIS.sys除了像win32k一样作为内核的API补充支持,另外的作用就是隐藏整个网络框架的真像- -!(这是NDIS wrapper得名的原因?) 网络设备驱动与WDM框架不同,大概是 由于网络IO的特殊性以及出于对效率的考虑
这篇关于围观网络之三 -- 浅探索NDIS5.1(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!