• NDIS学习笔记一


    由于项目上遇到通信问题,为了排查问题,准备做个可以模拟丢包的工具,同时弥补下网络知识。刚开始的时候以为用SPI技术就可以解决,后来才知道丢包之类的一定要在协议层之下才可以完成,对于协议层之下,本来想完全做完之后再发篇完整的文章,结果发现难度有点超出预期。没办法底子太差了。

    中间层驱动技术介绍

        中间层驱动,英文为NDIS intermediate driver。

        1)内核级网络驱动介绍
            Microsoft Windows NT支持三种基本的内核级网络驱动,这三层driver顺序从下到上依次为:
            1. Miniport NIC drivers:微端口网卡驱动,位于最底层,直接操纵网卡并且对高层驱动提供接口。
            2. Intermediate drivers:IMD中间层驱动,这就是今天的主角,位于1和3之间,具体的作用下面就会介绍。
            3. Protocol drivers:高层协议驱动,俗称为TDI(传输驱动程序接口),高于前面两层,直接面向用户级,为用户提供网络服务,也就是绝大多数程序所用到的网络接口。

     2)IMD驱动             
        IMD中间层,它的实质很简单,最经典的描述莫过于下面的话:
        
        An intermediate driver is typically layered over one or more NDIS NIC drivers and under a transport driver (possibly multilayered) that supports TDI at its upper edge.
        An NDIS intermediate driver exports MiniportXxx functions at its upper edge and ProtocolXxx functions at its lower edge.(见DDK文档)
        
        中间层插入网卡和协议层之间,对上面的协议层表现为一个虚拟的微端口网卡结构,而对下面的网卡则表现为一个协议层的结构。所以,无论是网卡接收并上传的数据报,还是上层要下送至网卡发送的数据报,无一例外地要经过中间层。
        

        3)IMD包过滤技术
        前面我们已经看到,所有的数据报都要经过中间层,所以,我们可以在中间层加入我们想要过滤的数据报的特征,实现基于中间层驱动的内核级包过滤。

  • 相关阅读:
    对称加密算法:替代算法与置换算法
    cin与getline
    延迟任务实现方式
    @Validated校验
    mac 终端 常用命令
    IOS和Android的区别[转]
    [IOS] NSIndexPath , NSIndexSet , NSRange 之间的区别比较
    [IOS]iphone开发之UIImage应用与内存管理,UIImage加载图像方法
    CorePlot SDK的安装以及应用
    [IOS] iphone 之 横屏和自动旋转
  • 原文地址:https://www.cnblogs.com/Curry/p/2967647.html
Copyright © 2020-2023  润新知