WiFi协议解析
一、发展由来
Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。认证(Certification)意味着产品与在相同频段内运行的其他Wi-Fi CERTIFIED设备具有互操作性。
二、数据包结构(802.11 Mac)
l Frame Control: 帧控制字段,含有许多标识位,表示本帧的类型等信息。
l Duration ID: 本字段一共有16bit,根据第14bit和15bit的取值,本字段有以下三种类型的含义:
(1)当第15bit被设置为0时,该字段表示该数据帧所传输要使用的时间,单位为微秒。(表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算)
(2)当第15bit被设置为1,第14bit也为0时,该字段用于让没有收到Beacon新标帧(管理帧的一种)公告免竞争时间。
(3)当第15bit被设置为1,第14bit为1时,该字段主要用于STA告知AP其关闭天线,将要处于休眠状态,并委托AP暂时存储发往该STA的数据帧。此时该字段为一种标识符,以便在STA接触休眠后从AP中获得为其暂存的帧。
l Address: 802.11与802.3以太网传输机制不同,802.11无线局域网数据帧一共可以有4个MAC地址,这些地址根据帧的不同而又不同的含义,但是基本上第一个地址表示接收端MAC地址,第二个地址表示发送端MAC地址,第三个地址表示过滤地址。
l Seq-ctl: 顺序控制位,该字段用于数据帧分片时重组数据帧片段以及丢弃重复帧。
l Frame Body: 帧所包含的数据包。
l FCS **帧校验和:**主要用于检查帧的完整性。
Frame Control字段:
802.11将帧的类型分为3种,分别为:管理帧、控制帧、数据帧,这三种类型的帧相互搭配使用,共同完成802.11无线网络的接入、数据传输、退出等功能。其帧类型主要在Frame Control字段中进行说明,802.11帧中Frame Control字段格式如下:
- Protocol 表示802.11协议版本,目前802.11数据帧只有一个版本,该字段为0。
- Type 表示802.11帧的类型,Type=00表示本帧为管理帧,Type=01表示本帧为控制帧,Type=10表示本帧为数据帧。
数据帧:负责在工作站之间传递数据,可能会因为所处的网络环境不同而有所差异;
控制帧:通常与数据帧配合使用,负责区域的清空、信道获取以及载波监听的维护,并在收到数据帧后予以正面应答,借此以促进工作站之间数据传输的可靠性;
管理帧:负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。
一般来说控制帧、管理帧都是不需要加密传输的,而数据帧则需要加密后再进行传输,另外一些特殊用途的NULL数据帧也是不加密的,比如power save status的帧。
-
SubType 具体到某一类型的802.11帧,更加详细的表明其类型:
-
To DS 表示该帧是否向无线工作站STA发送的帧。(表明该帧是否是BSS向DS发送的帧 )
-
From DS 表示该帧是否向AP上行网络发送的帧。
-
**More Fragment **表示该帧是否有更多的分片。
-
Retry 表示该帧是否需要重传。
-
**Power Management **如果此bit为1,则表示STA在发送完本帧后,将关闭天线处于休眠状态。(AP不允许关闭天线休眠,只有STA可以,因此AP发送的数据帧该字段恒为0)
-
More Data 表示在该帧传送完成后,将会有更多的数据,此bit只用于管理数据帧,在控制帧中此bit恒为0。
-
Protected 如果该bit为1,表示该帧受到链路层安全协议的保护。
-
Order 如果字段为1,表示帧和帧片段将会严格按照次序传送,但是这样会对发送与接收端带来额外的开销。
上述四种情况如下图所示:
IBSS表示该数据帧从STA发往AP上行以太网:
TO AP表示该数据帧从STA发往AP:
From AP表示该数据帧从AP发出,发往STA:
WDS表示该数据帧用于无线网桥键发送数据:
三、WiFi扫描方式
WIFI扫描方式分为主动扫描和被动扫描两种,主动扫描是指STA主动去探测搜索无线网络;被动扫描则是指STA只会被动的接收AP发送的无线信号。下面分别对两种扫描方式进行简要介绍。
主动扫描
主动扫描情况下,STA会主动在其所支持的信道上依次发送探测信号,用于探测周围存在的无线网络,STA发送的探测信号称为探测请求帧(Probe Request)。探测请求帧又可以分为两类,一类是未指定任何SSID,一类是指定了SSID的。(注意:Probe Request帧发送方式是广播)
1.探测请求帧不指定SSID
探测请求帧里面如果没有指定SSID,就是意味着这个探测请求想要获取到周围所有能够获取到的无线网络信号。所有收到这个广播探测请求帧的AP都会回应STA,并表明自己的SSID是什么,这样STA就能够搜索到周围的所有无线网络了。(注意:如果AP的无线网络中配置了Beacon帧中隐藏SSID的功能,此时AP是不会回应STA的广播型探测请求帧的,STA也就无法通过这种方式获取到SSID信息。)
2.探测请求帧指定SSID
探测请求帧中指定了SSID,这就表示STA只想找到特定的SSID,不需要除指定SSID之外的其它无线网络。AP收到了请求帧后,只有发现请求帧中的SSID和自己的SSID是相同的情况下,才会回应STA。
被动扫描
被动扫描情况下,STA是不会主动发送探测请求报文的,STA只是被动的接收AP定期发送的信标帧(Beacon帧)。(注意:Beacon帧是AP周期性发送的)
AP的Beacon帧中,会包含有AP的SSID和支持速率等信息,AP会定期的向外广播发送Beacon帧。例如AP发送Beacon帧的默认周期为100ms,即AP每100ms都会广播发送一次Beacon帧。STA通过在其支持的每个信道上侦听Beacon帧,来获知周围存在的无线网络。(注意如果无线网络中配置了Beacon帧中隐藏SSID的功能,此时AP发送的Beacon帧中携带的SSID是空字符串,这样STA是无法从Beacon帧中获取到SSID信息的。即,STA要通过主动扫描来获取网络信息)
手机或电脑的无线网卡,一般来说这两种扫描方式都会支持;(例如,宿舍某位同学的WiFi信号被其隐藏,你要使用网络,那么你会先向他询问SSID,然后进行主动扫描并连接),一般VoIP语音终端通常会使用被动扫描方式,其目的是可以节省电量。
四、信道结构
2.4GHz信道
当两个网络试图在同一频段运行,或其频段重叠时,就会发生干扰。所用的两种调制方法具有不同的频带使用特点,因此占用不同的频宽。
传统802.11和802.11b(以及11g的11b兼容率)使用的DSSS方法使用22 MHz的带宽。这是来自编码系统使用的11 MHz“chip”速率。无线局域网信道列表#cite_note-3当2个或更多的 802.11b 发射器在相同的空间操作时,其信号必须被衰减到少于 -50dBr 同时/或频率至少有 22 MHz 的间距以防干扰。无线局域网信道列表#cite_note-IEEE802.11-2012-依据这个间距,11b的频段号要隔开4个才会不冲突,这就是常见的“1/6/11"选择来历;在日本可以使用的14频段也不冲突。
802.11a/g/n使用的OFDM方法占用的带宽为16.25 MHz。实际标记的带宽为20 MHz:四舍五入为信道宽度的倍数,可以提供一些保护频带,使信号在频段边缘充分衰减。这个防护带主要用来防止适应老式路由器的频段占用问题,在硬件更好的新式路由器上一般不是问题。OFDM的频段只要隔开3个就能互不冲突(即上图的1/5/9/13),但由于遗留11b设备设置频段6较多,一般也会采用“1/6/11”选择。
5G信道
WLAN标准协议将5GHz频段分为24个频宽为20MHz的信道,且每个信道都为独立信道。各个国家开放的信道不一样,目前中国5GHz频段开放使用的信道如下:
-
20MHz带宽: 36、40、44、48、52、56、60、64、149、153、157、161、165。
-
40MHz带宽:由两个相邻的,无间隔的20MHz带宽组成
中国40MHz带宽可用信道:36、44、52、60、149、157。
-
80MHz带宽:由两个相邻的、无间隔的40MHz带宽组成
中国80MHz带宽可用信道:36、52、149。
-
160MHz带宽:两个连续的80MHz带宽组成(160),也可以由两个不连续的80MHz带宽组成(80+80)
中国160MHz带宽可用信道:36。
-
中国需避开的雷达信道:52、56、60、64。
信道捆绑规则: 信道的组合方式有规范约束,并不是任意两个相邻的信道就可以组合起来。例如频段的 36 和40信道可以组合成一个 40MHz 的捆绑信道,44和48信道也可以组合成一个 40MHz的捆绑信道,但40 和44 信道却不可以组合成一个40MHz 的捆绑信道,这就是规则固化。 同样的,只有36、40、44、48可以组合成一个 80MHz 的捆绑信道, 40、48 、52、56却不能进行捆绑。165信道不支持做信道捆绑,因此165信道即使配置成40MHz频宽 ,实际使用上依然为20MHz频宽。
五、WiFi安全
WEP
)
WAP
WPA的原理是以一把128位的钥匙和一个48位的初向量(IV)以RC4流密码算法来加密。WPA超越WEP的主要改进就是在使用中可以动态改变密钥的*“临时密钥完整性协议”(Temporal Key Integrity Protocol,TKIP)*,加上更长的初向量,这可以击败知名的针对WEP的密钥截取攻击。除了认证跟加密外,WPA对于所载资料的完整性也提供了巨大的改进。WEP所使用的CRC(循环冗余校验)先天就不安全,在不知道WEP密钥的情况下,要篡改所载资料和对应的CRC是可能的,而WPA使用了名为“Michael”的更安全的消息认证码(在WPA中叫做消息完整性查核,MIC)。进一步地,WPA使用的MIC包含了帧计数器,以避免WEP的另一个弱点——重放攻击(Replay attack)的利用。
WPA2
WPA2是在802.11i颁布之后,WIFI联盟随即推出的最新无线安全标准,它遵循802.11i标准,以下是它采用的模式:
WPA2-PSK= PSK + AES + CCMP
PSK:PreShared Key,预共享密钥,它是一种802.11身份验证方式,以预先设定好的静态密钥进行身份验证,此密钥必须手动进行传递,即是我们的手机连接WIFI热点时需要输入的密码。
AES:Advanced EncryptionStandard,高级加密标准。AES是美国NIST制定的替代DES的分组加密算法。AES具有优秀的密钥扩展方案,灵活的密钥生成算法。算法对内存要求极低,即使在限制较大的环境中也能获得很好的性能。分组和密钥被设计成可以在三种长度中自由选择的形式,AES具有128、192、256位的密钥。802.11规定CCMP中的AES使用的是128位密钥,它的加密块大小也是128位。
CCMP:Counter modewith Cipher-block chaining Message authentication code Protocol,计数器模式及密码块链消息认证码协议。它是基于高级加密标准(AES)的CCM(CTR with CBC-MAC)模式。CCM是一种通用的模式,它可以使用在任何成块的加密算法中。CCM模式使用CTR(Counter Mode)提供数据保密,并采用密码块链信息认证码(Cipher-Block Chaining with Message Authentication Code,CBC-MAC)来提供数据认证和完整性服务。
CCMP加密时由以下四个输入项组成:
(1)明文(Plaintext MPDU);
(2)临时密钥(TK);
(3)封包编号(PN);
(4)密钥标识符(KeyId);
WPA2 4次握手
CCMP 加密过程
MAC header:802.11 MAC 头部
plaintext Data(MSDU): 需要发送的playload
PN(packet number): 长度128bit,它和TKIP中TSC(TKIP sequence number )很相似,它是每个帧的标识,而且它会随着帧的发送过程不断递增,他可以防止回放和注入攻击
TK(temporal key):和TKIP加密一样,CCMP也有一个128bit的TK,它可能是由SSID+passphase计算来的PTK(pairwise transient key ),也可能是GTK(group temporal key ),两者分别用于单播数据加密和组播数据加密
Key ID: 和TKPIP中的一样,用于指定加密用的key,注意这个ID是index的缩写,一般设为0
Nonce:他是一个随机数,而且只生成一次,它一共长104bit,是由PN(packet number,48bit), Qos中的优先级字段(8bit)和TK(transmitter address , 48bit)这三个字段组合来的,需要注意,不要和4路握手的Nonce混淆
AAD Additional authentication data (AAD):它是由MPUD的头部构建而来的,它用于确保MAC头部的数据完整性,接收端会使用这个字段
CCMP帧结构
CCMP解密过程
六、关键技术
DSSS:简称直扩(DS),是一种调制技术。就是在发送端,直接用高码率的扩频码串行去扩展信号的频谱,在接收端,用相同的扩频码串行将信号解扩,把展宽的信号还原到原始状态。其名称中的“扩频”来自这样一个事实,即载波信号发生设备的发射频率充满了整个带宽频谱)。DSSS使用一串连续的伪随机码(pseudonoise, PN)串行,用相位偏移调制的方法来调制信息。这一串连续的伪随机码称为码片(chips),其每个码的持续时间远小于要调制的信息位。即每个信息位都被频率更高的码片所调制。因此,码片速率远大于信息位速率。DSSS通信架构中,发送端产生的码片在发送前已经被接收端所获知。接收端可以使用相同的码片来解码接收到的信号,解调用此码片调制过的信号,还原为原来的信息。
OFDM: 传统的数字调制和分工使用频率频分分工,透过不同频段传输不同的信息,OFDM将一整段频段分割成数个子载波(sub-carrier),而且让每个子载波相互正交,使得他们在频谱上并不互相重叠,可以降低干扰,其运作方式在传输端将信号摆置在频域(frequency domain)上,透过反傅里叶转换(IDFT)转换至时域(time domain)上,并透过增加循环前缀(cyclic prefix)之后传送出去,而接收端则是将信号去除循环前缀,再将时域信号透过傅里叶转换(DFT)将讯息转回频域,解出原传递信号。OFDM技术提高载波的频谱利用率,它的特点是各子载波相互正交,使扩频调制后的频谱不再相互重叠,从而减小了子载波间的相互干扰。在对每个载波完成调制以后,为了增加数据的吞吐量、提高数据传输的速度。OFDM的另一个优点,它可以利用离散傅立叶反变换/离散傅立叶变换(IDFT/DFT)代替多载波调制和解调。
OFDMA:正交频分多址(英语:Orthogonal Frequency Division Multiple Access, OFDMA)是无线通信系统中的一种多重接取技术,WiMax、LTE都采用OFDMA。OFDMA是OFDM技术的演进,用户可以选择信道条件较好的子通道(subchannel)进行数据传输,一组用户可以同时接入到某一信道。OFDMA与CDMA不同处在于OFDMA使用大量的正交窄带子载波(subcarrier)来承载资料,与CDMA用单一载波承载单一资料相比,OFDMA更能对抗多径效应。
OFDMA技术也可以被描述为一种结合频域和时域的多路访问,时域的资源分割的时频空间,插槽分配系由OFDM符号沿指数以及OFDM系统子载波指数(sub-carrier index)。
OFDMA技术被认为非常适合无线网络,优势包括可扩展性和MIMO的便利,并有能力利用通道的频率选择性。Wi-Fi从Wi-Fi 6开始使用OFDMA。
QAM: 正交幅度调制**(QAM,**Quadrature Amplitude Modulation)是一种在两个载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此被称作正交载波。这种调制方式因此而得名。同其它调制方式类似,QAM通过载波某些参数的变化传输信息。在QAM中,数据信号由相互正交的两个载波的幅度变化表示。