wifi详解(一)

【通信协议解析】WiFi协议解析 又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。 阅读详情

1        WLAN技术

WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。

2        802.11协议简述

2.1.1       概述

作为全球公认的局域网权威,IEEE802工作组建立的标准在过去二十年内在局域网领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T快速以太网协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域网领域内的第一个国际上被认可的协议。

在1999年9月,他们又提出了802.11b"HighRate"协议,用来对802.11协议进行补充,802.11b在802.11的1Mbps和2Mbps速率下又增加了5.5Mbps和11Mbps两个新的网络吞吐速率。利用802.11b,移动用户能够获得同Ethernet一样的性能、网络吞吐率、可用性。这个基于标准的技术使得管理员可以根据环境选择合适的局域网技术来构造自己的网络,满足他们的商业用户和其他用户的需求。802.11协议主要工作在ISO协议的最低两层上,并在物理层上进行了一些改动,加入了高速数字传输的特性和连接的稳定性。

主要内容:
  1.802.11工作方式
  2.802.11物理层
  3.802.11b的增强物理层
  4.802.11数字链路层
  5.联合结构、蜂窝结构和漫游

3        802.11四种主要物理组件

3.1      工作站(Station)

构建网络的主要目的是为了在工作站间传送数据。所谓工作站,是指配备无线网络接口的计算设备。

3.2      接入点(Access Point)

802.11网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线的桥接功能的设备称为接入点,接入点的功能不仅于此,但桥接最为重要。

3.3      无线媒介(Wireless Medium)

802.11标准以无线媒介在工作站之间传递帧。其所定义的物理层不只是一种,802.11最初标准化了两种射频物理层以及一种红外线物理层。

3.4      分布式系统(Distribution System)

当几个接入点串联以覆盖较大区域时,彼此之间必须相互通信以掌握移动式工作站的行踪。分布式系统属于802.11的逻辑组件,负责将帧转送至目的地。

下图为802.11网络的基本服务集(basic service set),其中包含了这四种物理组件。


4        WIFI适配层

里面定义很多字符串变量和适配层的接口实现,是对wpa_supplicant程序通信的接口封装,用来完成上层和wpa_supplicant的通信, 头文件在libhardware/include/hardware下,这里的函数用来向JNI的本地实现提供调用接口。

这里的函数,我把它们分为四类函数:

一类是命令相关的(控制)函数,就是在JNI层android_XXX_Command()函数所调用 的Wifi_Command()函数,调用流程如下:

android_XXX_command()=>docommand()=>wifi_command()=>wifi_send_command()=>wpa_ctrl_require()。

二类是 监听函数,即Wifi_wait_for_event()函数,调用流程如下:android_net_wifi_Waitforevent()=>wifi_wait_for_event()=>wpa_ctrl_recv()。

三就是WPA_SUPPLICANT的启动,连接,关闭函数

四是驱动的加载和卸载函数

5        wpa_supplicant

5.1      wpa_ctrl的作用

定义了两类套接字和一个管道,并分别实现了和wpa_supplicant的通信,而在实际的实现中采用的都是套接字的方式,因此wpa_supplicant适配层和wpa_supplicant层 是通过socket通讯的。

要是从wifi.c中真的很难看出它和wpa_supplicant有什么关系,和它联系密切的就是 这个wpa_ctrl.h文件,这里面定义了一个类wpa_ctrl,这个类中声明了两个Socket套接口,一个是本地一个是要连接的套接 口,wpa_ctrl与wpa_supplicant的通信就需要socket来帮忙了,而wpa_supplicant就是通过调用 wpa_ctrl.h中定义的函数和wpa_supplicant进行通讯的,wpa_ctrl类(其实是其中的两个socket)就是他们之间的桥梁。

5.2      WPA_SUPPLICANT

5.2.1       概念

wpa_supplicant本是开源项目源码,被谷歌修改后加入android移动平台,它主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,而实际上的工作内容是通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调动驱动来对WiFi芯片操作。 简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

5.2.2       Wpa_supplicant与驱动的交互

5.2.2.1        wpa_supplicant.c

首先定义一个驱动操作数组externstructwpa_driver_ops *wpa_supplicant_drivers[],然后是系列wpa_supplicant_XXX()函数,很多函数里面调用 wpa_drv_XXX()函数,这些函数是wpa_supplicant_i.h中实现的函数。几乎每个函数都需要一个wpa_supplicant结 构,对其进行所有的控制和通信操作。

5.2.2.2        Wpa_supplicant_i.h

其中定义了一个重要数据结构wpa_supplicant,其中有一个重要的driver成 员,它是wpa_driver_ops类型,可以被用来调用抽象层的接口。接下来是系列函数声明,这些函数声明在wpa_supplicant.c中实现,然后就是wpa_drv_XXX函数,这些函数就是在 wpa_supplicant.c中被wpa_supplicant_xxx函数调用的,而这些wpa_drv_xxx函数也都有一个 wpa_supplicant结构的变量指针,用来调用封装的抽象接口,而这些抽象接口的实现在driver_wext.c中(如果使用的汉斯WEXT驱动)。

这里要注意的是:在wpa_suppliant.c文件中定义的很多函数是在该头文件中声明的,而不是在wpa_supplicant.h中声明的。

5.2.2.3        Driver_wext.c

对wpa_drvier_ops的个函数的具体实现,该结构指针在wpa_supplicant注册一个网络接口时会被初始化赋予指定的操作指针,wpa_supplicant.c中的wpa_supplicant_xxx函数通过wpa_supplicant结构中的该操作指针调用WEXT的实现接口。

就是在该文件中,创建了三个socket:ioctrl_socket,event_socket和mlme_socket,它们分别有自己的用途,如ioctrl_socket用于发送控制命令,event_socket用于监听驱动传来的event事件等。Wpa_supplicant通过这三个socket与wifi驱动关联,这里的socket同fd(文件描述符)类似。

6        Wpa_cli调试工具

6.1      启动wpa_supplicant

使用下面命令启动wpa_supplicant:

       wpa_supplicant-Dwext -iwlan0 -C/data/system/wpa_supplicant-c/data/misc/wifi/wpa_supplicant.conf

 为了确保wpa_supplicant真的启动起来了,使用“ps”命令查看。

6.2        连接wpa_cli到wpa_supplicant

       wpa_cli-p/data/system/wpa_supplicant -iwlan0

      然后,就可以使用wpa_cli调试工具进行wifi调试了,下面列出了一些常用的调试命令:

      >scan                            //扫描周围的AP

      >scan_results        //显示扫描结果

      >status                   //显示当前的连接状态信息

      >terminate             //终止wpa_supplicant

      >quit                        //退出wpa_cli

      >add_network       //返回可用network id

      >set_network<network id> <variable> <value> //设置网络

      >select_network<network id>          //选择网络,禁用其它网络

      >disable_network<network id>  //禁用网络

      >enable_network<network id>        //启用网络

6.3      示例

6.3.1       无密钥认证AP

             >add_network      (返回可用networkid, 假定返回0)

             >set_network 0 ssid “666”

             >set_network 0 key_mgmt NONE

             >enable_network 0

             >quit

如果上面的操作正确,我们会连接到一个AP,它的SSID为“666”,现在需要一个IP来访问internet:

             dhcpcd wlan0

成功获取IP后,即可连上internet。

6.3.2       WEP认证AP

             >add_network      (假设返回1)

             >set_network 1 ssid “666”

             >set_network 1 key_mgmt NONE

             >set_network 1 wep_key0 “ap passwork”

             >set_network 1 wep_tx_keyidx 0

             >select_network 1     (如果你已经连上了其它的AP,那么就需要这个命令来禁用其它的网络)

             >enable_network 1

       然后同上获取IP,连接到internet上。

6.3.3       WPA-PSK/WPA2-PSK认证AP

             >add_network      (假定返回2)

             >set_network 2 ssid “666”

             >set_network 2 psk “your pre-shared key”

             >select_network 2 

             >enable_network 2

还有其它的命令进一步设置网络,不过wpa_supplicant已经给了我们一些默认的配置。

6.3.4        隐藏藏AP

  原则上应该只要在上面的基础上去set_network netid scan_ssid 1即可,测试过无加密的Hidden AP,WEP/WPA/WPA2应该道理一样。

 

Wifi通信协议:WEP,WPA,WPA2,WPA3,WPS 无线安全性是保护互联网安全的重要因素。连接到安全性低的无线网络可能会带来安全风险,包括数据泄露、账号被盗以及恶意软件的安装。因此,利用合适的Wi-Fi安全措施是非常重要的,了解WEP、WPA、WPA2和WPA3等各种无线加密标准的区别也是至关重要的。 WPA(Wi-Fi Protected Access)是用于保护无线网络连接的计算设备内部的安全标准。它由Wi-Fi联盟开发,用来替代原先的无线安全标准WEP(Wired Equivalent Privacy),并在数据加密和用户认证方面表现优越。 阅读详情

相关推荐

WIFI驱动详细设计说明书

目录 引言 4 1.1. 文档目的 4 1.2. 参考文献 4 1.3. 符号和缩略语 4 总体设计介绍 4 2.1. 概述 4 2.2. 功能定义 5 2.2.1. WIFI驱动功能定义 5 2.2.2. WIFI安全定义 6 2.3. 系统资源需求与依赖 7 2.3.1. 硬件资源框图 7 2.3.2. 软件资源 8 2.4. 软件设计方案 8 2.4.1. WIFI驱动框架结构 8 2.4.2. LIBWIFI模块驱动软件方框图 10 2.4.2.1. 无线网卡控制模块 11 2.4.2.2.

huangling07031190的专栏 4399

WIFI 通信协议解析:深入探究其帧格式与帧内容

WIFI通信协议通过其精心设计的帧格式、丰富多样的帧内容以及一系列关键机制和特性,实现了在无线环境下高效、可靠的通信。其帧格式从MAC层到PHY层,详细规定了数据的组织形式和传输规则,各个字段都有其特定的功能和意义。帧内容则根据不同类型的帧(数据帧、管理帧、控制帧等)承载着相应的信息,用于完成不同的通信任务。

candy的博客 3443

51单片机智能小车

最近学校举办了一个智能小车比赛,比赛内容为用手机蓝牙控制小车拥有5个功能,分别是超声波舵机避障,测距(显示在LCD1602上), 红外跟随,循迹还有蓝牙控制小车前进后退左转又转以及停止。 文章目录 蓝牙控制所有功能 一、蓝牙控制前进后退左转右转停止 二、舵机超声波避障加测距 三、红外跟随 四、循迹 五、代码部分 六、完整代码 前言 基于51单片机的智能小车是比较基础的小车,很适合初学者学习 提示:以下是本篇文章正文内容,下面案例可供参考 一、整体思路 这款小...

m0_55977420的博客 1万+

Wi-Fi技术

本文主要介绍Wi-Fi的基本概念,协议发展,以及Wi-Fi6的改进。

觅食小鱼的博客 6877

手把手教你用ZLMediaKit搭建WebRTC直播:本地推流与播放实战

本文详细介绍了如何使用ZLMediaKit搭建WebRTC直播系统,涵盖从环境准备、编译部署、SSL证书配置到本地推流与播放的完整实战流程。通过一步步的指导,帮助开发者快速掌握基于ZLMediaKit的WebRTC推拉流技术,构建低延迟的实时音视频应用。

weixin_28842367的博客 347

开源分享:苹果群控手机源代码解析与实战

本文介绍了苹果设备群控的基本原理和实现方法,重点解析了基于Python+Appium的群控系统构建。主要内容包括:1)设备连接管理技术(USB/Wi-Fi);2)自动化控制方式(WDA/AppleScript/Appium);3)实战演示了通过Python脚本实现多设备同时控制,涵盖环境配置、代码解析和功能说明;4)提出了多线程、图像识别等优化方向。文章为开发者提供了快速上手的群控方案,适用于自动化测试、批量管理等场景,并推荐了相关开源项目参考。

2403_88540309的博客 1344

wifi详解(一)

1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。 2

ylyuanlu的专栏 4万+

vscode+latex+bib文献管理

下载vscode 安装插件`` 在setting.json中配置 在.tex文件中编写论文内容,然后左侧TEX侧边栏中编译,如下图所示,中文用xelatex,英文用pdflatex;编译成功后,就可以查看pdf版本的论文了,我一般在浏览器显示。 涉及到文献编译:XXX.bib中存储文献管理内容;XXX.tex是文章内容,使用xelatex编译后会生成XXX.aux,ctrl+⋅ctrl+·ctrl+⋅打开命令行窗口,输入bibtex XXX(可以对aux文件进行编译,不需要加后缀),然后再xelatex.

小卜妞的博客 2548

【转载】wifi详解(一)

作为全球公认的局域网权威,IEEE802工作组建立的标准在过去二十年内在局域网领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T快速以太网协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域网领域内的第一个国际上被认可的协议。

茫茫大士的专栏 611

CODESYS Softmotion(一)功能介绍

一、CODESYS SoftMotion RTE SL产品 1.1 CODESYS Runtime SL 产品家族介绍 目前支持的主流厂商的硬件产品,让部署在上面的成为实时设备。 对于Windows系统,根据需求选择对应的Runtime: RTE极大的提高了实时性,适合进行运动控制,同时RTE还支持了多个主从站协议: 还可以选择可选的功能(Single License): RTE对硬件和系统有要求,如果你需要硬件功能,那么网卡会有最低要求。 1.2 RTE的下载和安装 在官网http://codes

Fishfishfishfishcat 2万+

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

Lettuce是SpringBoot自带的Redis客户端,性能比Redis要好, 是线程安全的,支持同步编程,异步编程,响应式编程,自动重新连接,主从模式,集群模块,哨兵模式Redisson 是一个在 Redis 的功能基础上实现的 Java 驻内存数据网格客户端。实现了分布式和可扩展的 Java 数据结构,提供很多分布式相关操作服务,例如分布式锁,分布式集合,可通过 Redis 支持延迟队列。

朗朗的博客 3833

WIFI详解(一)

http://blog.youkuaiyun.com/ylyuanlu/article/details/7711396 1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动

1248

下载和运行GitHub上的代码教程总结

从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄。然而,今天终于成功了,激动地我赶紧来记录一下。 如何从GitHub上下载自己需要的项目: 1.首先,你要有一个自己的GitHub(https://github.com/)的账号。关于如何注册GitHub的账号以及如何获取你的SSH密钥这个问题,请大家参...

不怕万人阻挡,只怕自己投降 29万+

wifi详解一

1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。 2

蓝精灵的专栏 713

ATE FT ChangeKit学习总结-20250630

半导体封装测试中的ChangeKit是Handler测试机的关键配套治具,主要用于适配不同芯片封装尺寸的FT测试。其主要特点包括:1)适应性,可快速切换不同测试设置;2)精准性,确保器件测试安全;3)高效性,减少停机时间。主要组件含Shuttle传送机构、HotPlate预热盘、DockPlate连接件和Contactor压头。设计需考虑Handler型号、芯片规格及PCB匹配(如140mm标准孔位),特别在低温测试时需注意吹气块布局。ChangeKit实现了测试设备的灵活配置,提升了半导体测试效率。

歌颂苦难的行为是无耻的; 1750

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

wifi详解<一>

1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。 2

sunnywalden 1052

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mininet-wifi examples 官方例子详解(一)

本博客总结了examples文件下面的例子的用法,需要注意的事项以及今后编码需要用到的技巧。有些例子经过了自己的改动。 例1 4address IEEE 802.11 (WLAN)帧的报头有四个地址字段。为了在无线分配系统(WDS)链路上透明地传输以太网数据包,IEEE 802.3(以太网)帧被封装在IEEE 802.11 (WLAN)帧中。在这种情况下,所有四个地址字段都被使用 •以太网帧的发送...

fanc的博客 4875

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Android的WiFi子系统架构
下一篇: wifi详解(二)
yongheng_123
博客等级 码龄18年 23粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值