基本知识参考:
WIFI协议及其物理帧结构介绍 - wangssd - 博客园 (cnblogs.com)
Ethenet(有线网)和Wifi(无线网)采用的协议都属于IEEE 802协议集。其中,Ethenet以802.3协议作为其网络层以下的协议;Wifi以802.11做为其网络层以下的协议。无论是有线网络,还是无线网络,其网络层以上的部分,基本一样。
有个wifi专栏可以看看
WIFI信道分配
信道通俗来说就是频率范围,它决定了无线AP是在哪个频率范围内进行通信的。WIFI可以分别工作在2.4G和5.2G频段。
2.4G 频段
2.4G 频段的工作频率为2.4-2.4835GHz,频带宽度83MHz。在2.4 GHz范围内指定了14个信道,每个信道的带宽是22MHz。但是,实际使用中,有效的带宽是20MHz,其中有2MHz是隔离频带,起保护作用。2.4G频段范围内的信道,除了信道14与之前信道间隔是12 MHz外,其它信道之间的间隔为5 MHz。中国采用欧洲/ETSI标准,使用1-13信道。
在Wi-Fi中,相近无线路由器应选择互不重叠的信道工作,如(1、6、11),(1、7、13)2、7、12;3、8、13等;
5.2G 频段
5.2G频段的工作频率为5.150GHz-5.250GHz,其中包含的信道编号为36-64,每个信道带宽为22MHz,有效带宽为20MHz,每个信道间隔5MHz。5.2G频段中不重叠的信道有8个,分别为36、40、44、48、52、56、60、64。
由于国家使用雷达环境中会与52、56、60、64信道冲突,因此常规模式下建议避开这些雷达信道,以免出现无线终端接入问题。因此常用36、40、44、48这四个信道。
有时候,路由器可能有双频合一功能,此时,2.4G和5G就可能使用同一个名字,我们需要根据所在信道来判断是2.4G还是5G网络。比如:
这里扫描出了两个同名的wifi,ch11的就是2.4G网络,ch36的就是5G网络。
常见名词介绍
BSS
Basic Service Set 基本服务组合,一个热点的覆盖范围被称为一个 BSS(通俗说就是某个路由器的wifi覆盖范围)。由一组彼此通信的工作站所构成。工作站之间的通信,在某个模糊地带进行,称为基本服务区域(basic service area),此区域受限于所使用无线介质的传播特性。只要位于基本服务区域,工作站就可以跟同一个 BSS 的其他成员通信(通俗说就是同一个wifi下的手机之间可以通信)。
BSS 分为两种
常见的、家庭中使用的基本是基础型 BSS,我们也只讨论基础型 BSS。有点像局域网。WLAN本身也就是无线局域网,不能说像,应该说就是局域网。
ESS
Extended Service Set 延伸式服务组合,基站允许个别的 BSS 彼此串连为逻辑上相连的群组,此种结构称为延伸式服务组合。
BSS 的服务范围,可以涵盖整个小型办公室或家庭,不过无法服务较广的区域,802.11 允许我们将几个 BSS 串连为延伸式服务组合(extended service set),借此延伸无线网络的覆盖区域,所谓 ESS 就是利用骨干网络将几个 BSS 串连在一起。所有位于同一个 ESS 的基站将会使用相同的服务组合识别码(service set ID,简称 SSID),通常就是使用者所谓的网络「名称」。
802.11 并未规范非得使用何种骨干技术,只要求骨干必须提供一组特定的服务功能。上图所示的 ESS 系四个 BSS 的联集(只要所有基站均隶属同一个 ESS)。实际部署时,BSS 之问的重叠程度可能较上图为高。在实际生活中,总是希望延伸式服务区域是连续的;不可能要求使用者从 BSS1 走到 BSS2 时还要绕道 BSS3。
隶属同一个 ESS 的工作站可以相互通信,即使这些工作站位于不同的基本服务区域,或是在这些基本服务区域中移动。
延伸式服务区域是 802.11 网络所支持的最高价抽象概念。ESS 所属的基站会彼此合作,让外界能够使用单一MAC 地址与 ESS 里其他工作站通信,不论其置身何处。在上中,路由器可使用单一 MAC 地址传递帧给移动式工作站;由该工作站所连接的基站负责传送帧。路由器无须在意移动式工作站位于何处,而是靠基站传送帧。
通俗来说,就是通个路由器连接在一起,然后扩展了wifi覆盖的范围??????
BSSID
Basic Service Set ID,基本服务集标识。
要在同一个区域划分不同的局域网络,可以为工作站指定所要使用的 BSS(基本服务集)。在基础网络里,BSSID(基本服务集标识)即是基站无线界面所使用的 MAC 地址。
要使用多少地址位,取决于帧类型。大部分的数据帧会用到三个位:来源、目的以及 BSSID。数据帧中,地址位的编号与排列方式取决于帧的传送路径。大部分的传输只会用到三个地址,这解释了为什么在帧格式中,四个地址位都有其中三个位相邻的。
ESSID
Extended Service Set ID,延伸式服务组合识别码
ESSID是一个比较抽象的概念,它实际上就和ssid相同(本质也是一串字符),只是如果有好几个无线路由器都叫这个名字,那么我们就相当于把这个 ssid 扩大了,所以这几个无线路由器共同的这个名字就叫 ESSID。
(也就是如果在一台路由器上释放的wifi信号叫某个名字如“China_CMCC”,这个名字“China_CMCC”就称为 SSID;如果在好几个路由器上都释放了这个wifi信号,那么大家都叫“China_CMCC”,这个时候大家都遵循的这个名字就是 ESSID)。
SSID
Service Set ID,服务集标识。
网络管理人员通常比较喜欢跟文字、数字或名称打交道,而不是 48 个 bit 的 MAC 地址。
SSID,是让网管人员为服务组合(service set)指定的识别码。
共同组成扩展式服务区域(extended service area)的所有基本服务区域(basic service areas)都会使用相同的 SSID。
有些文件将 SSID 视为网络名称,因为网管人员通常以字串来指定 SSID。其实,SSID 不过是由字节所形成的字串,用来标示所属网络的 BSSID。有些产品要求此字串必须是以 null(即0)结尾的 ASCII 字串,虽然标准对此并无特别规范。
SSID 的长度介于 0 至 32 字节之间。
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语音终端通常会使用被动扫描方式,其目的是可以节省电量。
WIFI帧结构
IEEE802.11系列标准定义了WLAN无线网络数据帧的帧结构,和基本的物理层、MAC层通信标准。与802.3定义的以太网数据帧格式及通信方式不同,802.11定义的WLAN无线局域网由于通信介质和通信质量的问题,不能直接采用802.3的通信方式。在WLAN中,数据链路层面上的通信模式要比802.3以太网中的通信要复杂的多,因此802.11的帧格式也要相对复杂。
802.11无线帧最大长度为2346个字节,基本结构如下:
802.11帧中各个字段含义如下:
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 帧校验和:主要用于检查帧的完整性。
连接过程
连接三步骤
扫描(Probe Request、Probe Response)
认证(Authentication)
关联(Association Request、Association Response)
认证和加密
认证和加密
WiFi 连接过程其实主要就做了两件事:身份认证和密钥交换
为什么要进行身份认证
为了只让特定(合法)用户使用当前网络
为什么要进行密钥交换
为了使用加密的方式进行通信,防止通信信息被第三方截获破解导致隐私泄露
如何进行身份认证
只要让 AP 知道 STA 中储存的密码是否和自己的密码相等就可以了。最简单的办法:拿到 STA 的密码。AP 将其和自己的密码进行比对,相等则代表该 STA 是合法用户,应当准许接入网络,否则,应当拒绝接入。
AP 怎样拿到 STA 的密码呢?1:STA 将密码明文传输,2:STA 将密码加密传输。第 1 种方法:密码明文发送给 AP,AP 收到后确实可以验证 STA 的身份合法性,但是由于密码是明文传输的,相当于向当前空间区域广播了此网络的密码,这样别的 STA 也可以轻松地收到密码并加入当前网络。这样其它本来非法的用户也变得合法了,显然这种方式是不可取的。那第 2 种方法呢:将密码加密传输。那试问 STA 将密码加密了,它们俩之间又实现没有同步密钥,AP 拿到数据也解不出密码呀,这种方案显然也是不可取的。
那能在不泄露密码的情况下达到身份认证的目的吗?
具体参考:WiFi 基础(六)—— 认证和加密原理_无线认证和加密原理-CSDN博客
暂且就了解这么多吧,实际Linux应用开发中,wifi协议栈都是已经写好的,我们只要调用相关接口就可以了。
又看到一个比较不错的wifi专栏,可以看看
wifi连接流程
参考:
WiFi基本知识总结 --- 通信框架及基础概念说明_wifi基础知识-CSDN博客
和其他通信方式相似,在进行通信前,通信双方需要进行连接。在进行WiFi通信时也是一样,接下来我们仪器看下WiFi中的连接管理功能。 我将连接管理的流程进行了简化,目的是为了读者更好的理解这些流程。下面给出的一个标准化的WiFi连接管理流程。
注:probe探测
wifi的密码就是用来加密使用的,如果无加密,那就不需要设置密码了。
WiFi连接流程主要分为:扫描、认证、关联、四次握手四个步骤,其中四次握手并非必须的步骤。它根据系统的认证方式不同,决定是否进行四次握手这一步骤。一般,前面三步即扫描、认证、关联为WiFi建立连接所必须的步骤。
扫描(Scan)
802.11MAC通过使用Scanning功能来完成Discovery,其目的是:
寻找一个网络;
当STA漫游时寻找一个新的AP;
1. 主动扫描(active scan)
在每一个信道上针对特定的网络发送Probe request报文,从收到的Probe Response中获取BSS的基本信息以及AP的能力集,如BSSID、SSID、支持的速率、加密算法等 ,Probe Response包含的信息和Beacon帧类似的。
优点:速度快
缺点:耗电
2. 被动扫描(passive scan)
通过在每个信道上侦听AP定期发送的Beacon帧来发现网络,Beacon帧中包含的该AP所属的BSS的基本信息以及AP的基本能力级,包括:BSSID、SSID、支持的速率、支持的认证方式,加密算法、Beacon帧发送间隔等。STA在收到对应的Beacon帧后就会进行判断,此AP是否是我们要找的AP以及对应的能力是否匹配以支持连接。
优点:省电
缺点:耗时长
认证(Authentication)
在扫描成功完成后,需要进行无线网络的认证,目的是:
防止未授权的STA访问网络,在访问AP之前,需要先进行身份认证。
根据认证的网络类型的不同,又可以分为以下两种:
1. 开放系统认证(Open-System Authentication)
等同于不需要认证,没有任何安全防护能力。允许任何用户加入到无线网络中来。所有请求认证的STA都可以通过认证。类似于我们家里的路由器不设定密码的情况。
STA发送包含station ID(typically the MAC address)的authentication request。
AP回复包含成功或失败的authentication response。
2. 共享密钥认证(Shared-Key Authentication)
这里的秘钥就是我们通俗说的wifi密码,它是怎么起作用的呢?AP随机产生一个challenge包(即一个字符串)发送给STA,STA将接收到的字符串拷贝到新的消息中,用密钥加密后再发送给AP。AP接收到该消息后,用密钥将该消息解密,然后对解密后的字符串和最初给STA的字符串进行比较。相同则通过认证,不相同则认证失败。
关联(Association)
当设备认证流程验证通过后,设备会再发起连接请求以关联AP设备。AP将用户信息添加到数据库,向用户回复关联响应,此过程也常被称为注册。
关联的具体步骤为:
STA发送Association request帧给到AP,AP检查通过后会回复Association Response给到STA。STA在正确收到AP回复的Association Response后,两个设备就关联上了。
那么此时会根据安全方式的不同,有两种处理方式:
如果AP采用的Open-system方式,则到这里STA已经连上AP了。
如果AP采用的WPA-PSK/WPA2-PSK/WPA3等加密方式,那么此时设备还无法正常通信。设备还需要进行四次握手,以获取加密密钥。再正确获取加密密钥后,STA才能正常使用WiFi网络。
四次握手(Four-way handshake)
当AP采用WPA-PSK、WPA2-PSK、WPA3等加密方式的情况下,当STA在成功收到AP的Association Response后。会继续进行四次握手流程,以获取用于单播帧加密的PTK,基于组播/广播帧加密的GTK。
四次握手更详细的内容参考:
Wifi_认证 、关联 和 四次握手(WPA/WPA2)_无线四次握手-CSDN博客
注意,不是TCP的那个三次握手四次挥手,完全不是一个东西。
先上图,后解释。
先说一下图中出现的 “名词”吧。
STA:就是客户端,最常见的一个实例就是——“手机”
AP:接入点,无线局域网构建者,通常情况下就是——“路由器”
PSK:STA 与 AP 直接约定的 “暗语” ,用于认证(Authentication)的,通常情况下就是 WIFI密码。
SNonce:STA 生成的随机数。
ANonce:AP生成的随机数。
PMK:PMK 是由 ESSID + PSK(通俗的密码) 通过 SHA-1 (一个Hash 算法) 计算出来的。
PTK:Pairwise Transit Key,用来加密 AP 和 STA 通讯的单播数据包,AP 与每个 STA 通讯的PTK都是唯一的。
MIC:Message Integrity Check,PTK 的前 16 位通过Hash算法得出,用于校验消息的完整性。
为什么说“各自已知的ssid和psk”?
重点理解这一点:wifi的密码是在ap上设置的,然后在station上要输入的,所以,双方都知道这个信息。
注意,以上是wifi的建立连接的过程,相当于插上了一根网线。如果有DHCP,也是连接之后的事情。插上网线,和能上网是两回事。上网需要ip,但是插上网线并不需要。
无线安全
与有线网络不同,理论上无线电波范围内的任何一个站点都可以监听并登录无线网络,所有发送或接收的数据、都有可能被截取。
为了使授权站点可以访问网络而非法用户无法截取网络通信,无线网络安全就显得至关重要。
安全性主要包括访问控制和加密两大部分
- 访问控制:保证只有授权用户才能访问敏感数据。
- 加密:保证只有正确的接收方才能理解数据。
下面是WiFi技术中常见的一些加密方式。
Wired Equivalent Privacy (WEP)
WEP是最早的,最常用的,也是最脆弱的安全保证;
使用共享秘钥RC4加密算法;
有64位密钥和128位密钥两种加密方式;
密钥长度最初为40位(5个字符),后来增加到104位(13个字符),有些设备可以支持152位加密。创建一个IV与秘钥共同加密数据包;
缺点:
WEP Key 长度太小;
WEP不提供自动修改密钥的方法;
IV 空间太小并且IV 重复使用(平均大约每 5 小时重复一次);
如果不是share认证,即使WEP密码错误,站点端显示的还是连接上,只是不能正常数据通信;
WPA(Wi-Fi Protected Access,WiFi接入保护)
遵循802.11i的草案,在802.11i未完成之前的过渡方案,对WEP的改进;
WPA 利用TKIP(Temporal Key Integrity Protocol,临时密钥完整性协议) 来代替WEP;
TKIP 仍用RC4加密算法, 但是每个包的RC4 key是不同的;
WPA 引入4个新算法;
48位初始化向量(IV),IV顺序规则(IV Sequencing Rules);
每包密钥构建(Per-Packet Key Construction);
Michael消息完整性代码Code,MIC以及密钥重获分发;
WPA2(Wi-Fi Protected Access 2,WiFi接入保护2)
基于完整的802.11i标准。
采用AES(Advanced Encryption Standard,高级加密协议)加密算法。
采用CCMP(Counter Mode with Cipher-Block Chaining Message Authentication Code Protocol,加密块链消息验证码协议的计数器模式)密钥管理协议。
支持缓存密钥和预认证。
WPA3(Wi-Fi Protected Access 3,WiFi接入保护3)
基于WPA2全面升级,目前最新也是WiFi最安全的加密方式
采用了更加安全的SAE(Simultaneous Authentication of Equals,对等实体同时验证)加密算法
使用192位的Suite-B安全套件,相较于WPA2采用的128位密钥长度,该模式将密钥长度增加至192位,进一步提升了密码防御强度。
密钥保护:使用更加安全的HMAC-SHA-384算法在四次握手阶段进行密钥导出和确认。
WPS(Wi-Fi Protected Setup)
类似的称呼:QSS/SES/AOSS/EZ-SETUP。
为解决无线安全设置比较繁琐、专业性强的问题。
如果你足够细心的话应该可以在,应该可以在家里面main路由器上找到标有WPS这个按钮,当然你家的路由器要支持这个功能的haul才可以使用。是不是突然发现这么多年终于知道那个按钮是干嘛了的感觉。
WPS有两种模式:PCB和PIN模式。因为本博客定位于科普,只介绍简单的基本知识。同样的,后面如有时间会更新一篇详细介绍该功能的文章。
关联过程
站点通过WPS协商过程获得AP当前的无线安全设置
(SSID,安全模式,密码)
正常接入到BSS。
2种常见的启动WPS协商的方式:
PIN:在AP上输入站点的PIN码;
PBC:2分钟内分别按下AP和站点上的按钮(你的STA上面也有该按钮才行)
同样的,还是盗个图来说明一下该模型
其实wifi想关的知识还有很多,一篇博客肯定是介绍不完,只在这里介绍些很基本的东西,算是一个科普吧。
wifi相关的知识如果要详细了解的话可能需要厚厚的一大本书,恰巧我看过这本书,并且打算把它推荐给你。Mattbew S. Gast写的《802.11无线网络权威指南》,由O’Reilly Taiwan公司编译 , 东南大学出版社出版的。好像O’Reilly Taiwan公司翻译了不少国外的技术类的书籍,而且质量都还不错,感兴趣的话可以找来看看。
虽然这本书比较旧了,但是对连接WiFi的一些基本知识来讲,本相当经典且并不过时。
倘若你熟读了本书,并了解了基本概念。如果想要进一步的研究WiFi,可以直接去IEEE 官网或者WFA官网找官方发布的最新的协议标准来看。
EAP
EAP(Extensible Authentication Protocol,可延伸身份认证协议)
平常我们见到最多的 wifi 安全模式都是 WAP2 PSK。由于 WEP 被发现了很多漏洞,WAP2 就出来了,它的安全性比 WEP 是高很多的,但是 WAP2 也不是绝对安全的,它的安全性有点依赖密码,也就是说当你的 wifi 密码泄露了它就变的不太安全了。
对于需要无线安全能力强的企业他们就不可以选用 wap2,wap2 可以暴力破解,以及利用一些社会工程学的一些软件进行破解,EAP 的出现就是为了满足对于安全要求高的企业。
参考:https://blog.csdn.net/hl1293348082/article/details/123888636
EAP 是什么? EAP 全称叫 802.1X/EAP,主要是三部分构成:
1 请求方:也就是需要链接网络的设备
2 认证方:也就是认证你这个设备是否可以进入这个网络里面
3 认证服务器 :对请求方进行身份验证,并将认证结果告诉认证方
这就是 802.1X/EAP 的认证过程。
总之,我们要知道,EAP是一种安全性很高的无线加密方式。
Eapol,全称为 Extensible Authentication Protocol Over LAN,即 EAP Over Lan,也即基于局域网的扩展认证协议。