1. WiFi 简介
1.1 WiFi 介绍
WiFi 是一种无线通信技术,可以将个人电脑、手持设备(如 pad、手机)等终端以无线方式互相连接。WiFi 网络是使用无线通信技术在一定的局部范围内建立的网络,是计算机网络与无线通信技术相结合的产物,它以无线多址信道作为媒介,提供传统局域网的功能,使用户真正实现随时随地随意的宽带网络接入。
WiFi 主要遵循 IEEE802.11 系列协议标准,该通信协议于 1996 年由澳洲的研究机构 CSIRO 提出,WiFi 凭借其独特的技术优势,被公认为是目前最为主流的 WLAN(无线局域网)技术标准。随着 WiFi 无线通信技术的不断优化和发展,目前主要的通信协议标准有 802.11a、802.11b、802.11g、802.11n 和 802.11ac、802.11ax,根据不同的协议标准主要有两个工作频段,分别为 2.4GHz 和 5.0GHz。
下表简单介绍了各个标准的发布时间和特点。
1.2 基本概念
1.2.1 WiFi 网络结构
WiFi 无线网络中包含了一些基本的组成元素如工作站,接入点等,以下介绍 WiFi 网络中一些基础概念。
(1)工作站(Station)
工作站是指配备无线网络接口的终端设备(计算机、手机等),构建网络的目的就是为了在工作站间传送数据。
(2)接入点(Access Point)
802.11 网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线(wireless-to-wired)的桥接功能的设备称为接入点,简称 AP。
(3)无线媒介(Wireless medium)
802.11 标准以无线媒介在工作站之间传递帧。
(4)分布式系统(Distribution system)
几个接入点串联起来可以覆盖一块比较大的区域,接入点之间相互通信可以掌握移动式工作站的行踪,这就组成了一个分布式系统。分布式系统属于 802.11 的逻辑组件,负责将帧(frame)传送至目的地,分布式系统是接入点间转发帧的骨干网络,因此通常称为骨干网络(backbone network),基本都是以太网(Ethernet)。
图 1 WiFi 分布式系统组成
如图,在分布式网络拓扑结构中,有几个基本概念:
1)基本服务集(BSS)
由一组彼此通信的工作站组成,这里只讨论基础型 BSS,一个热点覆盖的范围称为一个 BSS。
2)扩展服务集(ESS)
多个 BSS 可以构成一个扩展网络,称为扩展服务集(ESS)网络,一个 ESS 网络内部的 STA 可以互相通信,是采用相同的 SSID 的多个 BSS 形成的更大规模的虚拟 BSS。
连接 BSS 的组件称为分布式系统(Distribution System,DS)。
3)SSID
Service Set ID,服务集标识。
SSID 是让网管人员为服务集合(SS)指定的识别码,组成 ESS 的所有 BSS 都会使用相同的 SSID。
4)BSSID
Basic Service Set ID,基本服务集标识。
在基础网络里,BSSID 就是接入点(AP)使用的 MAC 地址。
5)ESSID
Extended Service Set ID,扩展服务集标识。
因为 ESS 中所有 BSS 使用同一标识,所以 ESSID 就是 SSID。
1.2.2 WiFi 网络安全技术
IEEE802.11 技术从出现开始,就一直为安全问题困扰。继因安全性问题被指责的 WEP 后,Wifi 联盟先后推出了 WPA 和 WPA2 安全标准以及最新的 WPA3 标准。下面对常见的这几种安全标准做简单说明。
l WEP(Wired Equivalent Privacy,有线等效加密),是 IEEE802.11 最初提出的基于 RC4 流加密算法的安全协议,存在加密流重用、密钥管理等问题,已基本被弃用。
l WPA(WiFi Protected Access,WiFi 保护访问),WiFi 联盟在 IEEE802.11i 草案基础上制定的一项无线网络安全技术,目的在于替代传统 WEP 安全技术,分为 WPA Personal(pre-shared key 身份验证)和 WPA Enterprise。WPA 使用临时密钥完整性协议(Temporal Key Integrity Protocol,TKIP),提高了无线网络的安全性。
l WPA2 是 WPA 的加强版,支持高级加密协议(Advanced Encryption Standard,AES),使用计数器模式密码块链消息完整码协议(CCMP),安全性比 WPA 有进一步提升。
l WPA3 是 Wi-Fi 联盟组织于 2018 年 1 月 8 日发布的 Wifi 新加密协议,是 WPA2 技术的后续版本。WPA3 支持 SAE(对等同步认证)以及具有 192 位加密功能的 WPA3-Enterprise,比 WPA2 更安全。
1.2.3 WiFi 工作模式
鸿蒙系统的 WiFi 组件在驱动支持的前提下,可以支持三种工作模式:STATION 模式、AP 模式和 P2P 模式。
●STATION 模式,就是 2.2.1 中讲到的工作站,也就是无线局域网中的一个客户端,这是 Wifi 最基本的工作模式,通过连接其他接入点访问网络。
●AP 模式也就是接入点模式,即设备作为接入点,为无线局域网中的客户端提供网络接入功能,大多数终端设备称其为 hotspot(热点)或者 softap,通过 wifi 的 AP 模式,可以将设备的运营商数据网络共享给接入的客户端,实现随时随地的网络资源共享。
●P2P 模式是 WFA(WiFi 联盟)推出的一项与蓝牙类似的技术,允许设备间一对一直连,无需通过 AP 即可相互连接。P2P 模式中的设备,称为 P2P Device,P2P 设备组成的网络叫 P2P Group。在 P2P 网络中,P2P Device 有两个角色,一个是 GO(Group Owner),其作用类似于 AP;另一个角色是 GC(Group Client),类似于工作站(Station)。P2P 设备完成协商组建为一个 P2P 网络的时候,有且只能有一个设备作为 GO,其他设备做为 GC。Wifi P2P 模式传输速度和传输距离比蓝牙有大幅提升,但功耗也要比蓝牙高。
2. WiFi 子系统介绍
本章主要讲解鸿蒙系统中 WIFI 子系统的架构组成以及部分关键模块的实现。
2.1 系统架构简介
图 1 WiFi 系统架构图
如图 1 所示,鸿蒙 WiFi 系统是典型的分层结构,自上而下包括:
●应用层
主要包含鸿蒙提供的 settings 应用,该应用是典型的用户使用 WiFi 的方式,提供用户可见的设置界面,提供 WiFi 开关、WiFi 扫描、连接断开等基本功能。
应用代码通过导入接口类,从而调用下层 WIFI Native 提供的 JS 接口,这部分实现的代码在以下目录中:
applications\standard\settings
●Wifi Native JS
这部分应用了 Node.js 推出的用于开发 C 原生模块的接口 N-API 技术,对框架提供的 C 接口进行封装,为应用提供了调用 WiFi 功能的 JS 接口。
这部分代码在以下目录中:
foundation\communication\wifi\interfaces
●WiFi 框架
主要包含 wifi 服务的实现。其中,
wifi_manager_service 负责管理 STA、SCAN、AP、P2P 等服务的加载和卸载。
wifi_ap_service 实现 AP 模式的状态机管理和事件处理。
wifi_p2p_service 实现 P2P 模式的状态机管理和事件处理。
wifi_scan_service 实现 SCAN 时的状态机管理和事件处理。
wifi_sta_service 实现 STA 模式的状态机管理和事件处理。
wifi_idl_client 实现了与 Wifi HAL 进行 RPC 通信的客户端。
dhcp_manager_service 实现 DHCP 管理服务,启动 DHCP 客户端或者 DHCP 服务器。
dhcp_client_service 是 DHCP 客户端的实现。
dhcp_server 是 DHCP 服务器的实现。
这部分代码在以下目录中:
foundation\communication\wifi\services\wifi_stand