没有合适的资源?快使用搜索试试~ 我知道了~
PPPoE驱动程序设计方案.doc
需积分: 10 76 下载量 178 浏览量
2007-09-27
10:10:11
上传
评论
收藏 1.06MB DOC 举报
温馨提示
PPPoE驱动程序设计方案,此文档为别人的论文,写的相当的详细,很有学习价值!网上搜不到啊!为了加分,把传家宝都拿来了!
资源推荐
资源详情
资源评论
一种 PPPoE 驱动程序设计方案
PPPoE 驱动程序设计方案
1.1 概述
1.1.1 背景
随着宽带技术的突破,Internet 将急剧地改变我们面对的数字化环境。可以高速地提供
流媒体服务;可以方便地实现 VPN 服务;推进企业电子商务的实施;也给 ICP 提供新的机
会,以彻底解决宽带 Internet 赢利模式短缺的问题;同时促进了 Internet 数据中心(IDC)向各
行各业扩展。
宽带接入技术目前主要集中在以太网、广电网、ADSL 技术、无线接入技术上。
ADSL 全称非对称数字用户线路技术,是 DSL 的一种非对称版本,它利用数字编码技
术从现有铜质电话线上获取最大数据传输容量,同时又不干扰在同一条线上进行的常规话
音服务。
PPPoE
1
技术简化了用户接入设备的复杂程度。目前广泛使用的两种协议:Ethernet 和
PPP
2
。前者是局域网中的标准协议,后者则是用户拨号接入 Internet 的标准方式。而 PPPoE
正是利用了这两种广泛使用的技术,加以改进形成的。用户还是使用他熟悉的硬件以及类
似的软件进 Internet 的接入动作。从 ISP 的角度来看,PPPoE 也没有对其现存的网络结构进
行任何变更。
目前在 Windows 系统上,还没有实现对 PPPoE 协议的支持。第三方开发商提供的
PPPoE 客户端软件软件知名的有 Enternet300,WinPoET,RASPPPoE 等。其中 RASPPPoE
允许个人用户免费下载使用。
1.1.2 方案选择
我们要自己实现一个驱动程序
3
来支持 PPPoE 协议,有必要说明,这里仅仅能够给出实
现的方案和一些细节解释,至于编码实现本文就无能为力了。因为我们将要提到的这个驱
动程序目前仅仅是纸上谈兵,并没有能够使它真正运行起来。
首先,有必要了解清楚实现方案。PPPoE 的应用方式决定了驱动程序工作模型,所以
先来看一下 ADSL Modem 接入图。
1
PPP over Ethernet,参见 IETF RFCs,http://www.ietf.org。文档编号:RFC2516。
2
Point To Point Protocol, 参见 IETF RFCs,http://www.ietf.org。文档编号:RFC1661。
3
注:这种驱动程序模型仅能支持 Win98,Windows Me,Windows 2000 及后续版本。
1
一种 PPPoE 驱动程序设计方案
(From Internet)
上面这幅图表明了 PPPoE 工作连接方式。或者我们看下面这幅图,可能更容易理解。
可以看出,在 PC 上首先必须安装一块以太网卡,ADSL Modem 通过 10Base-T 双绞线
和网卡连接。PPPoE 驱动程序将通过控制以太网卡提供网络服务。
在 Windows 系统上,操作系统提供网络服务的系统模块称之为 NDIS
4
,PPPoE 驱动程
序实现模型大多是利用 NDIS 中间层驱动程序来实现。NDIS 驱动程序模型如下。
图中可以看出,我们不需要写操纵以太网卡的驱动程序,只需要在网卡驱动程序上面
4
网络设备驱动程序接口标准。参见 Windows DDK。http://www.microsoft.com/ddk/
2
一种 PPPoE 驱动程序设计方案
增加一个中间层驱动程序,来做 PPPoE 协议转换层。
Enternet300,WinPoET,RASPPPoE 都是基于这种方法实现。不过实现细节又有所不
同不同。下面介绍一下。
Enternet300 可以说是实现的最好一个 PPPoE 协议驱动程序。我们知道 PPPoE 协议中文
意思是以太网上的点对点协议,本质是 PPP 协议内容用以太网帧封装,通过 ADSL Modem
传递的一种技术。之所以说 Enternet300 实现比较好,就是因为它部分实现了 PPP 协议和
PPPoE 协议,不再用 Microsoft 的拨号网络系统组件的支持。绕过了拨号网络中 NdisWan 的
转换,可以实现较好的控制,节省了系统资源。
WinPoET,RASPPPoE 则利用了拨号网络提供的 PPP 协议支持。安装这种驱动程序之
前,要求用户首先必须安装拨号网络组件。这种实现的好处是显而易见的,避免了实现
PPP 协议的麻烦。实际上,PPPoE 协议本身并不比 PPP 协议复杂。
因此,我们的方案也将参照 RASPPPoE 的方式来做。利用 NDIS 中间层驱动程序机制,
实现一个具有 Wan miniport 上沿接口、Protocol 下沿接口的中间层驱动程序,使其工作在
NdisWan 和以太网卡驱动程序之间,完成 PPPoE 协议转换工作;利用 WAN miniport 提供的
上沿函数支持拨号网络的拨号服务,完成虚拟拨号;
1.2 编写程序的前提和准备
由于编写 Windows 驱动程序是一项比较艰巨的任务,尝试编写之前,很有必要首先弄
清楚要胜任这样的任务需要那些准备工作。
基础知识
熟练掌握 C 语言;
熟习 Win32 API,有过 Windows 下编程经历;
熟练掌握 Windows 内存管理机制,进程线程执行、调度、同步知识。
需要阅读的内容
Windows 2000 DDK
5
有关网络驱动程序部分;
PPPoE 协议;
PPP 相关协议
6
;
编译调试环境
Vc++6.0 或更高版本;
Windows 2000 DDK;
选用第三方调试工具 SoftIce 或 DDK 调试工具中 WinDbg,Kd,NTSD 之一;
下面将会逐步介绍以上提到的各部分内容。
5
以下除非说明,DDK 仅指 Windows 2000 DDK,驱动程序也是在 Windows 2000 环境下编写调试。
6
尽管我们不实现 PPP 协议,但也需要了解 PPP 协议和 HDLC 封装。参见 RFC1662。
3
一种 PPPoE 驱动程序设计方案
1.3 程序编制的主要内容
1.3.1 建议使用 passthru 的架构代码
实现这样一个 NDIS 中间层驱动程序,最好能具有一定的工作基础,让我们不至于所
有的东西都要从头开始。DDK 中附带的示范代码 passthru 是一个中间层过滤型的驱动程序。
框架结构非常清晰规范,正适合我们这样的初学者模仿练习。恰巧我们的驱动程序也是一
个中间层驱动程序,结构上有很大的共性。尽管在很多方面需要修改,但至少代码结构和
“即插即用”部分是完全不用修改的。因此建议就在 passthru 源代码基础上修改增加,完成我
们的驱动程序编写。为了书写方便,我们将要编写的驱动程序就叫做 TestPPPoE。
1.3.2 R/S
7
机制
接收/发送网络包,是整个驱动程序的主要工作内容,TestPPPoE 就将在这个过程中完
成 PPPoE 协议转换过程。出乎意料的是,在 NDIS 体系中,接收/发送网络包并不是一成不
变的 Send/Receive 两个函数。为了详尽地讲述收发机制,我们得首先弄清楚中间层驱动程
序工作原理。下一章将详尽介绍。
1.3.3 增加 WAN
8
支持
Windows NDIS 体系中包括对广域网的支持,NDIS 中定义了三种网络驱动程序工作环
境,无连接网络,面向连接网络,广域网环境。其中,广域网驱动程序环境支持前两种网
络设备。有关 NDIS 体系的详细描述,下一章将有介绍。
1.3.4 增加 TAPI
9
支持
WAN 类型驱动程序使用 PPP 协议来进行网络通讯,最典型的应用是通过固定电话拨号
上网,TAPI 是微软定义的电话接口 API,借此来屏蔽掉各种调制解调器的字符命令集的差
异,实现硬件无关性。TestPPPoE 利用了拨号网络,必然被要求支持 TAPI,TestPPPoE 也
将借此实现虚拟拨号过程。
7
Receive/Send ,指接收/发送网络包。
8
广域网。
9
电话 API。
4
一种 PPPoE 驱动程序设计方案
1.3.5 增加 PPPOE 支持
主要是根据 PPPoE 协议,实现对 PPPoE 协议的支持。
1.3.6 增加 HDLC-Like Frame
10
支持
HDLC-Like Frame 是一种封装方法,PPP 帧在数据线上发送之前要采用这种编码方法
封装。由于 NdisWan 传递给 TestPPPoE 的帧是用 HDLC 简单封装过的帧,TestPPPoE 将被
迫解开封装,重新组装成 PPPoE 帧格式,PPPoE 帧格式不需要 HDLC-Like Frame;从下层
网卡接收到 PPPoE 帧之后,TestPPPoE 又必须把 PPPoE 转换成简单封装过的 PPP 帧,传给
NdisWan。
1.4 方案中技术要点简介
1.4.1 NDIS 体系结构
尽管以上已经介绍了一些内容,不过估计在还没有仔细阅读 Windows DDK 之前,对
TestPPPoE 工作机制可能还是不甚明了。这一节将从 NDIS 的体系上试图讲清楚中间层驱动
程序工作原理。读者也可以开始阅读 DDK 文档了。需要说明的是,本文档并不能达到使
读者只需阅读本文档即可完成编写程序的目的。以下的介绍致力于对某些比较关键的地方
作一些解释。
NDIS 体系是遵循 OSI 七层模型的,不过具体划分层次的时候,并没有一一对应的层次
结构。NDIS 定义了物理硬件,小端口驱动,协议驱动,传输驱动接口四个层次。小端口驱
动程序负责驱动物理硬件,屏蔽物理硬件的差异,提供标准的 MiniportXXX 上沿接口;协
议驱动程序一般用作传输协议栈的底层驱动,它提供 ProtocolXXX 下沿接口,上沿接口是
私有的,被传输协议栈调用;传输驱动接口程序定义了核心模式的网络接口;有关这部分
内容的详尽解释,请参看 DDK “Network Architecture for Kernel-Mode Drivers”一节。
1.4.2 中间层驱动程序工作机制
中间层驱动程序是比较特殊的一种形式。我们来看看它的结构图。
它的上沿是 MiniportXXX 上沿接口,下沿却是 ProtocolXXX 下沿接口。这样的效果就
是,对下层的小端口驱动程序来说,它是一个协议驱动程序;对上层的协议驱动程序来说
它是一个小端口驱动程序。
DDK 说明这种驱动程序的一般典型用途有三种:
10
HDLC, High-level data link control,高层数据连接控制。参看 RFC1662.
5
剩余24页未读,继续阅读
资源评论
numenshane1
- 粉丝: 54
- 资源: 122
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功