• 学习WiFi,怎么入手?


    欢迎大家一起学习探讨通信之WLAN。在工作和平时与朋友交流中,时不时有人问到,“想学WiFi,不知道如何入手?”,“搞了一两年WiFi,但感觉还是一头雾水,啥都没掌握,怎么办?”。本文个人将从自己工作和职业发展的角度尝试回答这个问题,希望对想从事WiFi开发的朋友们有所帮助。

    本节相关课节内容:

    1.公众号"通信之WLAN"内容《通信系列》

    2.公众号"通信之WLAN"内容《WiFi专栏》

    从一个小故事开始。故事内容是这样的!

    小王:计算机专业,研究生毕业。今天正式入职一家从事WiFi产品相关开发的公司。

    师傅:你之前了解过WiFi流程和协议吗?

    小王:没有。

    师傅:好。我先发你点资料,你先学习看看。《802.11无线网络权威指南》和《80211-2020.pdf协议标准》。

    小王:好的。

    时间两周过去了。。。

    师傅:学的咋样了?

    小王:大概知道了啥是WiFi,WiFi有哪些帧类型。基本的名词掌握了。

    师傅:好的。学习WiFi要基于实际流程分析。你结合抓包学习学习。

    时间两周过去了。。。

    师傅:学的咋样了?

    小王:大概知道了WiFi的连接流程和相关帧类型。

    师傅:好的。学习WiFi要从代码层去分析和研读协议标准。你要开始分析简单的一些WiFi连接过程中的问题。

    时间两个月过去了。。。

    小王可以从代码层面上分析WiFi连接和断开等流程,可以开始工作了。

    时间一年过去了。。。

    小王对WiFi协议交互和代码比较熟悉,处理问题比较顺手。

    时间又一年过去了。。。

    小王将可能面临两种情况:

    情况1:“WiFi相关专业知识这么多,感觉啥都不会,很迷茫”。

    情况2:“WiFi就这一点东西,每天就是分析包,分析流程,没意思”。

    此时的小王,很容易放弃从事的WiFi行业,转行了。

    相信大家身边也遇到类似小王的情况。WiFi网络作为一种无线通信系统,说它简单,一定是骗人的。WiFi领域可分为两个大方向“学术研究”和“工程开发”。

    “学术研究”:协议标准研究制定,通过引进新的技术和优化通信机制,提高WiFi网络通信系统的性能。

    “工程开发”:基于WiFi协议标准,开发实现组成WiFi网络通信系统的产品。

    重点来看“工程开发”。以Android系统为例,先来看下WiFi岗位的划分,WiFi技术的“工程开发”涉及细分的WiFi岗位为:

    WiFi应用工程师:WiFi设置开发,基于WiFi技术应用开发,DHCP/DNS等应用层协议。

    WiFi框架工程师:Android系统Framework WiFi模块和wpa_supplicant。

    WiFi驱动工程师:Host WiFi驱动开发。

    WiFi协议工程师:WiFi MAC层协议的开发,如Firmware固件实现。

    WiFi数字工程师:WiFi技术涉及数字部分RTL实现。

    WiFi射频工程师:WiFi RF相关实现。

    大多数公司WiFi岗位划分都不是很清晰,统称为WiFi工程师。从WiFi涉及岗位的划分,除“WiFi数字工程师”和“WiFi射频工程师”岗位外,强烈建议从上向下学,方便入手。

    好。接下来尝试解答“学习WiFi,怎么入手更合适?”。

    第一阶段:通信基础

    WiFi是组成无线通信系统网络的技术,学习WiFi之前,需掌握“通信原理“的基本知识,了解基本的通信系统模型,设备间数据无线传输需经过哪些主要过程。

    学习内容:

    1、查看《通信原理》教材

    2、公众号-通信系列【第1,2,4节】

    WiFi网络也完全符合基本的通信系统模型,通过对通信系统理论的了解,在进一步入手学习WiFi,就有了“心中有网,学着不慌”感觉。

    第二阶段:理论基础

    经过第一阶段的学习,掌握了通信系统主要模块组成。WiFi技术即按照WiFi协议实现,使设备间可以组成WiFi网络通信系统。掌握WiFi相关的名称概念和理论基础,必不可少。推荐两本WiFi中文版书籍。

    学习内容:

    1、阅读学习《802.11 无线网络权威指南》

    2、阅读学习《CWNA 官方学习指南(第3版)-认证无线网络管理员》

    通过以上两本WiFi技术相关的书籍学习,将会对WiFi网络通信系统有更深一步的了解。同时,可掌握WiFi的相关基础理论知识点。

    第三阶段:实例分析

    经过前两个阶段的学习,对WiFi技术有了一定的了解。掌握WiFi相关的抓包工具使用,分析设备间帧交互流程,可更好的了解WiFi技术。利用身边手机WiFi设备连接路由器,抓取完整手机WiFi连接路由器的整个过程。结合第二阶段学习内容,学习相关帧格式和主要字段含义。

    学习内容:

    1、阅读学习《第二十九节:通信之WLAN(Omnipeek-Ⅰ)》

    第四阶段:代码分析

    根据手头资源情况选择对应的设备。如Android 手机,找到对应的Android源码。根据岗位情况,从WiFi 设置应用开始,代码层面仔细跟踪WiFi扫描的整个代码实现流程。

    WiFi设置->Android WiFi Framework->wpa_supplicant->linux cfg80211->host driver->Firmeware。

    其他FreeRTOS或linux系统等,建议从代码层面详细分析WiFi的扫描流程逻辑。

    第五阶段:协议学习

    通过前四个阶段的学习,学习WiFi已算成功入门。为了解决小王两年后可能面临的问题。从事WiFi技术开发,学习研读WiFi协议标准非常重要。

    工作中好多协议上的问题和困惑,在标准协议中基本都可以找到答案。同时,可以更系统的掌握WiFi技术。

    举个例子,笔者在分析RTS和CTS流程有点疑问,RTS请求Duration值怎么计算?

    阅读相关协议有以下规定:

    1、控制帧需要使用Basic Rate发

    2、CTS 回复的速率不能高于RTS 使用速率。

    3、CTS frame PLCP Preamble 回复使用RTS相同的Long或Short。

    CTS Frame占14个字节, 使用以RTS的速率来计算还是相同制式最小速率计算?

    如RTS 11Mb/s, CTS Frame 14个字节,以RTS速率计算发送占用时长:14*8/11=11us。

    但CTS Frame回复的速率有可能1Mb/s 回复, CTS Frame 14B 占用时长:112us。

    这里将有个问题:

    问题1:

    如果RTS Duration值以RTS速率11Mb/s计算,发送RTS的设备,收到CTS是1Mb/s,即认为媒介可以使用,直接发送。

    做为CTS接收方,不检测CTS Duration。将导致空口时长少申请了101us。

    存在潜在造成空口冲突,导致数据发送失败的风险。

    问题2:
    如果RTS Duration值以相同制式最低速率计算,如1Mb/s,CTS使用11Mb/s回复。将多申请101us。

    潜在存在造成空口资源占用浪费。

    通过阅读802.11标准协议,协议已写的很明确,CTS帧发送占时就以RTS速率计算。

    注:协议规范【原】

    1. The Duration/ID field in the CTS frame shall be the duration field from the received RTS frame, adjusted by subtraction of aSIFSTime and the number of microseconds required to transmit a CTS frame at the data rate used for the RTS frame to which this CTS frame is a response.

    2. When an RTS/CTS exchange is used, the asynchronous data frame shall be transmitted after the end of the CTS frame and a SIFS period. No regard shall be given to the busy or idle status of the medium when transmitting this data frame.

    可见,研读802.11协议在从事WiFi开发工作中是非常必要的。但刚开始入手WiFi相关协议,将会发现WiFi的协议特别多,802.11b/g/n/ac/ad/ax/be,802.11-1999/802.11-2007和802.11-2020等等。每个文档少则几百页,多则几千页。建议从最初的WiFi协议研读,后续的WiFi相关协议发展都在最初的协议标准上进行。

    网络上WiFi相关技术的帖子也非常多。可以根据需要针对的阅读学习。

    如下引用徐博整理的网络中WiFi相关资源。

    https://zhuanlan.zhihu.com/p/375649906

    学习内容:

    1、《802.11-1999》

    2、《802.11i》

    3、《802.11e》

    4、《802.11n》

    上面协议建议按照顺序研读。开始就入手研读《802.11-2020》内容太多,难度大。对于刚入手学习WiFi协议的人阅读《802.11-1999》会更合适,更友好。文档总共才536页,相比《802.11-2020》的4379页少太多。其页数少,内容更为重要。

    针对刚入手学习WiFi的朋友来说,WiFi相关知识点确实很多,但通过以上五个阶段的学习,从WiFi网络通信系统的角度学习研究,可很好的将零碎的知识点串联起来。有理论又有实践,将会发现从事WiFi行业,也是一种快乐的事。

    笔者整理了文章内容提及到的所有资料,如有需要,可在CSDN上下载,链接如下。如无积分,可公众号私信获取。谢谢~!

    https://download.csdn.net/download/chase_dtao/87824651

    注:

    以上文章内容仅代表个人观点,仅供参考。如感兴趣更多通信知识,可关注“通信之WLAN”微信公众号。谢谢大家支持~!

  • 相关阅读:
    学会使用这些电脑技巧,可以让你在工作中受益无穷
    常用web协议学习与抓包实战
    [附源码]Python计算机毕业设计Django餐馆点餐管理系统
    对IP协议概念以及IP地址的概念进行简单整理
    Rust(trait、Box指针、自动化测试、迭代器)
    Linux内核分析(十七)--内存管理之用户栈与内核栈及内核地址空间分布
    一文读懂 TsFile
    数据库概论(简单介绍)
    【打卡】【sysfs相关API详解】21天学习挑战赛—RK3399平台开发入门到精通-Day19
    【使用 BERT 的问答系统】第 6 章 :BERT 模型应用:其他任务
  • 原文地址:https://blog.csdn.net/chase_dtao/article/details/130909772