最近,因为项目的需要,想加入防火墙的功能模块,故开始了对这方面知识的学习。。。。
上层通过 NTDLL 中的接口,访问驱动中服务,然后 通过一些设备驱动,执行一些协议的东西。。。
这是windows 网络数据传输在系统中的层次结构,最上层是 :
应用程序--->> tdi ---->> NDIS 协议驱动 ----->> NDIS 中间层驱动 ---->> NDIS 小端口驱动。。
他们的功能也是各不相同,在网络驱动中的信息传递,不像是 一般的 WDM 驱动的驱动栈的形式,而是通过了一个内部的句柄,
通过一个传输函数进行传递数据包的,在这些驱动层中,协议驱动通过注册一个新的协议,绑定在下边的小端口驱动上,获取所有
发到本计算机的电脑,但它不能截获所有发出去的数据包,因为通过 TCP,ip 这种协议的发出的数据,是不会经过 协议驱动的,
但是,中间层的驱动却能截获他们, 中间层驱动是一种“双面人”
它在上面对于协议驱动是 小端口驱动,对下边是却是 协议驱动。 这样他就能 被上层的协议驱动绑定,同时
它也能 绑定下层 的小端口驱动,理论上他是可以截取到 所有发出和接受都的所有的数据包的。。。
小端口驱动,直接驱动NIC ,也就是离硬件最近的驱动了。。。
下边是一个全局: