80211B PCI网卡LINUX驱动程序设计_第1页
80211B PCI网卡LINUX驱动程序设计_第2页
80211B PCI网卡LINUX驱动程序设计_第3页
80211B PCI网卡LINUX驱动程序设计_第4页
80211B PCI网卡LINUX驱动程序设计_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

:京工业大学硕士学位论文802.11b PCI网卡linux驱动程序设计姓名:谭雯申请学位级别:硕士专业:嵌入式系统导教师:林平分;于忠臣20071001Abstract摘要摘要无线局域网是通信技术和计算机技术结合的产物,与有线局域网通过铜线或光纤 等导体传输不同的是,无线局域网使用电磁频谱来传递信息。同无线广播和电视类似, 无线局域网使用频道发送信息。这种无线技术使得无线周域网本身拥有了诸多明显的 优势,比如移动性、灵活性、组网方便等。随着IEEE802. llg标准与IEEE802. Hi安全协议的相继发布,结合IEEE802. Ix 端口访问控制协议,新的WLAN解决方案无论是从成本、传输速率,还是从安全机制 上都日趋完善,从而引发了 WLAN相关产业的蓬勃发展。本文主要阐述了 WLAN网卡linux驱动程序的设计。这是一个典型的嵌入式系统 课题,包括与内核的接口、与硬件的接口,与用户程序的接口。本课题的驱动实现都基于北京市嵌入式系统重点实验室自主研发并成功投片的 802. lib芯片组Elab2451,软件系统的设计和实现则基于x86平台和Linux操作系统, 其中还参考了一些Linux下的开源项目。关键词 Linux; 802.11b;驱动程序;ELAB2451ABSTRACTWireless LAN is a mix of telecommunication and computer science. Transmiting is a different one, Wireless LAN use electromagnetic spectrum, but LAN use copper wire or optic fibre. Similar to radio broadcasting and TV, the wireless LAN uses the channel to send information. The wireless LAN has a lot of obvious advantages, for example moving, flexibility, convenient for groups network, etc.With IEEE802.11g standard and IEEE802.11i protocol issue in succession, combine IEEE802.1x port access control, new WLAN solution is no matter from cost, transfer rate, or security mechanism, thus initiated the flourishing development of WLAN relevant industries.This paper has mainly explained the device driver of WLAN network card. This is a typical embedded systematic subject, including the interface with hardware, kernel, application program.In this subject, the design and realize of hardware base on the Elab2451, that is researched and developed by Beijing embedded system key Lab. The design and realize of software with the x86 platform and Linux operating system. The security system has consulted some open source project under Linux.Keywords Linux; 802.11b; Driver; ELAB2451独创性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。签名:潭雯 日期:2007-12-10关于论文使用授权的说明签名:本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅:学校可以公布论文的全部或部 分内容,可以釆用影印、缩印或其他复制手段保存论文。 (保密的论文在解密后应遵守此规定)V等,导师签名:日期:巧第章绪论第1章绪论1.1. 引言Linux操作系统以其独有的开放性、稳定性、高效率等特点,受到越来越多有 识之士的青睐。随着IT产业巨头纷纷宣布对Linux的支持,Linux正在迅速扩展其 应用市场,特别是服务器市场。在标准上,Li_niu与POSIX1003.1兼容,但它具有 比以住的UNIX系统更合理的内核结构。由于它的幵放性,各种被人们广泛应用的网 络协议都在该系统中得到了实现。目前人们所使用的Linux系统一般是指由Linux 核心、外壳(SHELL)及外围应用软件构成的发行版本。Linux发行版本是不同的公司 或组织将Linux核心、外壳、安装工具、应用软件有效捆绑起来的结果,所以种类 繁多,各有各的优缺点。但就其总体而言,这些发行版本具有对尽可能多的网卡的 支持。就象UNIX, Linux支持的网卡主要是以太网卡。如3COM、ACCTON、AT&T、 IBM、CRYSTAL、DLINK等众多品牌的以太网卡均有对linux操作系统的支持。ELAB2451芯片是北京工业大学嵌入式重点实验室自行研发的802. lib无线网卡 芯片组,该芯片是国内第一款自主产权的无线芯片,集成MAC和BB,为响应面向奥 运的wlan项目,与众多国内的公司联手设计无线AP,本人有幸参与了该项目的设 计和开发过程,并负责linux下的驱动程序设计,经历了从无到有的一个过程,对 linux内核、计算机体系结构、网络协议以及802. lib协议有了一个全新的认识。1.2. 本课题涉及的技术和理论 Linux驱动程序-Linux里许多代码都是设备驱动。内核实现多任务和多用户功能,相比较而言 代码很少。而大多数驱动相互独立,并且通过规范的接口与操作系统交互。当然, 你也可以很容易的编写一个新的设备驱动而不需要理解操作系统的内部机制。内核 开发人员可以集中精力关注内核功能的开发,而让设备开发人员专注开发设备驱动。 在LINUX上存储上千个声卡,以太网卡,IDE控制器,主板,数码相机,打印机等 等设备驱动是比价笨拙的方法。但LINUX这种幵发模式却开始有效的传幵。当然 LINUX这种模式并非没有问题。当一个新的设备投入市场,需要数月的时间才能吸 引LINUX程序员开发其设备驱动。同样,一些设备制造商由于某些原因不愿意发布 他们设备的编程资料,这也限制了 LINUX设备驱动的开发。幸运的是,由于LINUX 在全球幵始越来越受到关注,这样的公司也逐渐少了。Linux以它的高效性和灵活性著称。Linux模块化的设计结构,使得它既能在价 格昂贵的工作站上运行,也能够在廉价的PC机上实现全部的Unix特性,具有多任 务、多用户的能力。Linux是在GNU公共许可权限下免费获得的,是一个符合POSIX 标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还 包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的 X-Windows图形用户界面,如同我们使用Windows NT样,允许我们使用窗口、图 标和菜单对系统进行操作。802. lib 协议IEEE 802.11b无线局域网的带宽最高可达11Mbps,比两年前刚批准的IEEE 802.11标准快5倍,扩大了无线局域网的应用领域。另外,也可根据实际情况采用 5. 5Mbps、2 Mbps和1 Mbps带宽,实际的工作速度在5Mb/s左右,与普通的lOBase-T 规格有线局域网几乎是处于同一水平。作为公司内部的设施,可以基本满足使用要 求。IEEE 802. lib使用的是幵放的2. 4GB频段,不需要申请就可使用。既可作为对 有线网络的补充,也可独立组网,从而使网络用户摆脱网线的束缚,实现真正意义 上的移动应用。IEEE 802. lib无线局域网与我们熟悉的IEEE 802. 3以太网的原理很类似,都 是釆用载波侦听的方式来控制网络中信息的传送。不同之处是以太网釆用的是 CSMA/CD (载波侦听/冲突检测)技术,网络上所有工作站都侦听网络中有无信息发 送,当发现网络空闲时即发出自己的信息,如同抢答一样,只能有一台工作站抢到 发言权,而其余工作站需要继续等待。如果一旦有两台以上的工作站同时发出信息, 则网络中会发生冲突,冲突后这壁冲突信息都会丢失,各工作站则将继续抢夺发言 权。而802. lib无线局域网则引进了冲突避免技术,从而避免了网络中冲突的发生, 可以大幅度提高网络效率。.3.国内外硏究现状与发展趋势目前整个世界上802. llg芯片生产厂家不超过10家,能够批量供货的只有4-5 家。这些厂商已经全部转型为芯片组供应商。WLAN芯片组包括两个芯片,一个是基 带与MAC集成在一起的数模混合芯片(包括ADC/DAC),另一个是集成射频收发器和 射频功率放大器的射频芯片。这两个芯片目前绝大部分是釆用CMOS工艺。预计在今 后(从2004年起)两年左右的时间,目前市场上的这两个芯片将被全部集成在一起的 单一 CMOS芯片(Single-Chip)所取代。高集成度的目的不仅仅是降低芯片的成本, 而且降低设备的成本(BOM)和提高系统的可靠性。同时为WALN芯片与其他应用相结 合而衍生出市场所需求的新产品提供了必要的条件。第丨章绪论目前工业界的这些特点决定了本课题开发的难度。因为可以作为参考的工业界 现有的解决方案几乎不可能得到。实际上,世界上现有的WLAN网卡开发厂商(ODM) 也只有屈指可数的几家,大部分WLAN产品厂家自己都不设计和生产网卡。WLAN芯 片和网卡被几家少数公司垄断的市场现状是一个不争的事实。论文结构安排本文在此基础上阐述了作者在课题中的具体工作,主要包括以下内容: 第1章,绪论,主要介绍了 linux驱动和802. lib网卡的现状,以及论文研究 的内容和工作安排。第2章,802. lib网卡linux驱动程序分析方法,从整体上介绍了如何着手开 始写驱动程序,以及需要搜集的资料和分析的方法。第3章,驱动程序框架设计,进一步详细的描述了从设计到编码的过程,并将 linux驱动完成了最基本的功能。第4章,ELAB2451芯片数据收发设计,针对网络设备的基本功能,在ELAB2451 芯片上的具体实现,并进一步的了解该芯片。第5章,802. lib网卡驱动的功能处理,是针对lib的无线网卡特有的功能, 该章将描述对于无线网卡的特性如何从驱动上来体现。第6章,问题汇总,搜集并整理了在开发和调试过程中所遇到的问题,以及解 决方法,作为经验的积累。最后是总结。给出了对本论文的总结以及继续开展下一步研究工作的方向和目标。1.5.选题背景与意义北京市科学技术委员会“面向奥运的WLAN系统研发及产业推动项目”包括设备 芯片(基带部分和射频部分)、网卡及客户端、AP设备、AC设备、AS设备、网管、 计费及系统集成、安全和视频监控等课题。本课题是网卡linux驱动程序。面向奥 运的WLAN系统研发及产业推动项目旨在组织北京市信息产业的研发、硬件制造、软 件集成、电信运营和内容服务等相关产业单元,促进国内WLAN乃至整个信息产业的 产业化进程,同时通过全新和安全的解决方案,丰富数据服务业务,满足用户需求, 服务数字奥运。本课题网卡驱动是ffLAN运行系统中客户联网的设备驱动程序,同 时也是AP设备的绝不可缺少的部分。第2章802.11b网linux驱动程序分析方法在饿艮 i 幵序动砍 程薛统_ S収络 bu 山女勺 X X 1片如2,芯:如了了以成与完参立还个独时作 脆此 工 二 白 有it系 中 韩_和0 _觀g德 t让1A 職 f 本的进 5板掘 3写 6 编第2章802. lib网卡linux驱动程序分析方法一个典型的驱动程序,大体上可以分为注册设备、定义功能函数、卸载模块几 个部分。Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备,Linux 系统支持多种设备,这些设备的驱动程序之间有一些共同的特点,将这些共同的特 点提取出来,便可指导802. lib无线网卡的驱动编写方法。2.1 Linux网卡驱动基础2.1.1 设备分类Linux系统将设备分成三种类型:字符设备、块设备和网络接口。三种类型的 设备特点如下:字符设备(character device)字符设备是能够像字节流一样被访问的设备,由字符设备驱动程序来实现这种 特性。字符设备驱动程序通常至少需要实现open、close、read和write系统调用。 字符终端和串口就是字符设备的两个例子,它们能够用流抽象的表示。字符设备可 以通过文件系统节点来访问,它和普通文件之间的惟一差别在于,对普通文件的访 问可以前后移动访问指针,而大多数字符设备是只能顺序访问的数据通道。然而, 也存在和数据区特性类似的字符设备,访问它们时也可前后移动访问指针。块设备(block device)和字符设备一样,块设备也是通过/dev目录下的文件系统节点被访问的。块 设备上能够容纳文件系统。在大多数Linux系统中,块设备包含整数个块,而每块 包含1KB或2的几次幂字节的数据。Linux允许应用程序像字符设备那样读写块设 备,可以一次传递任意多字节的数据。因而,块设备和字符设备的区别仅仅在于内 核内部管理数据的方式,也就是内核和驱动程序的接口不同。像字符设备一样,块 设备也是通过文件系统节点被访问的,它们之间的差异对用户来说是透明的。块设 备驱动程序除了给内核提供和字符设备驱动程序一样的接口以外,还提供了专门面 向块设备的接口,不过这些接口对于那些从/dev目录下某个目录项打开块设备的用 户和应用程序都是不可见的。另外,块设备的接口必须支持挂装(mount)文件系统。网络接口(network interface)任何网络事务都要通过一个网络接口,即一个能够和其他主机交换数据的设 备。通常接口是个硬件设备,但也可能是个纯软件设备,比如回环(loopback)接口。 网络接口由内核中的网络子系统驱动,负责发送和接收数据包,它无须了解每项事第2章802.11b网!: linux驱动fi!序分析方法务是如何映射到实际传送的数据包的。尽管Telnet和FTP连接都是面向流的,它们 都使用了同一个设备,但这个设备看到的只是数据包,而不是独立的流。由于不是面向流的设备,因此将网络接口映射到文件系统中的节点比较困难。 Linux式的访问网络接口的方法是给它们分配一个惟一的名字,比如ethO,但这个 名字在文件系统中不存在对应的节点项。内核和网络驱动程序间的通信完全不同于 内核和字符设备以及块设备驱动程序之间的通信,内核调用一套和数据包传输相关 的函数,而不是read、write等。2.1.2 Linux内核技术一个完整可用的操作系统主要由4部分组成:硬件、操作系统内核、操作系统 服务和用户应用程序,如图2-1所示。用户应用程序操作系统服务操作系统内核硬件系统橾作系统组成部分图2-1操作系统组成部分 Picture 2-1 The component of operation system用户应用程序是指那些字处理程序、Internet浏览器程序或用户自行编制的各 种应用程序;操作系统服务程序是指那些向用户所提供的服务被看作是操作系统的 部分功能的程序。在Linux操作系统上,这些程序包括X窗口系统、shell命令解 释系统以及那些内核编程接口等系统程序;操作系统内核程序即是本节将要讲述部 分,它主要用于对硬件资源的抽象和访问调度。Linux内核的主要用途就是为了与计算机硬件进行交互,实现对硬件部件的编 程控制和接口操作,调度对硬件资源的访问,并为计算机上的用户程序提供一个高 级的执行环境和对硬件的虚拟接口。 什么是内核模式 操作系统内核的结构模式主要可分为整体式的单内核模式和层次式的微内核模 式。在单内核模式的系统中,操作系统所提供服务的流程为:应用主程序使用指定 的参数值执行系统调用指令(int x80),使CPU从用户态(User Mode)切换到核心 态(Kernel Model),然后操作系统根据具体的参数值调用特定的系统调用服务程序,而这些服务程序则根据需要再底层的一些支持函数以完成特定的功能。在完成了应 用程序所要求的服务后,操作系统又从核心态切换回用户态,返回到应用程序中继 续执行后面的指令。因此概要地讲,单内核模式的内核也可粗略地分为三个层次: 调用服务的主程序层、执行系统调用的服务层和支持系统调用的底层函数。 内核的模块Linux内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、 文件系统模块、进程间通信模块和网络接口模块。进程调度模块用来负责控制进程 对CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保 证内核能及时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机 器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程 使用比实际内存空间更多大的内存容量。并可以利用文件系统把暂时不用的内存数 据块会被交换到外部存储设备上去,当需要时再交换回来。文件系统模块用于支持 对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个 通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其它操作系 统兼容的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交 换方式。网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程 序来挂起.(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间 被挂起,而在操作完成后才可继续运行。如图2-2所示是内核几个主要模块的关系 图。2.1.3 用户空间和内核空间我们通常将执行模式称做内核空间和用户空间,这两个名词不仅说明两种模式 具有不同的优先权等级,而且说明每个模式都有自己的内存映射,即自己的地址空 间。以我们常用的386来讲,是32位的CPU, 32即意味着2的32次方即4G的地址 空间,LINUX内核将其中最高的1G字节(从虚地址OxCOOOOOOO到OxFFFFFFFF),用 于内核本身,称为内核空间;而将较低的3G字节(从虚地址0x0到OxBFFFFFFF), 用作各个进程的空间,称为用户空间。虽然每个进程都拥有自己的3G地址空间,但 是系统空间的1G却为所有进程所共享。而且虽然虚存占据了整个虚存空间的最高的 1G字节,但是物理的内存却是从最低的地址(0)幵始。2.1.4 驱动程序模块化Linux内核是一个整体是结构,因此向内核添加任何东西,或者删除某些功能,用户程序I 闲数0 I用户级内核级系统問丨丨1接口文件广系统高速缓冲宇符设备I 块设备设备驱动裡广 P进祝问通进R控制 子系统调度程序.内(Vt埋硬件控制内核级硬It硬件级图2-2内核模块关系图 Picture 2-2 The relation of kernel modules都十分困难。为了解决这个问题引入了内核机制。从而可以动态的想内核中添加或 者删除模块。模块不被编译在内核中,因而控制了内核的大小.然而模块一旦被插入内核,他 就和内核其他部分一样.这样一来就会增加一部分系统开销。同时,如果模块出现问 题,也许会带来系统的崩淸。 模块的实现机制:启动时,由函数void initmodules0来初始化模块,因为启动时很多时候没 有模块.这个函数往往把内核自身当作一个虚模块。如由系统需要,则调用一系列以 sys开头的函数,对模块进行操作.如:sys_creat_moclulesO , sys_init_modules() , sys_deldte_modules()等等。这里会用到一些模块的数据就 结构,在/usr/scr/Limix/include/Linux/module.h中,模块的加入有两种方法: 一是手动加入:如:insmod tnodulename.另一种是根据需要,动态的加载模块:如执 行命令:$inount -1 msdos /dev/hdd /mnt/d时系统便自动加载FAT模块,以支 持MSDOS的文件系统。本文中的lirmx网卡驱动程序将采用手动加载的方式。写一个模块,必须有一定的多进程编程基础,因为程序不是以一个独立的程序第2章802.Ub网卡linux驱动程序分析方法的来运行的。另外,因为模块需要在内核模式下运行,会遇到在内核空间和用户空 间数据交换的问题。一般的数据复制函数无法完成这一个过程,因此系统己入了一 些特殊的函数以用来完成内核空间和用户空间数据的交换。对于每一个内核模块来 说,必定包含两个函数intinitjnoduleO这个函数在插入内核时启动,在内核中 注册一定的功能函数,或者用他的代码代替内核中某些函数的内容。因此,内核可 以安全的卸载。intcleanupjnoduleO当内核模块卸载时调用,将模块从内核中清 除。802. 11b无线网卡综述2. 2.1 无线网卡工作原理WLAN是计算机网络与无线通信技术相结合的产物,它以无线多址信道作为传输 媒介,提供传统有线局域网的功能,能够使用户真正实现随时、随地、随意的宽带 网络接入。WLAN技术使网上的计算机具有可移动性,能快速、方便地解决有线方式不易实 现的网络信道的连通问题。WLAN利用电磁波在空气中发送和接收数据,而无需线缆 介质。WUN是计算机网络与无线通信技术相结合的产物,它以无线多址信道作为传 输媒介,提供传统有线局域网的功能,能够使用户真正实现随时、随地、随意的宽 带网络接入。WLAN技术使网上的计算机具有可移动性,能快速、方便地解决有线方式不易实 现的网络信道的连通问题。WLAN利用电磁波在空气中发送和接收数据,而无需线缆 介质。一般来说,Linux核心己经实现了 OSI参考模型的网络层及更上层部分。网络 层的实现依赖于数据链路层的有效工作。网卡的驱动程序就是数据链路层与物理层 的接口。通过调用驱动程序的发送例程向物理端口发送数据,调用驱动程序的接收 例程从物理端口接收数据。驱动程序提供了面向操作系统核心的接口和面向物理层的接口。驱动程序的操 作系统接口是一些用于发现网卡、检测网卡参数以及发送接收数据的例程。当驱动 程序幵始运作时,操作系统首先调用检测例程以发现系统中安装的网卡。如果该网 卡支持即插即用,那么检测例程应该可以自动发现网卡的各种参数;否则你就要在 驱动程序运作前,设置好网卡的参数供驱动程序使用。当核心要发送数据时,它调 用驱动程序的发送例程。发送例程将数据写入正确的空间,然后激活物理发送过程。驱动程序面向物理层的接口是中断处理例程。当网卡接收到数据、发送过程结束,或者发现错误时,网卡产生一个中断,然后核心调用该中断的处理例程。中断 处理例程判断中断发生的原因,并进行响应的处理。比如当网卡接收到数据而发生 中断时,中断处理例程调用接收例程进行接收。驱动程序的工作参数因网卡性质的不同而不同,大致包括I/O端口号、中断号、 DMA通道、共享存储区等。输入输出端口号又被称为输入输出基地址,当网卡工作 于端口输入输出模式时被使用。端口输入输出模式需要CPU的全程干预,但所需硬 件及存储空间要求较低。CPU通过端口号指定的空间与网卡交换数据。中断号是网 卡的中断序号,只要不与其它设备冲突即可。当网卡使用DMA方式时,它要使用DMA 通道批量传输数据而不需要CPU的干预。对于一块具体的网卡,如果网卡支持完全自动检测,那么一个参数也不用指定, 驱动程序的检测例程会自动设定所需参数。一般情况,你需要人工设定这些参数的 一部分。如果你的网卡使用端口输入输出模式,你要设定端口号和中断号。如果你 的网卡使用DMA模式,你要设定DMA通道和中断号。如果你的网卡使用共享存储区 的模式,那你就得设定共享存储区的地址范围。2.2.2 802.11b网卡技术指标工作频段:2400-2483. 51Hz,频段配置见表2-1:表2-1 802. lib频段配置表 Table 2-1 802.lib standard channel and frequency 信道标号中心频率2412MHz2417MHz2422MHz2427MHz2432MHz2437MHz2442MHz2447MHz2452MH7.信道低端/高端频率2401/2423MHZ2411/2433MHZ2416/2438MHZ2421/2443MHZ2426/2448MHZ2431/2453MHz2431/2453MHZ2436/2458MIIZ2441/2463MHZ 24B7MH7.102446/2468MHZ 24fi2MHz112451/2473MHZ 9.24fi7MH7.2456/2478MHZ 2472MH7.132461/2483MHz动态速率控制:网卡设备具备动态速率转换的自适应功能,允许数据速率自 动调整到适应无线通信变化的特性,即当射频情况变差或出现严重干扰时, 速率将回落,反之速率将会自动提高,最高至54Mbps。无线覆盖范围:网卡的无线覆盖能力在开阔环境的覆盖范围应能够达到150 -300m.室内半开放的办公环境覆盖范围达到3050ra。參安全机制:支持802.1X&802. lli的安全认证协议,支持WEP、TKIP、CCMP 数据安全加密。2. 2. 3 基本运作模式802.11b运作模式基本分为两种:点对点模式和基本模式。点对点模式是指无 线网卡和无线网卡之间的通信方式。只要PC插上无线网卡即可与另一具有无线网卡 的PC连接,对于小型的无线网络来说,是一种方便的连接方式,最多可连接256 台PC。而基本模式是指无线网络规模扩充或无线和有线网络并存时的通信方式,这 是802. lib最常用的方式。此时,插上无线网卡旳PC需要由接入点与另一台PC连 接。接入点负责频段管理及漫游等指挥工作,一个接入点最多可连接1024台PC (无 线网卡)。当无线网络节点扩增时,网络存取速度会随着范围扩大和节点的增加而变 慢,此时添加接入点可以有效控制和管理频宽与频段。无线网络需要与有线网络互 连,或无线网络节点需要连接和存取有线网的资源和服务器时,接入点可以作为无 线网和有线网之间的桥梁。两种模式如图2-3所示:MS a 星无中心拓扑有中心拓扑图2-3 802.11b网络拓扑示意图 Picture 2-3 802.11b network analysis2. 2. 4 拓扑结构由802. 11的标准设备AP和STA出发,可以根据需要组成多种网络拓扑结构 总的来说,这些拓扑结构可以划分为以下三种:北京T业大学I程硕士 立论文-基本服务集(Basic Service Set, BSS)网络、独立基本服务集(Independent BSS, IBSS)网络、扩展服务集(Extent Service Set, ESS)网络,IBSS表示的就 是Adhoc方式的终端独立组织成一个网络单元,在这种方式下没有固定的基础设施, 所有的终端直接与其他终端互连,网络组织非常独立。BSS表示的就是基础模式, 至少一个AP作为网络的管理设备,管理所有的STA,向STA提供接入和传输服务。 为了扩展无线局域网的覆盖范围,增加终端的移动性,多个BSS可以联合组成扩展 服务集(ESS) a扩展服务集通过扩展服务集识别号(ESSID)来区分,AP通过基本服务 集识别号(BSSID)来区分。多个AP工作在不同的无线信道,通过有线分布式系统互 连。终端可以在ESS所覆盖的范围内自由移动,并随着移动从ESS内的一个AP切换 到另一个AP。2.2.5 媒体访问控制(MAC)层MAC层的目的是为上层提供对共享介质PHY的访问控制功能。802. 11标准釆用 CSMA/CA (载波监听多路访问/冲突避免),而标准以太网采用CSMA/CD (载波监听 多路访间/冲突监测)。由于在同一个信道上利用无线收发机无法同时进行收发,因 此,80211栗取措施仅是为了避免冲突,而不对冲突进行广播。MAC层具有以下主要功能:无线介质访问;网络连接;提供身份认证和数据保 密服务;在数据喊发送之前,MAC必须首先利用下面的两种方式之一获得网络连接: 载波监测多路访问:一个类似于802. 3的线路争用协议。802. 11规范称之为分布式 访问控制方式(Distribution Control Function, DCF)。给予优先级别的访问: 个无竞争访间协议(对介质的访问受到统一的控制)。802. 11规范称之为中心网 络控制方式(PCF Point Control Functiofl)。DCF方式可以在大多数惰况下满足 数据的传输,这也是80211无线局域网对介质获取访问权的主要方式。这里介绍一 下DCF的工作方式CSA / CA: CSMA / CA的含义是载波侦听多路访问/冲突避免,为 了确保监测信息的正确性,该方式同时采用两种方式来对信道进行监测:物理监测 和虚拟载波监测。物理监测是对介质进行实际的监测,具体的做法是监测射频单元 是否收到信号:虚拟载波监听事实上是一个计数器,叫做NAV (Networ Allocation Vector),NAV计数器的初始值是上一次发送顿的持续时间字段值(802. 11 MAC中贞 头的内容)(如果是在网络的初始阶段,则该值定义在网络的管理信息库中),然后 倒计时至0,在倒计时的同时,该计数器的值从AP定期发送的信标(Beacon)中不 断得到更新。当NAV值减到0,且PHY控制机制表明信道空闲时,这个工作站就可 以发送巾贞了。整个过程可以参考图2-4。12-第2章802.11b网linux驱动程序分析方法up)。所以实际上很多在initialize中的工作可以 放到这里来做。比如资源的申请,硬件的激活。如果dev-open返回非0 (error), 则硬件的状态还是down。open方法另一个作用是如果驱动程序做为一个模块被装 入,则要防止模块卸载时设备处于打幵状态。在open方法里要调用 MOD_INC_USE_COUNT 宏。关闭(stop) close方法做和open相反的工作。可以释放某些资源以减少系统 负担。close是在设备状态由up转为down时被调用的。另外如果是做为模块装入 的驱动程序,close里应该调用MOD_DEC_USE_COUNT,减少设备被引用的次数,以使驱动程序可以被卸载。发送(hard_start_xinit)所有的网络设备驱动程序都必须有这个发送方法。在 系统调用驱动程序的xmit时,发送的数据放在一个sk_buff结构中。一般的驱动 程序把数据传给硬件发出去。也有一些特殊的设备比如loopback把数据组成一个 接收数据再回送给系统,或者dummy设备直接丢弃数据。如果发送成功, hard_start_xmit方法里释放skjjuff,返回0(发送成功)。如果设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论