WiFi 基础(四)—— 连接过程
连接三步骤
- 扫描(Probe Request、Probe Response)
- 认证(Authentication)
- 关联(Association Request、Association Response)
1. 扫描阶段
STA 发送 Probe Req 帧,携带 SSID 表明欲加入的网络,携带 Supported Rates 表明自身的能力。
AP 回复 Probe Rsp 帧,这是 AP 的义务,(AP 允许此 STA 连接的情况下)也携带 Supported Rates 表明自身的能力。
作用:STA 获取 AP 的能力,决定要不要加入该网络;AP 获取 STA 能力,并根据自身情况决定要不要让该 STA 加入自身网络。
打个比方:STA 好比应聘者, AP 好比公司。应聘者投简历表明自己想要进入哪家公司,同时简历上面写上自己的能力。公司收到简历后,考虑还需不需要招人以及该应聘者能力情况,决定要不要准备招收该应聘者。如果准备招收,则公司也将自身的一些能力情况介绍给该应聘者,毕竟双向选择嘛。如果决定不接收,则回复拒绝,当然公司会稍微委婉点:回去等通知。
2. 认证阶段
STA 收到 Probe Rsp 帧,决定要不要加入此网络,若决定加入,则发送 Auth 帧进行身份认证,否则流程结束。
STA 在 Auth 包中表明认证算法类型,0:Open System,1:Shared Key。
Shared Key 方式即代表使用 WEP 加密方式,Open System 方式即代表使用 TKIP/WPA/WPA2 方式。
使用 Shared Key 方式,是真实的身份认证过程,Auth 共有 4 步骤:
Auth seq#1:由 STA 发起认证请求,携带认证算法类型:Shared Key
Auth seq#2:AP 回复一个挑战明文(challenge text )
Auth seq#3:STA 使用预设密钥对挑战铭文进行加密,然后发送给 AP
Auth seq#4:AP 收到后,使用密钥对收到的消息进行解密,如果解密成功且明文一致表示认证成功,回复 successful
使用 Open System 方式,表明真正的身份认证放到 EAPOL 阶段,所以 Auth 只有两步骤:
Auth seq#1:由 STA 发起认证请求,携带认证算法类型:Open System
Auth seq#2:AP 直接回复 successful,因为真正的身份认证会放在 EAPOL 阶段
接上个比方:如果应聘者收到了公司的准备接收意向,则会向公司提出面试申请。公司收到申请后,会发面试试题或者当面面试。应聘者提交答案或者当面回答问题。公司检查答案是否正确,如果正确,则面试通过,同时发放 offer;如果答案不正确,则面试失败,回复不予接收,当然会委婉点。
3. 关联阶段
STA 收到认证通过报文后,决定要加入当前网络,就会发送 Assoc Req 帧。指明要加入的网络的类型、自己的 Listen Interval(聆听间隔,即 STA 多久聆听一次 Beacon 帧,以监听 TIM 信息)和一些能力信息。
AP 收到 Assoc Req 帧后,最终确认 STA 的 Listen Interval 自己能不能接受,能力信息是否匹配,如果一切 OK,回复 Assoc Rsp 帧,携带 AID(Association ID) 和 successful 信息,表明关联成功。否则,回复 Assoc Rsp 帧,携带 failed 信息,表明关联失败,同时 AP 也会从 mac table 中删除此 STA。
接上个比方:如果应聘者收到了 offer,并且也决定要去这家公司,则该应聘者会去公司报到,同时携带自身体检报告。公司接待该应聘者,如果体检报告不合格,公司最终也可以决定不接收该应聘者。如果体检报告合格,公司则会给该应聘者办理入职手续,并且给该应聘者分配一个工号,从此该应聘者便是公司的一员了。
4. EAPOL 阶段
如果采用的是 Shared Key 方式,即 WEP 加密方式,认证已在 Auth 阶段完成,完成上述关联阶段即已正式加入网络,后续可以通过密钥对消息加解密和 AP 进行正常通信了。
如果采用的是 Open System 方式,即 TKIP/WPA/WPA2 方式,在 Auth 阶段其实没有进行身份认证的工作,在 Auth 阶段就决定把身份认证的工作放在当前 EAPOL 阶段了。所以此种方式下,要进行 EAPOL 步骤,常见的就是 4-way handshake,当然还有 2-way-handshake。此处只讨论 4-way handshake,如下
密钥生成公式如下,详细介绍请查看《WiFi 基础(六)—— 认证和加密原理》
P T K = P R F ( A A , S A , A N o n c e , S N o n c e , P M K ) PTK=PRF(AA, SA, ANonce, SNonce, PMK) PTK=PRF(AA,SA,ANonce,SNonce,PMK)
step 1:AP 首先发送 Message 1,包含 ANonce
step 2:STA 收到 ANonce,同时也能拿到 AA(Authenticator addr),SA(Supplicant addr)是自己本身的信息,SNonce 又是自己现在生成的信息,PMK 是通过自身密码和 SSID 计算得到的,也是已知信息。此刻,STA 已具备计算 PTK 的所有五元组信息,所有能够计算得到 PTK。然后用 PTK 的 KCK 位对马上要发送的数据包进行计算得到 MIC,并将 MIC 附着在包尾一同发送给 AP
step 3:AP 收到Message 2,此时也具备了所有的五元组信息,也成功计算出了 PTK,并用 PTK 的 KCK 位对收到的数据进行计算得到 MIC,计算得到的 MIC 与收到的 MIC 进行对比,如果相等则代表 AP 和 STA 拥有相同的 PTK,进而可以确定两者拥有相同的 PMK,进而可以确定两者拥有相同的密码,AP 向 STA 回复 Message 3,包含被加密的 GTK(用于对广播数据帧和组播数据帧加密) 和 MIC。如果不相等,则身份认证失败,回复认证失败报文。至此,可以完成身份认证的工作。且,身份认证成功之后,数据可以通过 PTK 进行加解密。
step 4:STA 收到 被加密了的 GTK,因为手中已有 PTK,所以可以从中解出 GTK。然后 AP 和 STA 安装 PTK 和 GTK,整个认证和密钥交换过程至此结束。
接上个比方:WEP 相当于采用的是社招的方式,前期对招聘者就进行了严格的面试筛选,只有合格的才被录取,入职之后不会再进行淘汰。WPA 则相当于采用的是校招的方式,前期不刷人,想来实习的都可以进来,不过进来后会进行筛选,不合格的一样会被淘汰,并且,进入公司工作后,有更完整的制度、更全方位的考察,更能保证留下来的都是精英(WPA 比 WEP 更加安全)。
WiFi 基础(四)—— 连接过程相关推荐
- android系统 wifi,Android系统wifi分析-手动连接过程
1.已保存显示时间较长 16:59:50~16:59:55 原因是,刚好系统保存热点信息里边没有该热点:没有匹配上: 07-16 16:59:51.017 1318 2154 D WifiServic ...
- 第四章 Android WiFi基础知识
系列文章目录 第一章 国内下载AOSP最新源码的方法 第二章 下载AOSP WiFi相关的代码 第三章 将源码导入Android Studio(无需编译idegen) 文章目录 系列文章目录 前言 一 ...
- mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询
MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...
- Android WifiDisplay分析二:Wifi display连接过程
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] WifiDisplay之P2P的建立 WifiDisplay之RTSP server的创建 这一章中我们来看Wifi Displ ...
- android 手动连接wifi,android手动连接wifi的过程
android手动连接wifi的过程 下面就以手动连接mtk5931的wifi为列,来说明手动连接wifi的过程. 在此之前,先说明下,手动连接的使用场景和作用: a: 在纯linux的环境下,该手动 ...
- ESP32入门基础之ESP32作为 WIFI Station去连接wifi热点
文章目录 1 工程简介 1.1 在menuconfig配置WiFi账号.密码 1.2 在程序中配置WiFi账号.密码 1 工程简介 参考工程为乐鑫官方例程: 实验目标: ESP32作为WiFi sta ...
- SSH基础:启用调试模式确认连接过程
在ssh命令中可以通过-v选项直接开启调试模式,在连接的过程中将根据设定的调试等级输出对应的信息,这篇文章以确认ssh首次连接的动作为例,说明调试模式的使用方式. 调试模式 ssh命令中,调试模式有三 ...
- Android 系统 wifi基础知识
第3章 Wi-Fi基础知识 本章所涉及的源代码文件名及位置 ·wireless.h external/ kernel-headers/ original/ linux/ wireless.h ·dri ...
- WIFI基础入门--802.11--TKIP/CCMP/RSN--8
WIFI基础入门--802.11--TKIP/CCMP/RSN--8 1.临时密钥完整性协议(TKIP) 1.1 TKIP与WEP的差异 1.2 密钥层次结构与自动密钥管理 1.3 每帧生成密钥 1. ...
最新文章
- 设置socket IP_TOS选项 (转载)
- CGAffineTransform的使用大概:
- Eclipse启动报错Java was started but returned exit code=13
- Spring Cache-缓存注解(二)
- Java 代码复用 —— 泛型
- c#获取ssl证书有效性_c# – 获取网站SSL证书的公钥
- 15.三数之和-LeetCode
- 190613每日一句
- 【译】GMO Media 使用 HashiCorp Terraform Enterprise 自动配置基础设施
- 天锐绿盾加密软件支持什么操作系统?
- Windows内核原理与实现之Windows研究内核(WRK)
- ADAS/AD域控制器及芯片平台分析
- firefox + pentadactyl 实现纯绿色高效易扩展浏览器(同时实现修改默认状态栏样式)...
- jsmind 线条_jsMind思维导图模式展示数据
- python中element什么意思_什么是Python中等效的’nth_element’函数?
- 测试内存条是否兼容软件,内存条不兼容有什么表现
- 记录一次 Slave_IO_Running: Connecting 的排查过程
- 如何从课堂派上扒取直播视频
- 机器人会偷走你的饭碗吗——写作篇
- python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0
热门文章
- luogu P4881 hby与tkw的基情
- 2009年最新虚拟主机提供商排名榜
- 【已失效】免翻在Chrome上使用新必应(New Bing)聊天机器人
- 摸石头——NOde.js(四)
- J9数字科普:Web3.0很遥远?不它已经来了
- 《C语言入门经典》Ivor Horton第十章练习题1
- 微信小程序获取用户收货地址与指纹验证接口(安卓和iphone)
- SQL高级教程(三十)- - SQL NULL 函数
- Natural Cleaning Solutions
- 组态王bitset用法_宇电AI系列仪表和组态王在产品检测装置中的应用