【Wifi】Wifi架构介绍

Wifi架构介绍

  • 本文基于Android介绍其Wifi架构。
  • Wifi是许多操作系统提供的重要功能之一,特别是越来越多的车载系统wifi是其必备功能。为啥wifi是必备功能? 一方面是传统的上网(现在有些车载使用DCM模块管理网络),另一方面就是AP功能了(是自身成为热点),因为无线Carplay和无线AndroidAuto是需要借助蓝牙协议+AP实现无线认证及数据传输,而Carplay、AndroidAuto是车载系统的主要业务功能之一。

Wifi架构

  • Wifi架构图参考如下,包括应用(App)、Service层、Oss(三方库)、系统层(Socket)
应用层
  • WifiApp。应用层根据系统使用的UI框架,调用网络服务API进行开发。如Android可以采用Java形式开发,linux可以采用QT、CEGUI、Kanzi(kanzi也适用于Android)进行开发。通过调用服务层提供的接口,实现相应功能:打开/关闭无线、打开Ap模式、打开P2P模式、选择加密算法等等。
服务层

主要包括NetWorkManager、WifiService两个服务。

  • networkmanager:网络管理服务,向应用层提供DHCP(动态主机配置协议,动态分配地址)、网络状态管理等功能。实际上是通过libnetutils这个动态库调用dhcpd这个服务来实现的。
  • WifiService:一般来说wifi service会提供,无线搜索、无线连接、无线断开,模式切换(staion、p2p、ap)等功能。Station指标准无线模式,Station模式下将设备连接到无线网。AP指master模式,即从无线模式切换到热点模式。P2P指直连模式。WifiService使用libwifi提供的接口实现功能。
Oss三方库
  • 功能开发时很少重复造轮子,一般都会考虑使用现有的三方库(商用系统还需要考虑三方库的license)。参考Android系统,使用了libnetutils提供网络管理功能、libwifi提供无线管理功能。

  • dhcpd,第三方开源库。提供了dhcp功能,libnetutils通过socket "PF_PACKET : local socket"与dhcpd交互。

  • wpa_supplicant,第三发开源库。wpa_supplicant提供了wifi功能,libwifi通过socket "wlan0 : local socket"与其交互。

  • hostapd,第三发开源库。hostapd提供了AP、P2P等功能。libwifi通过linux socket与交互。

  • dhcpd、hostapd、wpa_supplicant都提供了Config文件,通过配置文件实现相应功能。

  • 一般来说,功能开发时通过三方库提供的基本功能,再根据具体业务需要可进行源码的二次开发。

系统层
  • 这里的系统层,指的就是Linux系统了。Linux系统提供了基本的系统级服务文件管理、进程管理、IPC(Socket、共享内存、管道)等等。
Wifi应用打开AP模式

以Wifi打开AP模式为例,整理流程为:

  • 应用层调用WifiService的接口,完成Ap Model Enable功能。
  • wifiservice处理业务逻辑,获取并组合业务层信息。调用libwifi的API。
  • libwifi根据业务层信息创建配置文件,通过ctl.start(实际上是socket通信)启动hostapd进程。
  • hostapd进程被系统拉起,读取config文件,启动Ap功能。

本文简单介绍了Wifi架构,可以看出从软件层次考虑(当然也需要考虑硬件)。主要包括Oss的选择,分层(每一层完成何种功能)、层与层间的通信形式、应用框架的选择等方面的考虑。当前除了这些,诸如安全、wifi认证等方面也需要考虑。

相关推荐
stevenzqzq3 分钟前
Android Jetpack Compose 列表开发指南:为什么你不需要再为底部 Item 写额外间距
android·android jetpack
浩浩测试一下7 小时前
Linux 底层知识点 1
linux·运维·服务器
Escalating_xu7 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
海宇数据8 小时前
零信任架构实战:基于海宇网上踪迹欺诈行为识别构建自动化信贷资信评估网关
运维·人工智能·架构·自动化
翼龙云_cloud8 小时前
亚马逊云服务器服务代理商:Bedrock 实践经验 Serverless 架构下的 AI 自动化落地
服务器·架构·serverless·云计算·aws
撩得Android一次心动8 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
烛影摇红透纱窗8 小时前
AI从零介绍代码架构的复盘(含要使用的提示词)
人工智能·架构
忆挽篱笙歌8 小时前
环境变量,本地变量
linux·运维·服务器
是真的小外套9 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
小天源10 小时前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控