Linux 下wifi 驱动开发(一)—— WiFi基础知识解析

 一、WiFi相关基础概念

1、什么是wifi 

我们看一下百度百科是如何定义的:

Wi-Fi是一种可以将个人电脑、手持设备(如pad、手机)等终端以无线方式互相连接的技术,事实上它是一个高频无线电信号。[1]  无线保真是一个无线网络通信技术的品牌,由Wi-Fi联盟所持有。目的是改善基于IEEE 802.11标准的无线网路产品之间的互通性。有人把使用IEEE 802.11系列协议的局域网就称为无线保真。甚至把无线保真等同于无线网际网路(Wi-Fi是WLAN的重要组成部分)。

wifi 英文全称是WIreless-FIdelity,翻译成中文就是无线保真,英文简称WiFi。

2、什么是wlan

无线局域网络英文全名:Wireless Local Area Networks;简写为: WLAN。它是相当便利的数据传输系统,它利用射频(Radio Frequency; RF)的技术,使用电磁波,取代旧式碍手碍脚的双绞铜线(Coaxial)所构成的局域网络,在空中进行通信连接;该技术的出现绝不是用来取代有线局域网络,而是用来弥补有线局域网络之不足,以达到网络延伸之目的,使得无线局域网络能利用简单的存取架构让用户透过它,实现无网线、无距离限制的通畅网络。

其实很多时候,人们将二者混用,其实wifi是实现wlan的一种技术(蓝牙、wimax等);

3、无线网VS有线网

无线网络相比有线网络,还是有许多的缺点的:

* 通信双方因为是通过无线进行通信,所以通信之前需要建立连接;而有线网络就直接用线缆连接,不用这个过程了。

* 通信双方通信方式是半双工的通信方式;而有线网络可以是全双工。

* 通信时在网络层以下出错的概率非常高,所以帧的重传概率很大,需要在网络层之下的协议添加重传的机制(不能只依赖上面TCP/IP的延时等待重传等开销来保证);而有线网络出错概率非常小,无需在网络层有如此复杂的机制。

* 数据是在无线环境下进行的,所以抓包非常容易,存在安全隐患。

* 因为收发无线信号,所以功耗较大,对电池来说是一个考验。

* 相对有线网络吞吐量低,这一点正在逐步改善,802.11n协议可以达到600Mbps的吞吐量。

二、IEEE 802.11协议

           IEEE802协议有点大,下面只介绍其中一些概念:

Ethenet和Wifi采用的协议都属于IEEE 802协议集。其中,Ethenet以802.3协议做为其网络层以下的协议;而Wifi以802.11做为其网络层以下的协议。无论是有线网络,还是无线网络,其网络层以上的部分,基本一样。

1、802.11简介

IEEE802家族是由一系列局域网络(Local Area Network,LAN)技术规格所组成,802.11属于其中一员。虽然WI-FI使用了802.11的媒体访问控制层(MAC)和物理层(PHY),但是两者并不完全一致。

IEEE802.11协议族成员如下:

802.11基本规格涵盖了802.11 MAC 以及两种物理层(physical layer):一是跳频展频(frequency-hopping spread-spectrum,简称FHSS)物理层,另一是直接序列展频(direct-sequence spread-spectrum,简称DSSS)物理层。802.11a所规范的物理层,主要是以正交分频多工(orthogonal
frequency division multiplexing,简称OFDM)技术为基础.802.11将PHY进一步划分为两个组成元件:一是物理层收敛程序(Physical Layer ConvergenceProcedure,简称PLCP),负责将MAC帧对映到传输介质;另一是实际搭配介质Physical Medium Dependent,简称PMD),负责传送这些帧。

2、802.11b

IEEE802.11b是无线局域网的一个标准。其载波的频率为2.4GHz,传送速度为11Mbit/s。IEEE802.11b是所有无线局域网标准中最著名,也是普及最广的标准。它有时也被错误地标为Wi-Fi。实际上Wi-Fi是无线局域网联盟(WLANA)的一个商标,该商标仅保障使用该商标的商品互相之间可以合作,与标准本身实际上没有关系。在2.4-GHz-ISM频段共有14个频宽为22MHz的频道可供使用。IEEE802.11b的后继标准是IEEE802.11g,其传送速度为54Mbit/s。

3、802.11网络包含四种主要实体原件

a -- 工作站(Station)

具有无线网络接入功能的电子设备(笔记本,手持设备等).

b -- 基站(Access Point)

802.11网络所使用的帧必须经过转换才能被传到其它不同类型的网络,具有无线至有线桥接功能的设备称为基站(Access Point,AP).此外基站还有其它功能.

c -- 无线介质(Wireless Medium)

802.11标准以无线介质(Wireless medium)在工作站之间传递帧.其所定义的物理层不只一种.

d -- 传输系统(Distribution System)

传输系统是基站间转送帧的骨干网络,通常就称为骨干网络(backbone network)当几部基站串连以覆盖较大区域时,彼此之间必须相互通信,才能够掌握移动式工作站的

行踪。而传输系统(distribution system )属于802.11的逻辑元件,负责将帧(frame)转送至目的地。大多数商用产品,是以桥接引擎(bridging engine)和传输系统介质(distribution system medium)共同组成传输系统.

4、802.11 工作方式  

802.11定义了两种类型的设备,一种是无线站,通常是通过一台PC机器加上一块无线网络接口卡构成的,另一个称为无线接入点(Access Point, AP),它的作用是提供无线和有线网络之间的桥接。一个无线接入点通常由一个无线输出口和一个有线的网络接口(802.3接口)构成,桥接软件符合802.1d桥接协议。接入点就像是无线网络的一个无线基站,将多个无线的接入站聚合到有线的网络上。无线的终端可以是802.11PCMCIA卡、PCI接口、ISA接口的,或者是在非计算机终端上的嵌入式设备(例如802.11手机)。

802.11的数据链路层由两个之层构成,逻辑链路层LLC(Logic Link Control)媒体控制层MAC(Media Access Control)。802.11使用和802.2完全相同的LLC之层和802协议中的48位MAC地址,这使得无线和有线之间的桥接非常方便。但是MAC地址只对无线局域网唯一

802.11的MAC和802.3协议的MAC非常相似,都是在一个共享媒体之上支持多个用户共享资源,由发送者在发送数据前先进行网络的可用性。在802.3协议中,是由一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection)的协议来完成调节,这个协议解决了在Ethernet上的各个工作站如何在线缆上进行传输的问题,利用它检测和避免当两个或两个以上的网络设备需要进行数据传送时网络上的冲突。在802.11无线局域网协议中,冲突的检测存在一定的问题,这个问题称为"Near/Far"现象,这是由于要检测冲突,设备必须能够一边接受数据信号一边传送数据信号,而这在无线系统中是无法办到的。

三、WiFi相关知识进阶

1、频谱划分

WiFi总共有14个信道,如下图所示:

1)IEEE 802.11b/g标准工作在2.4G频段,频率范围为2.400—2.4835GHz,共83.5M带宽

2)划分为14个子信道

3)每个子信道宽度为22MHz

4)相邻信道的中心频点间隔5MHz

5)相邻的多个信道存在频率重叠(如1信道与2、3、4、5信道有频率重叠)

6)整个频段内只有3个(1、6、11)互不干扰信道

2、SSID和BSSID

1)基本服务集(BSS)

基本服务集是802.11 LAN的基本组成模块。能互相进行无线通信的STA可以组成一个BSS(Basic Service Set) 。如果一个站移出BSS的覆盖范围,它将不能再与BSS的其它成员通信。

2)扩展服务集(ESS)

多个BSS可以构成一个扩展网络,称为扩展服务集(ESS)网络,一个ESS网络内部的STA可以互相通信,是采用相同的SSID的多个BSS形成的更大规模的虚拟BSS。连接BSS的组件称为分布式系统(Distribution System,DS)。

3)SSID

服务集的标识,在同一SS内的所有STA和AP必须具有相同的SSID,否则无法进行通信

SSID是一个ESS的网络标识(如:TP_Link_1201),BSSID是一个BSS的标识,BSSID实际上就是AP的MAC地址,用来标识AP管理的BSS,在同一个AP内BSSID和SSID一一映射。在一个ESS内SSID是相同的,但对于ESS内的每个AP与之对应的BSSID是不相同的。如果一个AP可以同时支持多个SSID的话,则AP会分配不同的BSSID来对应这些SSID。

BSSID(MAC)<---->SSID

3、无线接入过程三个阶段

STA(工作站)启动初始化、开始正式使用AP传送数据帧前,要经过三个阶段才能够接入(802.11MAC层负责客户端与AP之间的通讯,功能包括扫描、接入、认证、加密、漫游和同步等功能):

1)扫描阶段(SCAN)

2)认证阶段 (Authentication)

3)关联(Association)

4、WiFi - 组成结构

一般架设无线网络的基本配备就是无线网卡及一台AP,如此便能以无线的模式,配合既有的有线架构来分享网络资源,架设费用和复杂程度远远低于传统的有线网络。如果只是几台电脑的对等网,也可不要AP,只需要每台电脑配备无线网卡。AP为Access Point简称,一般翻译为“无线访问接入点”,或“桥接器”。它主要在媒体存取控制层MAC中扮演无线工作站及有线局域网络的桥梁。有了AP,就像一般有线网络的Hub一般,无线工作站可以快速且轻易地与网络相连。特别是对于宽带的使用,无线保真更显优势,有线宽带网络(ADSL、小区LAN等)到户后,连接到一个AP,然后在电脑中安装一块无线网卡即可。普通的家庭有一个AP已经足够,甚至用户的邻里得到授权后,则无需增加端口,也能以共享的方式上网。

时间: 2024-08-01 05:08:07

Linux 下wifi 驱动开发(一)—— WiFi基础知识解析的相关文章

Linux下spi驱动开发

转载至:http://www.embedu.org/Column/Column367.htm 作者:刘洪涛,华清远见嵌入式学院讲师. 一.概述 基于子系统去开发驱动程序已经是linux内核中普遍的做法了.前面写过基于I2C子系 统的驱动开发.本文介绍另外一种常用总线SPI的开发方法.SPI子系统的开发和I2C有很多的相似性,大家可以对比学习.本主题分为两个部分叙述,第一 部分介绍基于SPI子系统开发的理论框架:第二部分以华清远见教学平台FS_S5PC100上的M25P10芯片为例(内核版本2.6

转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】

转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至少需要个把月的时间,不信?那是你没做过. 本人做过2年的嵌入式驱动开发,usb占了一大半的时间.期间走了不少弯路,下面将我的血的经验教训总结下,为要从事和正在从事的战友们做一点点贡献吧:) 首先,扫盲: 要做的是阅读usb Spec(英文的哦,其实很多文章.书籍和资料真有水平的还是原创的好,就像食品

Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈.可以实现用户主平台数据通过SDIO口到无线网络之间的转换.SDIO具有数据传输快,兼容SD.MMC接口等特点. 对于SDIO接口的wifi,首先,它是一个sdio的卡的设备.然后具备了wifi的功能.所以.注冊的时候还是先以sdio的卡的设备去注冊的. 然后检測到卡之后就要驱动他的wifi功能了.显然,他是用sdio的协议,通过发命令和数据来控制的.以

Linux GPIO键盘驱动开发记录_OMAPL138

Linux GPIO键盘驱动开发记录_OMAPL138 Linux基本配置完毕了,这几天开始着手Linux驱动的开发,从一个最简单的键盘驱动开始,逐步的了解开发驱动的过程有哪些.看了一下Linux3.3内核文件下的driver目录,点开里面的C文件,感觉底层的Linux驱动机制还是很复杂的,还需要一段漫长时间的学习.现在开发的也不能说是叫做驱动,也只能说是驱动的应用,我们学习驱动也从应用逐步开始,往里面深入吧. 0.开发准备 内核源文件(当时我们编译内核时候的目录,很重要,编译驱动的时候需要依赖

基于335X平台Linux交换芯片驱动开发

基于335X平台Linux交换芯片驱动开发   一.软硬件平台资料 1.开发板:创龙AM3359核心板,网口采用RMII形式. 2.Kernel版本:4.4.12,采用FDT 3.交换芯片MARVELL的88E6321. 二.移植准备工作 1.熟悉88E6321的datasheet及Functional_Specification_Rev.0.05 2.熟悉设备树相关理论和用法 3.熟悉Linux网络驱动MDIO.PHY部分的软件流程 三.DTS文件修改 本工程的DTS文件以am335x-ice

arch linux下nvidia 驱动死机问题

好长一段时间了,自从某次arch滚动升级nvidia驱动后,就频繁的Xorg死掉.一直没能解决,只好换用nouveau.nouveau一般使用问题到不大,但是前几天nouveau升级后,也开始抽筋. 于是又尝试换回nvidia的专有驱动,死机情况依然未解.偶然在死机后,用ssh连接上后用dmesg抓到一个错误: NVRM: GPU at 0000:01:00.0 Has Fallen Off The Bus 一番搜索,找到这篇文章: http://www.cyberciti.biz/faq/de

linux下配置LAMP开发环境,以及常用小细节

本来安装没什么可说到.但是在linux当中容易会出现各种各样到问题.我安装以后导致各种问题 比如php无法正常解析,数据库无法关闭,Apache无法开启等等........ 所以搞得我比较郁闷,现在把过程分享下,大家不要在走弯路 最后按照这个顺序来装,避免出问题 [plain] view plaincopy sudo apt-get install mysql-server-5.0 sudo apt-get install apache2 sudo apt-get install php5 li

linux内核中驱动开发常见的类似多态

题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量. 思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可.算法相对简单,但是注意几个细节: 1:原图可能不连通. 2:有的连通分量只有一个点,当舍去该点时候,连通分量-1: 复习求割点的好题! #include<iostream> #include<cstdio> #include<vector> using namespace std; int n,m; vector<vector&

Linux下搭建Java开发环境

Red Hat Package Manager 简称rpm rpm格式的文件就是我们可以使用RPM命令进行管理的软件包格式的文件 JDK的安装 #sh /root/Desktop/jdk-6u23-linux-i586-rpm.bin .bin 可以使用sh命令来解压执行 Linux的用户的登录过程 /etc/profile /etc/profile.d(各个脚本) /etc/bash.bashrc /home/[username]具体用户目录/.bashrc .bash_profile JDK

Linux下使用Eclipse开发Hadoop应用程序

在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后下载eclipse的tar.gz包到/home/hadoop/这个目录下,直接解压缩,于是就会存在/home/hadoop/eclipse这个目录.在开发之前需要将hadoop0.20.2目录下面的一个jar复制到eclipse下面去.(注:在上一篇文章中我将hadoop0.20.2文件夹修改成了h