AliOS Things 网络篇之 Wi-Fi 基础知识与连接过程|学习笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习 AliOS Things 网络篇之 Wi-Fi 基础知识与连接过程。

开发者学堂课程【HaaS 物联网应用开发课程AliOS Things 网络篇之 Wi-Fi 基础知识与连接过程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13837


AliOS Things 网络篇之 Wi-Fi 基础知识与连接过程

 

内容介绍:

一、Wi-Fi 简介

二、Wi-Fi 基础知识

三、Wi-Fi 连接过程和帧结构

 

一、Wi-Fi 简介

1. Wi-Fi 发展历史

Wi-Fi 是 Wi-Fi 联盟制造商的商标做为产品的品牌认证,是一个创建于 IEEE802.11标准的无线局域网技术。

image.png

2. 主要物理层规范


802.11b

802.11a

802.11g

802.11n

802.11ac

802.11ax

发布时间

1999

1999

2003

2009

2014

2019

频段

2.4GHz

5GHz

2.4GHz

2.4/5GHz

5GHz

2.4/5GHz

带宽

20MHz

20MHz

20MHz

20/40MHz

20/40/80/160MHz

20/40/80/160MHz

物理层速率

11Mbps

54Mbps

54Mbps

600Mbps

6.8Gbps

10Gbps

最大单用户流

1

1

1

4

8

8

最大多用户流

NA

NA

NA

NA

4(DL only)

8(UL&DL)

调制方式

DSSS,CCK

OFDM

OFDM

OFDM

OFDM

OFDM,OFDMA

编码方式

CCK

64-QAM,3/4

64-QAM,3/4

64-QAM,5/6

256-QAM,5/6

1024-QAM,5/6

子载波

NA

312.5kHz

312.5kHz

312.5kHz

312.5kHz

78.125kHz

初学者主要关注带宽、频宽和物理层速率。

 

二、Wi-Fi 基础知识

1. Wi-Fi 帧

WiFi 帧可以分为3种∶控制帧、数据帧、管理帧

控制帧通常与数据帧搭配使用,负责区域清空,信道获得,载波侦听,肯定确认等

数据帧负责搬运数据

管理帧负责监督,如加入和退出无线网络以及处理接入点之间关联的转移等

2. Wi-Fi 帧结构

无论是控制帧,数据帧还是管理帧,所有的 WiFi 报文都符合如下的帧格式,其中前2个字节的 Frame Control字段区分帧的类型

image.png

MAC header 是每个帧的头部,Frame body 是每个帧传输具体携带的数据。重点关注 MAC header 中的控制信息。

Frame Control 用来表征当前帧的类型、版本、子类型等信息。

DA 为目的地址、SA 人地址(表示由谁发出)、SSID 属于哪一个服务集合。

3. 基础术语

SSID (Service Set ldentifier) :服务集标识符(所连接的 WiFi 名字)

BSS (Basic Service Set) :基本服务集

ESS (Extended Service Set) :扩展服务集

BSSID (Basic Service Set ldentifier) :基本服务集标识符(AP 地址)

ESSID ( Extended Service Set ldentifier) :扩展服务集标识符(由很多 BSSID 组成的大型闭合族)

 

三、Wi-Fi 连接过程和帧结构

1.手机连接过程

相信每个人都用自己的手机连接路由器进行工作或学习,咱们就来看看执行连线这个动作的过未中都发生了什么?

image.png

手机上的 WiFi 是打开设置界面后会扫描出很多 WiFi 名字,点击输入密码完成连接。在技术方面这个过程会被拆分成很多阶段。第一阶段为列出 WiFi 名字之前,需要扫描 WiFi。

2.扫描-主动扫描

image.png

国内 WiFi(4G)共有三个信道。信道指把 WiFi 频段分成十三个信道供给不同的人用,从而达到对频谱的合理利用。

原理为手机会像每一个信道发送一个管理帧,其目的是询问当前信道是否有 AP 设备,如果有设备会回复probe_response,设备收到后得知有 AP 设备,从而完成主动扫描。主动扫描指设备主动发出询问。

3.扫描-被动扫描

image.png

设备不会主动发送询问,而是在扫描中监听由 AP 设备发送出来的定期广播。如果信道监听到设备发出的广播帧,也会记录信息。被动扫描指设备被动监听。

4.扫描流程

手机依次到信道1~信道13上面进行主动扫描或被动监听

收集到路由器信息之后显示在界面上面,此时就完成了扫描过程

扫描完成除搜集到周围路由器列表外,还可以收集到路由器的的配置信息(加密模式,带宽,信置等802.11规范甲定义的苛政放在IE栏位中的信息)

image.png

手机端主动发送 probe request,AP也会定期被动发送 beacon 帧,手机端既有主动扫描也有被动扫描。如图7信道手机端主动发送 probe request,AP回应 probe response 同时发送 beacon,此时手机端可以扫描到两次信息。其中用到了管理帧 probe request、probe response、beacon。beacon 为100ms 发送一个帧。

5.扫描报文

扫描流程中会用到三种类型的报文

-Probe request:手机主动发送,用于探知周围路由器信息,收到此报文的路由器(设置为隐藏的路由器除外)需要回复 probe response 帧

-Probe response 帧:路由器在收到 Probe request 之后发送

-Beacon:路由器主动定期(一般为100ms)发送的信标帧,用于标识自身的存在

后面将以 probe request 和 probe response 帧为例介绍其报文格式。

6.Probe request 报文格式 

image.png

发送的数字即为报文,Probe request 分为头部和 Frame body。Frame body 为所携带的主要信息报文。MAC header 中的 Frame Control 可以识别管理帧。Frame Control 中的 Type 和 Sub Type 表示当前WiFi帧属于哪一类以及子类。SA可以看到是谁发过来的,DA 为广播地址。Vendor Specific 为开发者根据自己的需求定制的报文。

7. Probe response 报文格式

image.png

重点关注 MAC header 中的 DA、SA 和 BSSID。如果 Probe response 是路由器发送出来的,那么 DA 是发送设备的MAC 地址,SA 为路由器地址,BSSID 为基础服务级的标志符,常与 AP 的 MAC 地址相同。Probe response中还携带了其他关键信息,比如 BSSID 名字以及加密信息和固定参数,比如当前发送的时间周和被动扫描 beacon 帧发送时间为多久发送一次。

8. Beacon 帧报文解析

image.png

主要由三部分组成,第一部分到802.11 radio information,这部分信息记录了报文抓取时的物理层信息,后两部分为头部和详细信息。

9. probe request 帧报文解析

image.png

扫描所有非隐藏路由器为扫描所有路由器,不指定名字。如果指定名字经常扫描不到,因为 beacon 帧被动扫描时不会携带 BSSID 的具体字段。

10.probe response 报文解析

image.png

11.WiFi 认证方式

WiFi 认证有开放系统认证和共享密钥认证两种方式。开放系统认证指没有密码,设备发送 Authentication 和 Association 两种管理帧,AP 回应之后就可以关联。

image.pngimage.png

12.四次握手

WPA 的认证方式分为四个阶段,每个阶段都是在做重要的健全过程,是检验密码是否正确的流程。首先 AP 会生成一个随机数发给设备,同时设备也生成一个随机数。手机端收到随机数之后,用随机数和 WiFi 密码以及其他信息生成PTK 的 K(为加密数据所使用的K)。用 K 将随机数 S 进行加密放到 MAC 里面。MAC 值是使用随机数生成的 PTK,用 PTK 加密 S 和 MAC 地址是否相同。如果路由器生成 PTK 后进行加密生成 MAC,那么值就是对的。拿到 MAC 之后它会验证通过或不通过,会把 MAC 和加密过的 K 发送给设备端,设备端解密 K 后可获取信息并且回应 MAC。两边都将 K 安装到硬件里面,从而完成整个四次握手。所谓的握手就是交换密钥。

image.png

四次握手1/4

image.png

四次握手2/4

image.png

四次握手3/4

image.png

四次握手4/4

image.png

四次握手如果成功双方能够建立一个稳定成功的物理层的基于无线的连接。相当于插上了网线并且具有通讯的权限。

13.DHCP

image.png

设备拿到 IP 地址后就相当于整个流程能够基于 DCPIP 的协议站的信息进行传输和交流数据通信,从而完成整个 WiFi连接过程数据通路的建立以及万物互联的网络全过程

相关文章
|
8天前
|
传感器 运维 物联网
蓝牙Mesh网络:连接未来的智能解决方案
蓝牙Mesh网络:连接未来的智能解决方案
74 12
|
1月前
|
网络协议 Linux
在Linux中,如何分析网络连接和端口占用情况?
在Linux中,如何分析网络连接和端口占用情况?
|
27天前
|
监控 安全 网络安全
|
1月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
37 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
80 2
|
1月前
|
安全 5G 数据安全/隐私保护
|
1月前
|
物联网 网络架构 智能硬件
|
1月前
|
Kubernetes 监控 Shell
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
在K8S中,我们公司用户反应pod连接数非常多,希望看一下这些连接都是什么信息?什么状态?怎么排查?容器里面没有集成bash环境、网络工具,怎么处理?
|
1月前
|
机器学习/深度学习 网络协议 安全
在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?
在Linux中,如何追踪TCP连接和网络数据包,如使用tcpdump或Wireshark?
|
2月前
|
存储 Java 网络安全
如何使用Python批量连接网络设备?
【7月更文挑战第4天】
51 1
如何使用Python批量连接网络设备?