802.11 学习笔记

一、网络服务

802


11

总共提供
9

种服务:

分布式

distribution

接入点收到帧

就会使用分布式服务将真传送至目的地。

整合

integration

该服务由分布式系统提供,它让分布式系统得以链接至非
IEEE802.11

网络

关联(

association




移动式工作站向接入点登记,分布式系统就可以依据登记信息推断哪个移动式工作站该使用哪个接入点。仅仅有关联之后才干进行身份验证。在身份验证完毕之前,接入点会丢弃来自工作站的全部数据。

又一次关联(
association

当移动式工作站在同一个扩展服务区域里的基本服务区域之间移动时,它必须随时评估信号的强度并在必要时切换所关联的接入点。又一次关联是由移动式工作站所开启,当信号强度现实最好切换关联对象时便会又一次关联。

取消关联

disassociation

结束现有关联。

身份验证



authentication




认证是
STA

在扫描到合适的
AP

之后

仅仅有通过认证该
STA

才干通过
AP

使用
WLAN

现有的认证方式有:
(1)open

,即不须要认证,仅仅要交互一个
null


(2)shared key

,须要一个
4

次握手的过程
(3)802.11i

,须要到认证server认证


STA

完毕认证之后仅仅须要发送
ReAssociation Request



然后等待
ReAssociationResponse

帧完毕关联也就完毕了整个切换的过程。

解除身份验证

机密性

Wep

等一些加密机制

MSDU

传递

MAC Service Data Unit

负责将数据传送给实际的接收端。

传输功率控制

Transmit Power Control

简称
TPC

欧洲标准要求操作与
5G
Hz

频带的工作站必须可以控制颠簸的传输功率,避免干扰其它相同使用
5G
Hz

频带的用户。

动态频率选择

Dynamic Frequency Selection

简称
DFS

无线局域网必须可以检測到雷达系统并选择未被雷达系统所使用的频率。



网络类型

基本服务集



basic service set ,


简称

BBS




由一组相互通信的工作站构成。

BSS

分为两种

独立型网络
i
ndependent BSS


通常由少数几个工作站为了特定目的而组成的临时性网络。

基础结构型网络
Infrastructure networks


有接入点。接入点负责基础结构型网络的全部通信。

扩展服务区域

extended service set


ESS

将几个
BSS

串联称为
extended service set

。全部位于同一个
ESS

的接入点使用同样的服务组标示符

service identifier


简称
SSID


三.

MAC




数据链路层的两个子层

逻辑链路控制
LLC (Logical Link Control)

子层

媒体接入控制
MAC (Medium Access Control)

子层

§

与接入到传输媒体有关的内容都放在
MAC

子层


LLC

子层则与传输媒体无关

无论採用何种协议的局域网对
LLC

子层来说都是透明的

网卡及其功能

§

§

数据的封装与解封

发送时将上一层交下来的数据加上首部和尾部,
成为以太网的帧。接收时将以太网的帧剥去首部和尾部,

然后送交上一层

§

链路管理

主要是
CSMA/CD

协议的实现

§

编码与译码

即曼彻斯特编码与译码

§

网卡从网络上每收到一个
MAC

帧就首先用硬件检查
MAC

帧中的
MAC

地址假设是发往本站的帧则收下,然后再进行其它的处理

否则就将此帧丢弃,不再进行其它的处理







802.11


帧主要有三种类型



数据帧、控制帧、管理帧

 

数据帧



帧格式:

Protocol

:代表MAC
协议版本号

Type

与Subtype
:制定使用帧类型(
控制帧、数据帧、管理帧)

Address1

:帧接收端

Address2

:发送端的地址

Address3

:供接入点与分布式系统过滤之用

Duration



媒介使用权

,RTS


传送段计算

RTS

帧结束后还须要多长时间用于帧交换。

地址信息


功能


ToDS


FromDS


Address 1 (

接收端)



Address 2 (

发送端)



Address 3


Address 4


IBSS


0


0


DA


SA


BSSID


未使用


To AP (

基础结构型)



1


0


BSSID


SA


DA


未使用


From AP (

基础结构型)



0


1


DA


BSSID


SA


未使用


WDS (
桥接器)


1


1


RA


TA


DA


SA

帧送至server

相应第二行

Address1

: RA/BSSID             
Address2 : 
SA/TA            
Address3 : 
DA

 

帧来自分布式系统

相应第三行

Address1

: RA/DA             
Address2 : TA/BSSID              
Address3 : SA


控制帧:

通常与数据帧搭配使用,负责区域的清空、信道的取得、载波监听的维护,并于收到数据时予以肯定确认,借此提高工作站之间数据传送的可靠性。

由于无线收发器通常仅仅有半双工工作模式



即无法同一时候首发数据



为防止冲突



802.11


同意工作站使用

request to send(RTS)




clear to send




CTS




信号来清空传送区域。

RTS/CTS进行清空

节点1有个帧待传,首先发送RTS帧,预约无线链路的使用权、要求接收到这一帧的其它工作站保持沉默。

接收到RTS帧,接收端会以CTS帧应答,RTS会令附近的工作站保持沉默。

RTS/CTS完毕交换后,可发送frame。

媒介訪问权仅仅留给单播帧使用,组播和广播帧仅仅是简单的传送。

这样的机制一般仅仅用在高用量的环境下以及传输竞争比較激烈的场合,对低用量环境而言,暂不须要。

 

 

RTS帧

Duration:媒介使用权,RTS传送段计算RTS帧结束后还须要多长时间用于帧交换。

Address1:大型帧的工作站地址

Address2:RTS的发送端

Rts的Duration

CTS帧

Address1:接收端的字段,拷贝于RTS的发送端地址。

 

ACK帧

 

除了这

3


种控制帧,还有

PS-POLL


帧(省电轮询)。

管理帧

负责监督,用来增加或退出无线网络以及处理接入点之间关联的转移事宜。

为了限制广播或组播管理帧所造成的副作用,收到管理帧后,必须加以查验。仅仅有广播或者组播帧来自工作站当前所关联的BSSID时,它们才会被送至MAC管理层。唯一例外是beacon帧。

 

帧主体分两种:固定字段、信息元素。

固定字段(

Fixed-Length Management Frame Components

):数据使用长度固定的字段。一共同拥有10种。

 

1. Authentication Algorithm Number


身份验证算法编号:

0

:开放系统身份验证

1

:共享密钥身份验证

2~65535;

保留

2. Authentication Transaction Sequence Number


身份验证处理序列号


用以追踪身份验证进度。

3.beacon interval


字段


用来设定

beacon


信号之间相隔多少时间单位。

4. Capability Information

性能信息

传送

beacon


信号的时候,它被用来通告网络具备何种性能。

5. Current AP Address

移动式工作站用此字段表明当前关联的接入点的
MAC

地址,便于关联与又一次关联的进行。

6. Listen interval

工作站为节省电能,临时关闭
802.11

的天线,休眠中的工作站会定期醒来聆听往来消息,以推断是否有帧缓存于接入点。

事实上就是以
Beacon interval

为单位所计算出的休眠时间。

7. Association ID

关联标示符

工作站与接入点关联时就会被赋予一个关联标识符来协助控制和管理。

8. Timestamp

时间戳

用来同步
BSS

中的工作站。

9. Reason Code

原因代码

对方不适合增加网络时,工作站会发送
disassociation

(取消关联)或
deauthentication

(解除身份验证)帧作为响应。该字段用以表示产生该原因代码的理由。

10. Status Code

表示某项操作成功或失败。

信息元素:

管理帧的可变长组件。

一般管理帧的信息元素


Element ID


名称


0


服务集标示符(SSID)


1


支持速率Supported Rates


2


跳频參数集FH Parameter Set


3


直接序列參数集DS Parameter Set


4


无竞争參数集CF Parameter Set


5


传输指示映射Traffic Indication Map (TIM)


6


IBSS
參数集


7 (802.11d)


Country


8 (802.11d)


Hopping Pattern Parameters


9 (802.11d)


Hopping Pattern Table


10 (802.11d)


Request


11-15


Reserved; unused


16


Challenge text


17-31


保留


32 (802.11h)


功率限制Power Constraint


33 (802.11h)


Power Capability


34 (802.11h)


发送功率控制请求Transmit Power Control (TPC) Request


35 (802.11h)


发送功率控制报告TPC Report


36 (802.11h)


所支持的信道Supported Channels


37 (802.11h)


信道切换声明Channel Switch Announcement


38 (802.11h)


測量请求Measurement Request


39 (802.11h)


測量报告Measurement Report


40 (802.11h)


静默Quiet


41 (802.11h)


IBSS
动态选频(DFS


42 (802.11g)


ERP information


43-49


Reserved


48 (802.11i)


强健安全网络Robust Security Network


50 (802.11g)


扩展支持速率Extended Supported Rates


32-255


Reserved; unused


221


Wi-Fi
保护訪问Wi-Fi Protected Access

管理帧类型

管理帧的主体包括的固定字段与信息元素是用来运送信息的。管理帧主要有下面几种,负责链路层的各种维护功能。

1.


Beacon

(信标)帧

主要用来声明某个网络的存在。定期传送的信标可让
station

得知网络的存在,从而调整增加该网络所必需的參数。

Beacon

(信标)帧

2. Probe Request


探查请求

移动工作站利用
Probe Request

探查请求帧来扫描区域内眼下有哪些
802.11

网络。

Probe Request

包括
2

个字段

SSID

:可被设定为特定网络的
SSID

或不论什么网络的
SSID

Support rates

:移动工作站所支持的速率。

3.Probe Response




假设
Probe Request

所探查的网络与之兼容,该网络就会以
Probe Response

帧响应。送出最后一个
beacon

帧的工作站必须负责响应所收到的探查信息。

Probe Request

帧中包括了
beacon

帧的全部參数,
station

可依据它调整增加网络所须要的參数。

Probe Request

4. IBSS announcement traffic indication map (ATIM)

IBSS

的通知传输仅仅是消息(
ATIM

)帧

5. Disassociation and Deauthentication


取消关联、解除验证

取消关联、解除验证帧

6.

Association Request

关联请求帧

7. Reassociation Request


又一次关联

8. Association Response and Reassociation Response

关联响应,又一次关联响应

9. Authentication


身份验证帧

身份验证帧

Authentication Algorithm Number

:用于算法选择

10. Action frame

帧传送、关联与身份验证的状态

状态图

State1

:未经认证且尚未关联

State2

:已经认证但尚未关联

State3

:已经认证且已经关联

帧等级分类


 


控制帧


管理帧


数据帧


第一级帧


Request to Send (RTS)


Probe Request


ToDS


FromDS

位都设为
0

的全部帧


Clear to Send (CTS)


Probe Response


 


Acknowledgment (ACK)


Beacon


 


CF-End


Authentication


 


CF-End+CF-Ack


Deauthentication


 


 


Announcement Traffic Indication Message (ATIM)


 


第二级帧


None


Association Request/Response


None


 


Reassociation Request/Response


 


 


Disassociation


 


第三级帧


PS-Poll


Deauthentication


不论什么帧,包括
ToDS


FromDS

位都设为
1

的全部帧

madwifi

1

madwifi

的结构,主要是有三层,
hal

是硬件层,然后是
ath

层,在之上的是
802.11

层,整个
madwifi

源代码中重要的就是
hal

目录(硬件),
ath

目录,
ath_rate

目录


net80211

目录(
802.11

协议相关),
tools

目录(一些工具)

当驱动被载入的时候,它会取探測物理设备是否存在,然后通过
ath_attach()

函数安装此设备。同一时候,驱动会自己主动创建一个虚拟的网络接口,通过函数
ieee80211_create_vap( )

实现。这个虚拟网络接口的初始状态为
INIT

,在此状态下硬件不会接收数据包。

当实际的
AP

接口開始工作(比如通过
ifconfig ath0 up

命令激活),驱动会将对硬件进行适当的设置而且进入
SCAN

状态。


SCAN

状态下,
AP

会扫描全部它支持的通道。

扫描包含两个方面,一个是主动扫描
,即
AP

会发送适当的请求报文;一个是被动扫描
,即
AP

监听临近
AP


beacons


SCAN

状态下,
AP

不会数据传输报。

在全部的通道都扫描完毕以后,
AP

选择一个无线信号强度最低的通道然后进入
RUN

状态(
ap_end( )

)。


RUN

状态下,
AP

运行一个存取节点的普通操作。它约每隔
100ms

向外广播一个
beacon

消息(
ath_beacon_send( )


,

应答其他
AP

发送的请求,应答终端发送来的认证消息和连接
/

重连接消息,而且数据传输包。

当接口被关闭的时候,
AP

会发送取消认证消息到每个连接了的终端,然后释放所它们所占有的资源并进入
INIT

状态。

须要注意控制消息的使用,如:
RTS


CTS


ACK

,它们是被驱动
HAL

(硬件抽象层)控制的。

结构体
ieee80211com

中定义了各种帧处理函数指针

3

数据接收

大多数的
CSMA/CA

机制被贯彻在
HAL

或者硬件中。当一个新的包到达时,开源的驱动部分是通过中断来获取通知的

ath_intr( )


包被
linux


tasklet

来处理(
ath_rx_tasklet( )

),这个包所在
skb

结构被找到而且

它的目标节点正确。

函数
ieee80211_input( )

接收各种不同类型的包,在这个函数中管理报文包被传递给
ieee80211_recv_mgmt( )

函数处理,数据包被做相关的处理后变成以太帧格式然后传送给
linux

内核

netif_rx( )


或者

假设工作在桥模式下

则通过
dev_queue_xmit( )

发送此数据包

4

数据的发送

Linux

内核通过
dev->hard_start_xmit

轮流调用虚拟接口的
ieee80211_hardstart()

函数和物理接口的
ath_hardstart

()
函数实现包的传输。

ath_hardstart

()
函数将以太格式的包封装成
802.11

格式的包。

ath_tx_start

()
函数将须要加密的包进行加密处理

并将保存此包的
skb

映射到
DMA

缓冲

并依据包的优先级选定一个传输队列

QoS control



ath_tx_txqaddbuf( )

函数将映射后的缓冲

buffer


插入到选定的传输队列里面并通知
HAL

開始传输。

管理帧由
802.11

层产生。它们通过
ieee80211_mgmt_output

()函数发送。

Beacon

消息由
HAL

触发。当发送
beacon

消息的时间到达

HAL

会制造一个中断

然后调用函数
ath_beacon_send( )

来发送。
Beacon

消息直接被传递到
HAL

并发送。

HAL

成功发送完一个包后也会产生一个中断来通知驱动。

函数
ath_tx_tasklet()

会更新发送相关的信息。假设有工作在监视模式

monitor mode


的虚拟port存在

这个包会在函数
ath_tx_capture()

中被传递给监视接口。


madwifi

载入到内核的顺序

insmod wlan.o

insmod ath_hal.o

insmod ath_rate_amrr.o

insmod ath_rate_onoe.o

insmod ath_rate_sample.o

insmod wlan_acl.o

insmod wlan_ccmp.o

insmod wlan_scan_ap.o

insmod wlan_scan_sta.o

insmod wlan_tkip.o

insmod wlan_wep.o

insmod wlan_xauth.o

insmod ath_pci.o

802.11 学习笔记

时间: 2024-10-11 22:05:56

802.11 学习笔记的相关文章

802.11学习笔记1-WIFI参数含义

研究下wifi参数的含义 #The word of "Default" must not be removed Default CountryRegion=5 CountryRegionABand=7 CountryCode= SSID=Dennis2860AP NetworkType=Infra WirelessMode=9 Channel=0 BeaconPeriod=100 TxPower=100 BGProtection=0 TxPreamble=0 RTSThreshold=

c++ 11学习笔记--Lambda 表达式(对比测试Lambda ,bind,Function Object)

所有c++ coder都应该为这个语法感到高兴,说的直白一点,Lambda 表达式就是函数对象的语法糖. 还是直接看对比栗子吧,抄袭的是msdn的官网 该示例使用 for_each 函数调用中嵌入的 lambda 向控制台打印 vector 对象中的每个元素是偶数还是奇数. 使用lambda #include <algorithm> #include <iostream> #include <vector> using namespace std; int main()

Derby-10.11学习笔记汇总

鲁春利的工作笔记,谁说程序员不能有文艺范? Derby-10.11学习笔记(一)简单介绍 http://luchunli.blog.51cto.com/2368057/1716255 Derby-10.11学习笔记(二)脚本介绍 http://luchunli.blog.51cto.com/2368057/1716464 Derby-10.11学习笔记(三)

c++ 11学习笔记--智能指针

C++ 98的 std::auto_ptr已经被彻底遗弃了,取而代之的是unique_ptr.shared_ptr与weak_ptr.大部分时候我们自己手动申请内存方式内存都是没有问题的,问题是如果程序很大了之后,一个复杂的对象,多次拷贝的代价非常高,很多地方都会使用到,只存在一份拷贝显然是最好的,这个时候对象生命周期的管理就会很复杂,所以c++引入了智能指针. 任何事物都会有两面性. Shared_ptr 摘录于Effective C++, 3rd Edition, Item 17: 在 st

c++ 11学习笔记-- 常量表达式(constexpr)

最新在弄android ndk相关的,惊奇的发现最新的ndk10的版本已经gcc4.9了,我印象中,gcc4.8就支持C++0x11,14的支持,gcc再次走到了llvm的前面,LLVM最新的版本3.4.2应该只支持c++ 11,如果是同样的c++代码我一直认为llvm的效率会明显强过gcc. 废话不多说,让我们开始学习c++ 11吧,说实话我之前一直都很抗拒c++新的语法,感觉太难接受了,现在看来不熟悉也不行了. 常量表达式(constexpr) 常量表达式机制是为了: 提供了更多的通用的值不

4.802.11协议笔记:PCF工作模式

序 在前面我们叙述过,在802.11的MAC层中,分成了两种基本工作模式: DCF(Distributed Coordination Function) PCF(Point Coordination Function) 我们已经介绍过了DCF的工作模式,而PCF模式当前只有协议中进行了规范,而在实际产品中几乎很少见到.所以就像在802.11权威指南和CWNA书本中所述一样,对于PCF的机制仅仅是协议规定,而几乎没有产品,所以纯粹对协议希望有深入了解的话,那么才需要对此进行阅读.这里仅仅是将笔者读

IEEE802.11 学习笔记

一.概论 1.1.简介 IEEE802家族是由一系列局域网络(Local Area Network,LAN)技术规格所组成,802.11属于其中一员. 载波检测多重访问/碰撞检测(Carrier Sense Multiple Access network with Collision Detection,简称CSMA/CD)规格,与(通常误称的)Ethernet有关,802.5则是Token Ring 规格.此外,802协议堆叠还包括其他成员.802.2所规范的链路层(link layer),称

Kafka-2.11学习笔记(三)JavaApi访问kafka

欢迎访问:鲁春利的工作笔记,学习是一种信仰,让时间考验坚持的力量. Kafka底层是基于Scala语言实现的,但是也提供了Java的API接口. Java实现的消息生产者 package com.lucl.kafka.simple; import java.util.Properties; import kafka.javaapi.producer.Producer; import kafka.producer.KeyedMessage; import kafka.producer.Produc

【C++11学习笔记】类型判断的type_traits学习

一.简单的type_traits 我理解的type_traits是利用C++模板特性和static.enum特性定义编译器常量,例如 //std::integral_constant源码 typelate<class T, T v> struct integral_constant { static const T value = v; typedef T value_type; typedef integral_constant<T, v> type; operator valu