zoukankan      html  css  js  c++  java
  • 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包过滤技术
        前面我们已经看到,所有的数据报都要经过中间层,所以,我们可以在中间层加入我们想要过滤的数据报的特征,实现基于中间层驱动的内核级包过滤。

  • 相关阅读:
    微信开发 (一) 消息回复
    java文本获取
    Axis2开发webservice详解
    springmvc 统一处理异常
    easyui 动态添加input标签
    excel 导入
    eclipse启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space
    配置阿里云SLB全站HTTPS集群
    Nginx之HTTPS
    Nginx实现rewrite重写
  • 原文地址:https://www.cnblogs.com/Curry/p/2967647.html
Copyright © 2011-2022 走看看