【通信协议解析】WiFi协议解析

WiFi协议解析

254c84af7399235ef6f0c8ad0ffe1a36

一、发展由来

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设备具有互操作性。

c97e1a4937df1c5bb8f66a84111a25f0.png

二、数据包结构(802.11 Mac)

1557582546441124

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字段格式如下:

  1. Protocol 表示802.11协议版本,目前802.11数据帧只有一个版本,该字段为0。
  1. Type 表示802.11帧的类型,Type=00表示本帧为管理帧,Type=01表示本帧为控制帧,Type=10表示本帧为数据帧。

img

数据帧:负责在工作站之间传递数据,可能会因为所处的网络环境不同而有所差异;

控制帧:通常与数据帧配合使用,负责区域的清空、信道获取以及载波监听的维护,并在收到数据帧后予以正面应答,借此以促进工作站之间数据传输的可靠性;

管理帧:负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。

一般来说控制帧、管理帧都是不需要加密传输的,而数据帧则需要加密后再进行传输,另外一些特殊用途的NULL数据帧也是不加密的,比如power save status的帧。

  1. SubType 具体到某一类型的802.11帧,更加详细的表明其类型:

    20200926175350848

img

img

  1. To DS 表示该帧是否向无线工作站STA发送的帧。(表明该帧是否是BSS向DS发送的帧 )

  2. From DS 表示该帧是否向AP上行网络发送的帧。

  3. **More Fragment **表示该帧是否有更多的分片。

  4. Retry 表示该帧是否需要重传。

  5. **Power Management **如果此bit为1,则表示STA在发送完本帧后,将关闭天线处于休眠状态。(AP不允许关闭天线休眠,只有STA可以,因此AP发送的数据帧该字段恒为0)

  6. More Data 表示在该帧传送完成后,将会有更多的数据,此bit只用于管理数据帧,在控制帧中此bit恒为0。

  7. Protected 如果该bit为1,表示该帧受到链路层安全协议的保护。

  8. Order 如果字段为1,表示帧和帧片段将会严格按照次序传送,但是这样会对发送与接收端带来额外的开销。

u=1162961618,724976224&fm=253&fmt=auto&app=138&f=JPEG

上述四种情况如下图所示:

IBSS表示该数据帧从STA发往AP上行以太网:

img

TO AP表示该数据帧从STA发往AP:

img

From AP表示该数据帧从AP发出,发往STA:

img

WDS表示该数据帧用于无线网桥键发送数据:

img

三、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信道

NonOverlappingChannels2.4GHz802.11-en.svg

当两个网络试图在同一频段运行,或其频段重叠时,就会发生干扰。所用的两种调制方法具有不同的频带使用特点,因此占用不同的频宽。

传统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信道

16501902972256

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);

4-way-handshake_WPA2

WPA2 4次握手

2019060416384568

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头部的数据完整性,接收端会使用这个字段

20200125134657511

CCMP帧结构

20200125134835275

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中,数据信号由相互正交的两个载波的幅度变化表示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/610187.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MT7516A-ASEMI变频器专用MT7516A

编辑:ll MT7516A-ASEMI变频器专用MT7516A 型号:MT7516A 品牌:ASEMI 封装:MT-5 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):75A 功率(Pd):大功率 芯片个数:5 引…

数据结构与算法学习笔记八-二叉树的顺序存储表示法和实现(C语言)

目录 前言 1.数组和结构体相关的一些知识 1.数组 2.结构体数组 2.二叉树的顺序存储表示法和实现 1.定义 2.初始化 3.先序遍历二叉树 4.中序遍历二叉树 5.后序遍历二叉树 6.完整代码 前言 二叉树的非递归的表示和实现。 1.数组和结构体相关的一些知识 1.数组 在C语…

百倍潜力股Aleo即将上线,布局正当时!牛市来时,你得有币!

前言 在加密货币市场,2024年被众多市场专家预测为迎来新一轮牛市的关键年份。这一预测背后,潜藏着多种可能推动牛市的因素。其中,下一次比特币(BTC)的减半事件,以及2024年 BTC 现货ETF的推出,都…

二叉树-堆

树 在数据库中,树是一种数据结构,用于组织和存储数据,使得可以高效地进行插入、删除和查找操作。它通常用于表示层次关系或者有序集合。 基本概念 节点:树结构中的每个元素都称为节点。 根节点:树的最顶端节点。 子…

智能奶柜:健康生活新风尚

智能奶柜:健康生活新风尚 在快节奏的都市生活中,健康与便利成为了现代人的双重追求。而在这两者交汇之处,智能奶柜应运而生,它不仅是科技与生活的完美融合,更是日常营养补给的智慧之选。 清晨的第一缕温暖 —— 新鲜…

《应用现代化技术能力成熟度评估模型》介绍

在中国软件行业协会、应用现代化产业联盟以及中国电子技术标准化研究院的指导下,产业多家企业共同支持和参与下,完成的《应用现代化技术能力成熟度评估模型》标准。该标准从应用敏捷、稳定可靠、安全可信、业务智能、成本优化五大维度及22个能力项来评估…

【Linux系统编程】第十四弹---进度条

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、回车和换行 2、观察回车换行现象 3、缓冲区 4、usleep和fflush函数 5、简单倒计时 6、进度条 6.1、版本一 6.2、版本…

基于Python的数据分组技术:将数据按照1, 2, 3规则分为三个列表

目录 一、引言 二、数据分组原理与意义 三、案例分析 四、代码实现与解释 五、对新手友好的解释 六、技术细节与扩展 七、实际应用场景 八、总结 一、引言 在数据处理和分析的广阔领域中,数据分组是一项基础且重要的任务。数据分组通常指的是将数据集中的元…

最新版在线客服系统源码

源码介绍 首发最新在线客服系统源码,优化更好并且重构源码布局UI 性能不吃cpu并发快,普通1H2G都能带动最新版只要是服务器都能带动 搭建即可使用,操作简单,易懂 修复了老版本bug 内附有搭建教程 gofly.v1kf.com 运行环境 Nginx 1.20 MySQL 5.7 演示截图

双筒水封式防暴器有诚信才会被信赖

选择一款满意的产品,始于需求,终于品质,有品质才会热爱,有诚信才会被信赖 一、用途介绍: STFB型双筒水封式防爆器属于双罐结构的水封式防爆器,安装在抽放瓦斯泵吸气侧和排气端的管路上靠防爆器底部的水封保…

使用Docker安装Nginx

一、Nginx介绍 Nginx 是一款高性能的开源 Web 服务器和反向代理服务器,具有高效能、高稳定性、低资源消耗等优点。可以处理大量并发请求,支持多种协议,还能实现负载均衡、缓存等功能,在互联网应用中被广泛使用。在Nginx中&#xf…

ros 学习记录(二)URDF小车运动控制

URDF小车运动控制 准备工作创建 robot_xacro.launch 接上文,想用键盘控制小车在Gazebo中移动。 准备工作 名称版本ROSNoeticGazebo11.11.0 创建 robot_xacro.launch 通过运行这个launch文件,可以启动Gazebo仿真环境,并在仿真环境中加载和…

Redis实现延迟队列(为订单超时关闭提供更多的解决方案)

电商场景中的问题向来很受面试官的青睐,因为业务场景大家都相对更熟悉,相关的问题也很有深度,也有代表性,能更方便地考察候选人的技术水平。 比如商品购买下单支付的流程,在买家购买商品后会先生成订单,之后…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

微信小程序流量主如何自定义广告组件后台控制广告显示方式附源码[收藏]

最近开发了一个微信小程序,开通了流量主,引用广告显示。本教程干货满满,附上代码,建议**【收藏点赞】** 微信小程序广告有以下几种:Banner广告、激励广告、插屏广告、视频广告、视频贴片广告、封面广告。 为了增加广告…

数字工厂管理系统如何助力企业数据采集与分析

随着科技的不断进步,数字化已成为企业发展的重要趋势。在制造业领域,数字工厂管理系统的应用日益广泛,它不仅提升了生产效率,更在数据采集与分析方面发挥着举足轻重的作用。本文旨在探讨数字工厂管理系统如何助力企业数据采集与分…

Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)

前言:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同,Java 语言中提供的数组是用来存储固定大小的同类型元素。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSD…

Kafka从0到消费者开发

安装ZK Index of /zookeeper/zookeeper-3.9.2 下载安装包 一定要下载-bin的,不带bin的是源码,没有编译的,无法执行。-bin的才可以执行。 解压 tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz 备份配置 cp zoo_sample.cfg zoo_sample.cfg-b…

Chronos:学习时间序列的大语言模型(论文解读)

前言 《Chronos: Learning the Language of Time Series》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文,并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家,请帮忙点亮…

RAG技术简介

相关文档: 论文链接: https://arxiv.org/abs/2005.11401 课程链接: Tutorial/huixiangdou at camp2 InternLM/Tutorial GitHub 视频链接: 茴香豆:搭建你的 RAG 智能助理_哔哩哔哩_bilibili RAG是一种在LLM中广泛使…