1 提笔
自己从事WiFi行业多年,说来惭愧,竟然没有静下心来给个总结。最近由于工作关系,又再次涉及WiFi相关内容,故而花了些时间总结出此文档。分享给同学们,同时也算是给自己一个交代。一杯敬明天,一杯敬过往?哈!
当然,还是那句话,如有不准确之处,还望各位同学批评指正。
2 802.11家族演进史
IEEE 802.11是现今无线局域网通用的标准,它是由电气和电子工程师协会(IEEE)所定义的无线网络通信的标准。从1997最初版发展到现在,历经20多年,俨然已是一个庞大的协议家族。从命名上就可以看出:a一直到z,单字母用完,aa一直到目前的ax,双字母继续发展。所以个人认为802.11是迄今为止局域网领域最为复杂的数据链路层协议,没有之一。
如此庞大的协议家族,每个都可以拿出来细谈,本文主要集中在802.11a/b/g/n上,也就是重要的几个milestone,WiFi5(11ac)和WiFi6(11ax)会后续另论。
协议重要的几个版本演进史:
图表 1 802.11版本演进
那大家可能会问,发展的幕后推手是什么呢?答案是速度。对,就是为了满足人类不断对速度的追求。这算不算是一种欲望呢?哈!不扯淡,看图,看看速度是怎么变快的。
图表 2 802.11物理层技术演进
上面这张图很重要,下面很大篇幅其实都是来解释这张图。
对了,有个小概念澄清下。虽然经常将Wi-Fi与802.11混为一谈,但两者并不等同。1999年工业界成立了Wi-Fi联盟,致力解决匹配802.11标准的产品的生产和设备兼容性问题。
3 802.11abgn物理层
我的经验是,要学习掌握某一数据通信协议,先找出其OSI模型,然后从底层(物理层)向上层层剥离。对于802.11来说,就2层:物理层和MAC层。
3.1 最初的802.11(July 1997)
主要提供三种物理层:红外技术,跳频扩频和直接序列扩频
- 红外技术,没有实际使用,不在讨论范围内
- FHSS+GFSK,得到1Mbps和2Mbps速率
- DSSS+BPSK/QPSK,得到1Mbps和2Mbps速率
3.1.1 FHSS和GFSK
何为FHSS跳频扩频呢?看如下图:
图表3 跳频
跳频为啥得到1Mbps和2Mbps数据速率呢?原因是GFSK调制解调技术。GFSK是调频,也就是说依靠不同频率的载波来传递二进制1和0。分为二阶式和4阶式:
- 1M的符号symbol率(每秒传输1M个symbol),采用二阶GFSK调制,每个symbol携带一个bit信息,对应就是1Mbps
- 采用四阶GFSK,每个symbol可以携带2个bit信息,对应就是2Mbps
图表4 二阶式GFSK
图表5 二阶式GFSK频域图
图表6 四阶式GFSK
图表7 四阶式GFSK频域图
3.1.2 DSSS和BPSK/QPSK
802.11最初版也定义了另外一种物理层DSSS,速率也可以达到1Mbps和2Mbps。同时定义了2.4G频段的频道分布。如图:
图表8 2.4GHz频谱图
那么何为DSSS直接序列扩频?如下图:
图表9 Barker码扩频原理1
图表10 Barker码扩频原理2
可以看出,DSSS就是利用扩频码(图中是11位的Barker码)承载要传输的二进制信息。这样做的目的其实就是把窄带信号分布在较宽的频带上,提高抗干扰能力。
编码好了,那就开始载波调制,空中传输了。DSSS采用PSK调相技术,即用载波的不同相位来传输二进制0和1. 具体又分为BPSK和QPSK。如下图:
图表11 BPSK
图表12 QPSK
可以看出,同样的载波,同样的周期里BPSK能携带1bit信息,QPSK能携带2bit信息。
那么 ==速率=符号速率x 单个符号编码位数/扩频码位数==
符号率固定为11M。
单个符号编码位数,BPSK=1,QPSK=2。
Barker码为11位。
至此,==BPSK 速率=11x1/11=1Mbps== ==QPSK 速率=11x2/11=2Mbps==
3.2 802.11b物理层
提供4种物理层:
- DSSS+BPSK/QPSK+Barker,没有变化,继续提供1Mbps和2Mbps物理层
- DSSS+QPSK+4-Bits CCK,引进5.5Mbps物理层
- DSSS+QPSK+8-Bits CCK,引进11Mbps物理层
可以看出,新增了5.5Mbps和11Mbps物理层。那怎么实现的呢?这就要谈到CCK扩频,区别于Barker 11位扩频,CCK采用8位扩频,配合QPSK调制,可以做到每个symbol携带4bit和8bit信息。
Again, 依然是这个公式:速率=符号速率x 单个符号编码位数/扩频码位数
不难得出,==4 bit CCK对应的速率=11MHz x 4 bit / 8 = 5.5Mbps== ==8 bit CCK对应的速率=11MHz x 8 bit / 8 = 11Mbps==
3.3 802.11a物理层
工作在5GHz,速率最高达到54Mbps,划重点:
- 开辟了新的频段5G
- 采用了OFDM
- 更高阶的QAM编码
我们来一一介绍。首先是频谱发生了变化。如下图:
图表13 802.11a频谱与频道
OFDM,正交频分复用。基本原理:
将信号分割为N个子信号,然后用N个子信号分别调制N个相互正交的子载波。OFDM 物理层将每个频宽20MHz 的频道划分52个子载波。其中有4 个子载波充当导波(pilot carrier),用以监控路径偏移与 ICI。至于其余 48 个子载波则是用来传递数据。子载波之问彼此相距0.3125MHz ,频道编号从-26 至 26。这就好比同样宽的马路,以前是单车道,现在变成了48个车道,马路没变,但通行能力增大了。
图表14 频域中的正交性
QAM,正交幅度调制。也就是同时利用了载波的振幅和相位来传递信息。如下图:
图表15 16 QAM和64 QAM
可以看出,16 QAM可以做到每个符号symbol携带4位二进制信息;64 QAM可以携带6位二进制信息。
至此,我们来算笔账,看看11a速率的组成和由来。
==物理层速率Mbps=子载波数x调制阶数x编码效率/OFDM符号发送间隔==
图表16 802.11a速率表
==举个栗子,对应调制方式16-QAM,编码效率为1/2。速率怎么算呢?在802.11a中,数据子载波是48个,16QAM调制对应的每个symbol可以携带4位信息,R=1/2是编码率(为了能抗干扰增加纠错能力,就要增加冗余度,即1/2可以理解为1个bit用2个bit来传输),一个OFDM symbol的传输时间是4us(可以理解为每秒传输0.25M个OFDM symbol)。即48x4x(1/2)x0.25M=24Mbps。==
讲到这儿,歇会儿,喝口水,让我们在54Mbps的速率上躺会儿。
3.4 802.11g物理层
与11a的技术相同,区别是工作在2.4GHz频段。==故最高速率也是54Mbps==。
但有一点要注意,11b也工作在2.4G频段,那11g就要兼容11b(CCK DSSS)。 如何做到呢?方法有二:
- 类似隐藏节点的解决办法 RTS/CTS机制
- CTS to Self机制
关于这两点,涉及到MAC层,在此先记住就行了,后面MAC章节会讲到。
3.5 802.11n物理层
革命尚未成功,同志还需努力,让我们继续攀升速率。802.11n关键技术:
- MIMO
- 40MHz信道
- Short Guard Interval
- OFDM改进
- 编码率的改进
啥?这么多新名词!淡定,让我们一个个来讲。
MIMO,多输入多输出。**MIMO是802.11n物理层的核心,指的是一个系统采用多个天线进行无线信号的收发。它是当今无线最热门的技术,无论是3G、IEEE 802.16e WIMAX,还是802.11n,都把MIMO列入射频的关键技术。MIMO主要有以下典型作用:
- 提高吞吐量
通过多条通道,并发传递多条空间流,可以成倍提高系统吞吐。如图17.
- 提高无线链路的健壮性和改善SNR
通过多条通道,无线信号通过多条路径从发射端到达接收端多个接收天线。由于经过多条路径传播,每条路径一般不会同时衰减严重,采用某种算法把这些多个信号进行综合计算,可以改善接收端的SNR。需要注意的是,这里是同一条流在多个路径上传递了多份,并不能够提高吞吐。如图18.
图表17 并发2条空间流
图表18 MIMO利用多径传输数据
OFDM 改进。OFDM在802.11a/g时代已经成熟使用,到了802.11n时代,它将MIMO支持的子载体从52个提高到56个。需要注意的是,无论802.11a/g,还是802.11n,它们都使用了4个子载体作为pilot子载体,而这些子载体并不用于数据的传递。所以802.11n MIMO将物理速率从传统的 ==54Mbps提高到了58.5 Mbps(即54*52/48)==。
编码率的改进
按照无线通信的基本原理,为了使信息适合在无线信道这样不可靠的媒介中传递,发射端将把信息进行编码并携带冗余信息,以提高系统的纠错能力,使接收端能够恢复原始信息。802.11n所采用的QAM-64的编码机制可以将编码率(有效信息和整个编码的比率)从3/4 提高到5/6。所以,对于一条空间流,在MIMO-OFDM基础之上,==物理速率从58.5提高到了65Mbps(即58.5乘5/6除以3/4)==。
Short Guard Interval
由于多径效应的影响,信息符号(Information Symbol)将通过多条路径传递,可能会发生彼此碰撞,导致ISI干扰。为此,802.11a/g标准要求在发送信息符号时,必须保证在信息符号之间存在800 ns的时间间隔,这个间隔被称为Guard Interval (GI)。802.11n仍然使用缺省使用800 ns GI。当多径效应不是很严重时,用户可以将该间隔配置为400ns,即每个OFDM符号连续时间从4us缩短为3.6u。对于一条空间流,可以将吞吐提高近10%,即从 ==65Mbps提高到72.2 Mbps==。对于多径效应较明显的环境,不建议使用Short Guard Interval (GI)。
图表19 SGI减小帧间距
40MHz 信道
这个比较好理解,对于无线技术,提高所用频谱的宽度,可以最为直接地提高吞吐。就好比马路拓宽了,车辆同行能力自然提高。传统的802.11a/g使用的频宽是20MHz,而802.11n支持将相邻两个频道绑定为40MHz来使用,所以可以最直接地提高吞吐。
图表20 40MHz信道
需要注意的是:对于一条空间流,并不是仅仅将吞吐从72.2 Mbps提高到144.4(即72.2×2 )Mbps。对于20MHz频宽,为了减少相邻信道的干扰,在其两侧预留了一小部分的带宽边界。而通过40MHz绑定技术,这些预留的带宽也可以用来通讯,可以将子载体从104(52×2)提高到108。按照 ==72.2x2x108/104进行计算,所得到的吞吐能力达到了150Mbps==。
总之,11n的速率就是这样一步步提上来的。汇总如下图:
图表21 11n速率攀升图
同样,那我们总结下11n的速率如何计算。
==速率=子载波数目子载波携带的数据位码率/每个OFDM符号持续时间*空间流数==
图表22 802.11n MCS速率表
==举个栗子,MCS 31,600Mbps怎么算出来的。套用上面公式,子载波数目为108,子载波携带的数据位为6(64QAM携带6位信息),编码率为5/6,每个OFDM符号持续时间3.6us,MIMO空间流为4. (108 x 6 x (5/6)/3.6) x 4 = 600Mbps==。
4 802.11 MAC层
802.11 MAC层协议涉及的东西特别多,在这我就主要介绍以下几点,以求能让大家了解MAC层基本的工作原理:
- DCF/PCF
- CSMA/CA工作机制
- RTS/CTS解决隐藏节点的问题
- 802.11 MAC层帧格式
DCF(Distributed Coordination Function):广泛使用的模式,主流模式,也就是AP和Station的通信模式。
图表23 DCF通信模式
PCF(Point Coordination Function): 很少应用,也就是Station和Station直接wifi连接进行通信。
图表24 PCF通信模式
CSMA/CA:
何为CSMA/CA?见下图:
图表25 CSMA/CA解决的问题
CSMA/CA工作原理:
图表26 CSMA/CA工作机制
RTS/CTS解决隐藏节点的问题:
何为隐藏节点呢?见下图:
图表27 隐藏节点问题
解决办法:
图表28 RTS/CTS机制解决隐藏节点问题
802.11 MAC帧格式:
图表29 802.11帧格式
继续分解Type和Sub Type字段:
图表30 Type和Sub Type字段分解
图表31 802.11 Frame Control字段分解
图表32 802.11 Duration字段解释
802.11帧有4个地址,如何应用呢?且听我分解:
图表33 802.11帧寻址机制
图表34 802.11帧Sequence和FCS字段
讲到这里,是不是感觉自己的脑力算力不够了呢?:) 没关系,那我们就举个栗子,讲一个完整的802.11通信过程。
5 完整的一个802.11WPA/WPA2-PSK通信过程
假如你有一个AP,一个Station,AP上配了一个SSID,启用了WPA2-PSK加密。这时候你在Station上点击连接无线名字为SSID的网络。之后发生了什么呢?如下:
图表35 STA连接AP
图表36 4次握手
图表37 四次握手续
图表38 上网冲浪
Over,是不是感觉很high?很high就对了,快乐工作,认真生活!!!
6 End
WiFi还在继续,因为人类对速度的追求是没有止境的,11ac已经达到1Gbps,11ax还在标准化中,有望到达11Gbps。。。
关于11ac和11ax,且听下回分解。。。
欢迎同学们批评指正,随时拍砖!
原文作者:LG
点击查看原文