序言
wifi在iot领域变得越来越重要,但是大部分开发者在使用wifi的时候只会调用一些已经实现的接口,对其实现原理没有去深究,这样久而久之技术没有长进不说,遇到问题也非常难解决,也无法实现一些基于wifi的新方案设计,于是我想写一个wifi系列的文章,旨在帮助自己总结wifi相关的知识点,也顺便做一些学习分享
本文主要是聊一聊wifi和网络相关的一些概念,以便在之后的学习中看到一些概念不会产生模模糊糊的感觉
需要了解的一些wifi和网络相关术语
LAN:局域网
WAN:广域网
SSID:无线网络名称
BSSID:用来标识一个BSS,其格式和MAC地址一样,是48位的地址格式。一般来说,它就是所处的无线接入点的MAC地址
Band:频率范围,wifi目前有2.4G和5G两个频段
Wireless Security
主要有WEP、WPA、WPA2和RC4、TKIP、AES,先有个概念后续再做详细的解释
WEP:采用RC4的RSA加密技术(已经淘汰,只能用于802.11 bg,n不支持该方式);
WPA:采用新的TKIP算法,TKIP算法保留了RC4所以也有其弱点
WPA2是WPA的第2个版本,采用AES算法和CCMP加密
wpa和wpa2的两种验证方式(EAP和PSK)区别
1 WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2(工业级别,暂不做研究)
2 WPA-Personal / WPA2-Personal 其实就是 WPA-PSK / WPA2-PSK(家用级别,我们研究这个)
是以 ”pre-share key” 或 ” passphrase” 的验证模式来代替 IEEE 802.1X/EAP 的验证模式 ,PSK 模式下不须使用验证服务器 ( 如 RADIUS Server), 所以特别适合家用
Region
主要是根据不同地区的要求调整ap的发射功率
设置好AP所处的Region之后,这些信息就会在AP发送的Beacon帧中包含;通过这个AP连接到无线网络上的Station,从Beacon帧中了解到这些Region信息,并且根据这些信息中的规定和AP进行通信
RTS/CTS
sta A和sta B都在ap的覆盖范围,但是A和B都不在他们双方各自的覆盖范围中,所以A和B是不可见的(不可见的节点互相被称作隐藏节点),但是ap是知道A和B的存在的
当A想要通信的时候,发送消息给ap(所有消息都通过ap转发),如果这时候B也发送给ap
消息,ap会同时受到A B的请求,这是不允许的(无线网络中,同一时刻不能有多个人传输数据),会导致数据发送失败,引起重传
若只有A B两个隐藏节点,问题不大,若在ap网络中隐藏节点很多,sta发送的数据有很多,势必会引起很多重传,这样会严重影响网络负载,这时候,就应该开启rts/cts机制
什么是rts/cts机制?
举个例子
A想要通信的时候,先广播发送RTS给AP,告诉AP“它想要通信”,
AP收到RTS之后,会广播发送CTS,告诉所有在AP范围内的Station”A将要通信,这是其他节点知道A要进行通信,就不会发送消息了
A收到RTS后代表ap已经告诉其他sta我要通信,所以我现在可以进行通信,那么接下来A就可以进行通信了
RTS/CTS使用需要注意的点
1.rts/cts 如非必要 不要用 会影响到效能
2.除非是 wireless client端很散乱分布,rf频谱干扰严重的情况下,才考虑使用rts/cts
Beacon Interval
表示无线路由定期广播其SSID的时间间隔,不设置一般为100ms
Beacon Interval间隔调高 有助于 client 端省电
Beacon Interval间隔调低可以加快client 连接的速度
以Beacons 封包发送SSID的速率是1Mbit/S.
TIM(Traffic indication Map )
用于单点传输
进入省电模式时,ap 会帮 clinet 暂存frame,然后client 会睡着,利用时间已经跟ap同步,一段时间后client会很精准的"醒来",醒来会先检查Beacon包里是否含有TIM 参数,若有,则代表AP告诉client
"client 请注意我有暂存frame要丢给你"
这时候client端要全然"清醒",然后发出PS-POLL frame给ap
“说我全然清醒了 快点把你bufferframe 丢给我”
然后ap会把暂存的帧丢给client
DTIM/TIM的值(最大255)就是n个Beacon的间隔,醒来一个,默认设定为1,若设定为10则代表10个beacon间隔client醒来一次
DTIM
DTIM原理同TIM,不过DTIM适用于多点,发出后会丢出广播讯框
dtim 是指间隔多少becaon 才含dtim讯框
DTIM 高:client 睡觉时间长,比较省电,缺点在于效能可能变差
DTIM低:提升效能,降低ap缓存frame负担,对clinet 比较不省电
Listen-Interval
AP 广播Beacon 的周期为Beacon-Interval,STA 可以自由选择Beacon-Interval的整数倍作为自己的Listen-Interval,比如10。
代表STA 每隔10个beacon周期,接收Beacon并解码其中的TIM,如果TIM 指示没有数据缓存,STA 就可以立刻转入Doze 状态,如果TIM 指示其有数据缓存,STA 就要向AP 发一个竞选控制包Poll,AP 在收到Poll 后就可以向该Poll 的源STA 发送一个为它缓存的数据包。
Channel
信道是对频段的进一步划分(将5G或者2.4G的频段范围再划分为几个小的频段,每个频段称作一个Channel)
不同国家支持的信道号不同
Channel Width
它表示一个Channel片段的宽度,信道宽度可以是20M 40M等
例如大部分802.11协议会选择20M的宽度,但是802.11N的协议,就会是40M HZ的Channel Width(N模式有一个特点就是可以把两个Channel合并,通过提高ChannelWidth来提高吞吐量)
下面以20M为例
1-14信道划分(中国1-13 台湾,美国,加拿大1-11 日本1-14[14仅支持802.11b])
2.4g频段1 6 11信道是没有交叠的,其他信道和信道之间是有重叠的,没有明显界限,会相互干扰(例如之前tuya的产测2信道发包设备在3 4信道也可以接收到)
wireless medium
无线媒介,工作站之间传递帧的方式,有RF物理层和红外物理层两种方式
DS(distribution system)
分布式系统:ap和ap直接进行通信,把多个ap串起来形成一个分布式系统,属于802.11逻辑组件,负责将帧转发至目的地址,分步式系统是接入点之间转发帧的骨干网络,一般是以太网
BSS
基本服务集
802.11网络的基本组件,由一组彼此通信的工作站构成,有两种类型的BSS类型
第一种是IBSS(我们不关心这个,iot领域用不到),通信方式为Station<->Station
第二种是基础结构形网络,其通信方式是Station<->AP<->Station,也就是所有无线网络中的设备要想通信,都得经过AP
wifi网络拓补结构(只介绍一种iot领域最常用的)
wifi的历史和发展
wifi的未来,wifi6(了解)
1 速度更快
2 wpa3加密,加密性更强
3 wifi功耗更低