连接三步骤

  1. 扫描(Probe Request、Probe Response)
  2. 认证(Authentication)
  3. 关联(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 基础(四)—— 连接过程相关推荐

  1. android系统 wifi,Android系统wifi分析-手动连接过程

    1.已保存显示时间较长 16:59:50~16:59:55 原因是,刚好系统保存热点信息里边没有该热点:没有匹配上: 07-16 16:59:51.017 1318 2154 D WifiServic ...

  2. 第四章 Android WiFi基础知识

    系列文章目录 第一章 国内下载AOSP最新源码的方法 第二章 下载AOSP WiFi相关的代码 第三章 将源码导入Android Studio(无需编译idegen) 文章目录 系列文章目录 前言 一 ...

  3. mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询

    MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...

  4. Android WifiDisplay分析二:Wifi display连接过程

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] WifiDisplay之P2P的建立 WifiDisplay之RTSP server的创建 这一章中我们来看Wifi Displ ...

  5. android 手动连接wifi,android手动连接wifi的过程

    android手动连接wifi的过程 下面就以手动连接mtk5931的wifi为列,来说明手动连接wifi的过程. 在此之前,先说明下,手动连接的使用场景和作用: a: 在纯linux的环境下,该手动 ...

  6. ESP32入门基础之ESP32作为 WIFI Station去连接wifi热点

    文章目录 1 工程简介 1.1 在menuconfig配置WiFi账号.密码 1.2 在程序中配置WiFi账号.密码 1 工程简介 参考工程为乐鑫官方例程: 实验目标: ESP32作为WiFi sta ...

  7. SSH基础:启用调试模式确认连接过程

    在ssh命令中可以通过-v选项直接开启调试模式,在连接的过程中将根据设定的调试等级输出对应的信息,这篇文章以确认ssh首次连接的动作为例,说明调试模式的使用方式. 调试模式 ssh命令中,调试模式有三 ...

  8. Android 系统 wifi基础知识

    第3章 Wi-Fi基础知识 本章所涉及的源代码文件名及位置 ·wireless.h external/ kernel-headers/ original/ linux/ wireless.h ·dri ...

  9. 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. ...

最新文章

  1. 设置socket IP_TOS选项 (转载)
  2. CGAffineTransform的使用大概:
  3. Eclipse启动报错Java was started but returned exit code=13
  4. Spring Cache-缓存注解(二)
  5. Java 代码复用 —— 泛型
  6. c#获取ssl证书有效性_c# – 获取网站SSL证书的公钥
  7. 15.三数之和-LeetCode
  8. 190613每日一句
  9. 【译】GMO Media 使用 HashiCorp Terraform Enterprise 自动配置基础设施
  10. 天锐绿盾加密软件支持什么操作系统?
  11. Windows内核原理与实现之Windows研究内核(WRK)
  12. ADAS/AD域控制器及芯片平台分析
  13. firefox + pentadactyl 实现纯绿色高效易扩展浏览器(同时实现修改默认状态栏样式)...
  14. jsmind 线条_jsMind思维导图模式展示数据
  15. python中element什么意思_什么是Python中等效的’nth_element’函数?
  16. 测试内存条是否兼容软件,内存条不兼容有什么表现
  17. 记录一次 Slave_IO_Running: Connecting 的排查过程
  18. 如何从课堂派上扒取直播视频
  19. 机器人会偷走你的饭碗吗——写作篇
  20. python空气质量指数计算_Python的学习笔记案例8--空气质量指数计算5.0

热门文章

  1. luogu P4881 hby与tkw的基情
  2. 2009年最新虚拟主机提供商排名榜
  3. 【已失效】免翻在Chrome上使用新必应(New Bing)聊天机器人
  4. 摸石头——NOde.js(四)
  5. J9数字科普:Web3.0很遥远?不它已经来了
  6. 《C语言入门经典》Ivor Horton第十章练习题1
  7. 微信小程序获取用户收货地址与指纹验证接口(安卓和iphone)
  8. SQL高级教程(三十)- - SQL NULL 函数
  9. Natural Cleaning Solutions
  10. 组态王bitset用法_宇电AI系列仪表和组态王在产品检测装置中的应用