当前位置:
文档之家› NDI协议驱动程序设计——马洪兵
NDI协议驱动程序设计——马洪兵
驱动程序中要提供的几个主要函数
1)DriverEntry 这是协议驱动程序的初始化函数,并且必须被命名为 DriverEntry。而其它由协议驱动程序导出的函数则可 以任意起名,因为NDIS最终得到的只是这些函数的入 口地址。在系统初始化期间会调用DriverEntry完成协 议驱动程序的加载。 在DriverEntry中通过调用NdisRegisterProtocol完成 协议驱动程序的注册,该函数的第三个参数中填写了 所有导出函数的入口地址。如果在DriverEntry中申请 某种资源失败的话,则需要将先前得到的各种资源释 放掉并调用NdisDeregisterProtocol返回适当的错误 信息。
机器1
实际数据传输路径
机器2
OSI参考模型
OSI参考模型是一种理想化的方案,很少系统完全实现了这 一模型,然而,OSI参考模型为示范网络的功能结构提供了 可行的机制。两台机器在相同的层次上,使用同一种语言 (协议)对话。
TCP/IP协议概述
TCP/IP协议是Internet的技术基础 Internet是一个广域网,是目前联通世界上绝大多数国 家和地区的全球性信息系统。在Internet上,可以实现 低成本、高速率、交互式的信息查询、信息发布、通讯 联络以及协同作业等等现代化的工作、学习和生活。
OSI参考模型
在OSI参考模型中,每一层的功能是向上层提供服务, 而对下层的实现进行抽象
网络传输实际上是通过客户机的每一层往下传,然后在 目标机上逐层上传直到相应的一层能够理解并应答客户 机的请求。
OSI参考模型
应用层 处理两个网络应用程序之间的信息传输。 表示层 负责所传输消息的语法和语义的分析, 处理数据的格式化。 会话层 管理相互协作的应用程序之间的连接。 传输层 从会话层接受数据,传递给网络层, 并确保到达对方的信息正确无误。 网络层 负责建立分组头,处理路由,拥塞控制, 以及网络互连。 数据链路层 (DLL) 发送和接收帧。 物理层 负责传送比特流。
个人计算机 服务器 工作站
集线器 调制解调器
拨号服务器 调制解调器
公共电话网 个人计算机 个人计算机
计算机需要特殊的I/O接口设备连接到局域网中,这一设备被称为 网 络 适 配 器 ( Network Adapter) 或 者 网 络 接 口 卡 ( Network Interface Card)。
◆ ◆ ◆ ◆
协议驱动程序
• 网络API驱动程序接受API 请 求,把它们转换为底层网络 协议的传输请求。 • API驱动程序依赖核心态的 传输协议驱动程序进行实际 的转换。 • API和下层的网络协议是分 开的,使得整个网络体系结 构十分灵活,它允许每个API 使用不同的网络协议。
◆ ◆ ◆ ◆
NDIS库
为适配驱动程序提供了封装,隐 藏了Windows2000核心态环境下 的具体细节。NDIS库为适配驱动 程序提供支持函数,而且也为 TDI传送器的使用提供了函数接 口。 • 网络驱动程序接口规范(NDIS) 允许协议驱动程序以设备无关 的方式和网络适配器驱动程序 通信。 • 遵守NDIS的网络适配器驱动程 序被称为NDIS小型端口驱动程 序。
传输驱动程序接口(TDI) 客户
是核心态的驱动程序,通常实现 了网络API的核心态部分。 TDI客户根据Windows传输驱动 ◆ 程序接口标准格式化I/O请求包 ◆ (IRP),发送至协议驱动程序。
TDI传输提供者(TDI transport Provider)
又称为TDI传送器,NDIS协议驱 动程序,以及协议驱动程序,是 工作在核心态的协议驱动程序。 他们接收从TDI客户传来的IRP, 然后处理这些IRP中的请求。 TDI传送器根据不同的协议(例 如TCP,UDP,IPX)将协议头 加入IRP的数据中。
• NIC 发出一个硬件中断. • NDIS调用 MiniportXxx函数 • 小端口驱动程序从NIC 接收数据,然后通过调用 NdisXxx 函数向绑定的上层驱动程序表明接收的 数据包的存在
NDIS中间驱动程序
中间驱动程序是那种典型的处于小端口驱动程序和传 输协议驱动程序之间的驱动程序。由于它处于驱动程 序层级的中间位置,所以中间驱动程序必须和上面的 协议驱动程序和下面的小端口驱动程序都通讯. – 在其下边界,导出协议 入口点 (ProtocolXxx 函数) – 在其上边界,导出小端 口入口点 (MiniportXxx函数)
NDIS简介
NDIS支持三种类型的网络驱动程序:小端口驱动程序, 中间驱动程序和协议驱动程序。
NDIS小端口驱动程序
一个NDIS小端口驱动程序(也称为一个小端口NIC驱动 程序)有两种基本功能: • 管理一个网络接口卡(NIC),包括通过NIC发送和 接收数据 • 与高级驱动程序接口,例如和中间驱动程序和传输协 议驱动程序。
NDIS小端口驱动程序
– NDIS库导出了一组函数(NdisXXX 函数) ,这 些函数封装了所有的操作系统功能
• 由小端口驱动程序调用
– 小端口驱动程序必须导出一组函数入口点 (MiniportXxx函数).
• 由NDIS调用
NDIS小端口驱动程序 • 小端口驱动程序与NDIS以及高层驱动程序 间的交互:
广域网
广域网是一种大范围连接大量计算机的网络技术。广域 网通讯线路一般都是由电信公司建设。
个人计算机 工作站 个人计算机
局域网1 局域网4
路由器
网关
个人计算机
工作站
服务器
广域网
服务器
个人计算机
个人计算机
个人计算机 路由器
个人计算机 路由器
工作站
局域网2
工作站 服务器
局域网3
个人计算机 服务器
Internet是目前最大的全球性广域网
NDIS协议驱动程序设计
电子工程系
NDIS协议驱动程序设计
一、预备知识 •计算机网络技术基础 •Windows网络体系结构 •NDIS规范简介 二、实习内容 •功能要求 •NDIS协议驱动程序设计 •数据包的解析 三、实习环境与要求
一、预备知识 •计算机网络技术基础 •Windows网络体系结构 •NDIS规范简介
1、计算机网络技术基础
计算机网络技术是计算机技术与通讯技术的结合。计算机网 络就是将不同地理位置的多个计算机系统通过一定的通讯设 备和通讯线路相互连接,在网络应用软件的支持下实现数据 通讯和资源共享的计算机系统。
计算机网络通常可以分为两类:局域网和广域网
局域网
局域网是一种小范围的专用网络,一般范围不超过几公里。
局域网
应用最为广泛的局域网技术: Ethernet——以太网 70年代由Xerox公司联合DEC和Intel提出,后经 IEEE标准化成为国际标准IEEE 802.3 介质访问控制机制采用CSMA/CD(Carrier Sense Multiple Access, with Collision Detection ) 现代的操作系统均支持以太网协议
– 发送
• 传输驱动程序调用一个NdisXxx 函数. • NDIS通过调用适当的MiniportXxx函数将数据包传 送给小端口驱动程序. • 小端口驱动程序通过调用适当的NdisXxx函数将数 据包转发给NIC.
NDIS小端口驱动程序 • 小端口驱动程序与NDIS以及高层驱动程 序间的交互:
– 接收
客户 : socket connect write,send read,recv closesocket
Winsock 的实现源自3、NDIS简介Microsoft网络驱动程序接口规范(NDIS)的设 计目的是通过将不同的协议从网络接口卡上拆除, 使得用户可以访问不同的协议。在设计过程中, 协议并不需要了解关于网络卡的任何信息。 NDIS程序库(NDIS.sys)提供了一个面向NIC驱动 程序的完全抽象的接口,网卡驱动程序与协议层 驱动程序及操作系统通过这个接口进行通信。 目前最新的NDIS是5.1版本,Windows 2K及以后 版本的NDIS是5.0。
NDIS Miniport Interface
Internal Binding Relationship NDIS Protocol Interface
协议驱动程序
协议驱动程序位于NDIS驱动程序的最高层,它通过中 间驱动程序或直接与小端口驱动程序打交道,并向下 导出一组ProtocolXxx函数。 通常在实现传输协议栈 (例如TCP/IP, IPX)的传输驱动 程序中作为最低层 在上边界,协议驱动程序与协议栈中的高层驱动程序 的接口是私有的. 协议驱动程序通过NDIS完成向小端口驱动程序或中间 驱动程序的绑定,并使用它们收发网络数据包。
TCP/IP协议概述
传输层
– 传输控制协议 ( TCP 面向连接的数据传输) TCP负责可靠的面向连接的数据传输 – 用户数据报协议 ( UDP 面向无连接的数据传输) 负责端到端的数据传输,不需要建立连接
2、Windows网络体系结构
网络API
为应用程序提供一种独立 于协议的方式用于网络通 信。网络API通常以用户态 动 态 连 接 库 ( DLL) 的 形 式提供给用户。 • 命名管道(Named Pipe)和邮 件槽(Mailslot) • Windows套接字(WinSock) • NetBIOS • 远程过程调用(RPC) • 通用互连网络文件系统(CIFS) ◆ ◆ ◆ ◆
NDIS简介
NDIS驱动程序的应用
•网络安全 •网络监测与分析 •容错 •……
二、实习内容 •功能要求 •NDIS协议驱动程序设计 •数据包的解析
1. 功能要求
*能够从下层(准确的说是数据链路层)把网络 上所有的数据包抓下来。 *有一个上层的应用程序负责解析抓到的数据包。 *能够把解析结果显示给用户。
OSI参考模型
正如人们使用双方共同的语言才能进行交流一样,计算机 网络中通信双方也必须采用相同的协议才能进行通信。 所谓协议,就是当计算机连成网络时,规范它们之间通信 和交互作用的规则和技术过程。 为了便于处理通信中的层次问题,国际标准化组织(ISO) 开发了一个参考模型,称为开放系统互连 (OSI,Open Systems Interconnection) 参考模型 开放一词的含义是:只要遵循OSI标准,一个系统可以和 位于世界上任何地方的、也遵循OSI标准的其他任何系统 进行连接。