802.11 协议介绍

2023-05-16

802.11协议基础
前言-OSI七层网络
开放式系统互联模型(Open System Interconnection Model)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。

OSI定义了网络互连的七层框架,如下图所示:

OSI-7layer-diagram

 

现实中的互联网模型是基于TCP/IP协议的五层模型,如下图所示:

TCP/IP-5layer-diagram

 

802.11协议限定在OSI七层网络模型的最低两层——数据链路层和物理层。

802.11协议是什么
先看IEEE802是什么。

IEEE 802协议簇是指IEEE标准中关于局域网(LAN)和城域网(MAN)的一系列标准。IEEE 802中定义的服务和协议限定在OSI七层网络模型的最低两层,即数据链路层和物理层。实际上,IEEE802又将OSI的数据链路层分成了两个子层,逻辑链路控制层(LLC)和媒介访问控制层(MAC)。

IEEE802协议簇由IEEE802标准委员会维护。其中最广泛应用的协议有以太网(802.3)和WLAN(802.11)。每一个工作组专注一个方向,每个工作组由数字编号,比如目前从802.1编到了802.24。

因此,802.11协议是IEEE802标准委员会下属的无线局域网工作组制定的无线局域网标准。

发展历程
802.11
1990年IEEE 802.11委员会成立,1993年开始有热点部署。IEEE 802.11的第一个版本于1997年推出。

物理层调制技术:DSSS,2Mbps
802.11b/a/g
2007年发布了正式版本《IEEE Std 802.11-2007》,主要的扩展有802.11a/b/g/i/e。注意这里的2007是标准正式发布的年份,在这之前数年已经有草案发布,相应的产品也已推向市场,下同。

802.11b: 1999年,2.4GHz;物理层调制技术:DSSS,11Mbps
802.11a: 2000年,5GHz;物理层调制技术:OFDM,最高64QAM调制,54Mbps
802.11g: 2003年,2.4GHz;物理层调制技术:OFDM,最高64QAM调制,54Mbps
802.11i: 2004年,MAC层安全增强,WiFi加密相关的协议
802.11e: 2005年,MAC层QoS增强
802.11n
2012年发布了正式版本《IEEE Std 802.11-2012》,主要扩展是802.11n,称为WiFi4。(这里的WiFi加数字表示方法由WiFi联盟为了推广802.11ax于2019年推出)

802.11n: 2009年,2.4GHz和5GHz;物理层技术:MIMO, OFDM; 最高64QAM调制,最高4条空间流,最大40MHz带宽。常用的双流40MHz带宽下,最高物理层速率是300Mbps。
802.11ac
2016年正式发布《IEEE Std 802.11-2016》,主要扩展是802.11ac,称为WiFi5。

802.11ac: 2014年,2.4GHz和5GHz;物理层技术:MIMO, OFDM,最高256QAM调制,最高8条空间流,最大160MHz带宽。常用的双流80MHz带宽下,最高物理层速率是866Mbps
802.11ax
802.11ax于2019年推出,当前还处在草案阶段,尚未发布正式版本,主要扩展是802.11ax,称为WiFi6。

802.11ax: 2018年;物理层技术:MIMO, OFDM, OFDMA,最高1024QAM调制,最高8条空间流,最大160MHz带宽。常用的双流80MHz带宽下,最高物理层速率是1201Mbps。
网络拓扑结构
802.11典型的网络拓扑结构如下所示:

BSS network topology

 

一个AP和若干STA组成一个BSS,每个BSS由一个SSID(Service Set ID)来标识。

一般地,AP具有路由器功能,通过WAN口连接到Internet;STA通过无线连接AP。

进一步,由多个SSID相同的BSS网络组成ESS网络。ESS网络常见于企业、学校、机场等较大的物理空间场所,需要部署多个AP才能满足无线网络覆盖需求。STA在ESS下不同BSS之间的切换称为漫游。

ESS network topology

 

802.11 MAC层协议介绍
载波监听与冲突避免
无线传输是在开放环境中进行的,需要有一个协调各站点访问空口媒介的机制。不然各站点任意接入媒介的话,会互相干扰,最终谁都无法有效传输数据。

媒介的协调访问由协调功能(CF, coordination function)控制,802.11协议采用叫作CSMA/CA机制的分布式协调功能(DCF,distributed coordination function)来控制。

CSMA/CA,英文全称Carrier Sense Multiple Access/Collision Avoid,中文含义是载波监听多路访问与冲突避免。

载波监听:即当一个站点想访问媒介发送数据时,它先通过对媒介进行一个固定时长的监听来做信道可用性评估。这里的固定时长称为DCF帧间距(DCF inter-frame space, DIFS)。

冲突避免:即评估媒介处在空闲状态时,才能接入媒介。

随机回退过程
为减少多站点接入媒介时产生的碰撞,当一个站点检测媒介在一个DIFS时长内为空闲后,还不能立即接入媒介,还需要再等待一个随机回退时长。如果媒介在DIFS+随机回退时长期间都为空闲状态,则站点认为其可以接入媒介传输数据。

当媒介从繁忙转为空闲时,可能会有多个站点准备好了发送数据。为了减少碰撞,想要发起传输的站点从区间[0, CW]随机选取一个数,该数乘以时隙(slot)长度得出随机回退时长,然后按该时长进行回退。

在一个DIFS时长内检测媒介都为空闲状态后,开始随机时长回退。如果媒介在回退时长内变成繁忙,则随机回退过程被挂起;如果媒介在一个DIFS时长后重新变为空闲,则随机回退继续进行。

以下图为例。下图中,STA1随机到的回退计数是8,STA2随机到的回退计数是2。STA1在回退计数减到5后,媒介再次变为繁忙,此时STA1的回退过程挂起,等待媒介空闲一个DIFS时长后,回退过程继续。

随机回退过程

 

这里的整数值CW(contention window)叫做竞争窗口。CW参数初始值取为CWmin,为了进一步减少碰撞,在每次不成功的MPDU传输后CW取值翻倍,最大不超过CWmax。这即是二进制指数退避算法。CW在每次成功发送MPDU后被重置为CWmin。

CWmin CWmax在协议中的取值如下(这里的AC是access catogry的意思,由802.11i引入,即将报文按不同的业务类型划分优先级,实现QoS功能):

AC                 CWmin       CWmax
AC_BK            31            1023
AC_BE            31            1023
AC_VI             15             31
AC_VO            7              15
legacy             15            1023


数据/ACK帧交换
无线数据传输容易受外界干扰而发生错误,因此无线数据传输将受益于一个低延迟、链路级别的重发机制。这种机制允许那些没有被接收端正确解调的帧重新传输。

这个机制由接收端在正确接收到发给它的数据帧后,以ACK帧的格式发送一个及时的、肯定的确认。如果发送端没有收到接收端回的ACK帧,则其假定该数据帧未被接收成功,发送端可以重发该帧。

一个无碰撞场景下的数据/ACK时序图如下:

数据ACK时序

 


帧格式
802.11 MAC帧格式如下图所示:

MAC帧格式

 

每个MAC帧都包含以下几部分:

一个MAC帧头
一个可变长度的帧体,包含特定于帧类型或子类型的信息
一个帧校验序列,简写为FCS,包含一个32bit的CRC
帧控制字段
我们这里重点看一下帧控制字段。帧控制字段定义帧类型,802.11协议的连接和通信过程就是由一系列不同类型的帧交互完成。

帧控制(Frame Control)字段,16Bit,其中B2B3表示这个帧的帧类型(Type),B4B7表示这个帧类型下的子类型(Subtype)。帧类型和子类型标识一个802.11帧的具体类型和其对应的功能。FC字段具体定义如下图所示:

FC字段格式

 

802.11协议定义了三种帧类型(Type):控制帧、管理帧和数据帧。常用的帧类型如下表所示:

管理帧:


控制帧:


数据帧:


连接过程
开放网络连接过程(不需要密码)

开放网络连接过程

 

 

1 扫描

站点通过发送probe request帧或者监听AP Beacon帧的方式来扫描到AP;
AP会周期性的广播Beacon帧并回复probe response帧来周知自己的存在。

2 认证

通过两帧authentication帧完成认证握手。

3 关联

通过association request和association response帧完成关联握手。

WPA-PSK加密连接过程
WPA-PSK加密连接过程是在上文开放网络连接过程的基础上,通过WPA四次握手,协商出秘钥。之后的数据帧通信都由协商出来的密钥加密。

WPA四次握手

 

802.11 PHY层协议介绍
物理层帧格式
以802.11a OFDM物理层为例,物理层帧格式如下:

OFDM物理层帧格式

 

这里的PSDU即上节提到的802.11 MAC层封装的报文。PHY层在MAC层报文基础上,继续添加PHY层的报头。然后按照物理层协议定义,添加前导码,并映射到OFDM symbol。最后将这些符号调制到电磁波上,通过射频天线系统发射到空口媒介中去。

这里的PSDU即上节提到的802.11 MAC层封装的报文。PHY层在MAC层报文基础上,继续添加PHY层的报头。然后按照物理层协议定义,添加前导码,并映射到OFDM symbol。最后将这些符号调制到电磁波上,通过射频天线系统发射到空口媒介中去。

物理层协议演进
802.11, DSSS, 1Mbps 2Mbps
802.11b, HR/DSSS, 5.5Mbps, 11Mbps
802.11a/g, OFDM, 64QAM
802.11n, OFDM, 40MHz, MIMO, 64QAM
802.11ac, OFDM, 160MHz, MU-MIMO, 256QAM
802.11ax, OFDMA, 160MHz, 1024QAM
OFDM: Orthogonal Frequency Division Multiplexing, 即正交频分复用技术,是多载波调制技术的一种。通过频分复用实现高速串行数据的并行传输,它具有较好的抗多径衰弱的能力。

QAM: 正交幅度调制,是幅度和相位联合调制技术;越高阶调制携带信息越多,从而对信号质量和信噪比的要求越高。

MIMO: Multiple-Input Miltiple-Output,即多根天线同时收发信号,成倍提升带宽

OFDMA: Orthogonal frequency-division multiple access,在OFDM的基础上,定义多用户同时接入。即802.11ax之前的OFDM,在单条空间流下,单个用户接入信道时,是独占整个信道的;而OFDMA是将一个频宽划分为若干子频宽,每个用户占据其中一个子频宽,使得多个用户可以同时接入信道。

速率表
物理层协议定义不同的MCS(Modulation and Coding Scheme,调制解调策略),每一个MCS会对应一个物理层速率。不同的MCS对信号质量和信噪比的要求不同,越高阶的MCS对环境的要求越高,同时物理层速率也越高。

物理层最大速率是衡量协议最大吞吐量的关键指标,通常我们接触一个通信协议时,其最大吞吐量是我们很关心的。这里列举下802.11各协议在常用带宽和双天线条件下的各MCS对应的物理层速率。

802.11n

802.11n物理层速率表

 

802.11ac

802.11ac物理层速率表

 

802.11ax

802.11ax物理层速率表

 


原文链接:https://blog.csdn.net/twozh123/article/details/122247337

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

802.11 协议介绍 的相关文章

  • win10 资源管理器打开FTP站点跳到IE

    原文链接 xff1a https zhidao baidu com question 549827901 html 我也遇到一样的问题 xff0c 参考很多网页 xff0c 最好终于解决了 xff0c 我不能保证一定解决你的问题 xff0c
  • C++11写的一个简洁的单例类型模版包装器

    单例是经常用到的设计模式实践 xff0c 对于全局使用的唯一资源事例一般都把类型封装成单例 xff0c 但是有时候觉得对于每个class都要改造一遍单例会觉得比较繁琐 xff0c 尤其是在预先不知道哪些类型会使用为单例的时候 为了应对这种情
  • C++获取对应进程的cpu和内存使用情况(支持linux和windows)

    运维监控程序中经常需要根据一个进程号pid去监控实时的cpu和内存占用 xff0c 以下整理了一个C 43 43 实现的简单例子 xff0c 并封装为方便跨平台调用的函数 代码 span class token macro property
  • 基于C++ spdlog日志库的完善封装

    spdlog是一个C 43 43 编写的极速日志打印库 xff0c 支持异步写日志以及多种模式和格式化选项 以下基于spdlog库封装了一个简单易用的功能类 xff0c 采用的是header only方式 xff0c 便于项目集成 代码 p
  • C++11写的线程安全STL库

    用C 43 43 写的程序 xff0c 如果用到了自带的标准模板库STL xff0c 在多线程访问的时候如果不加锁很容易造成segment fault导致程序崩溃coredump xff0c 也就是说C 43 43 标准的STL不是线程安全
  • 使用cmake构建C++ imgui上手项目(支持Windows,Mac,Linux)

    优秀的即时渲染C 43 43 GUI开发框架imgui xff08 https github com ocornut imgui xff09 在很多场合能发挥非常棒的作用 但是由于官方源码仓库一直没有提供基于cmake构建和创建新项目的工具
  • 使用cmake构建C++ workflow上手项目(支持Windows,Linux)

    开源的C 43 43 后端开发框架workflow xff08 https github com sogou workflow xff09 已经在成熟的互联网公司得到非常稳定广泛的应用 xff0c 它结合了网络 异步 计算多个后端常用场景
  • 使用cmake构建C++ live555流媒体服务上手项目(支持Windows,Linux)

    开源的流媒体视频和音频RTSP开发框架live555 xff08 http www live555 com xff09 对于学习和构建音视频流媒体或者直播服务是很方便的 官方的源码包对各平台编译单独列出了对应的makefile xff0c
  • C++20新特性

    目录 新增关键字 keywords conceptrequiresconstinitconstevalco awaitco returnco yieldchar8 t 新增标识符 Identifies importmodule 模块 Mod
  • pytorch导出模型并使用onnxruntime C++部署加载模型推理

    机器学习的框架众多 xff0c 为了方便复用和统一后端模型部署推理 xff0c 业界主流都在采用onnx格式的模型 xff0c 支持pytorch xff0c tensorflow xff0c mxnet多种AI框架 为了提高部署推理的性能
  • cocos2dx实例开发之飞机大战

    曾经 xff0c 微信里面可以玩一个打飞机的小游戏 xff0c 很有趣 xff0c 后来又没有了 xff0c 这里基于原版素材写了一个高仿微信打飞机的小游戏 预览 工程结构 环境 Mac os Mojavexcode 7 0cocos2dx
  • 调试leetcode代码:使用playground来调试

    leetcode在线编辑界面 在使用LeetCode时 xff0c 想要在本地上调试代码 xff0c 提供main函数的方法 xff1a 在线代码编辑功能 1 在红圈处选择你想要使用的语言 2 在黄圈处编写代码 3 在蓝圈处可选编辑测试案例
  • 蓝牙5/4.2/4.1/4.0数据吞吐率

    先给出结论 xff1a 蓝牙4 0 4 1的吞吐率 为0 305Mbps xff1b 蓝牙4 2的吞吐率 为0 803Mbps xff1b 蓝牙5的吞吐率 为1 434Mbps xff08 前提 xff1a 使用2Mbps调制速率 xff1
  • BLE 协议栈组成介绍

    框图 xff1a 1 协议由Host层和Controller层组成 xff1b 2 Controller层 xff1a PHY xff1a 基带物理层 xff0c 相关概念 xff1a 频段 调制 射频信道 发射功率 xff1b LL xf
  • ATT 的功能

    GATT Profile xff0c 通用属性配置 xff1a 类比位做煤球的模子 xff0c 每个SIG组织成员都可以向SIG提交这个 模子 xff0c 如果审核通过了 xff0c 那么这个模子就成为全世界通用的了 xff0c 不用管这个
  • FR8016HA & MS1791 & PHY6222 & TLSR8251 & YC1171 & HS6621 & BK3432 & N32WB031 对比介绍

    富苪坤 FR8016HA 巨微 MS1791 奉加微 PHY6222 泰凌微 TLSR8251 易兆微 YC1171 昂瑞微 HS6621 博通 BK3432 国民技术 N32WB031 芯片简介 FR8016HA 是一款面向 SOC xf
  • AD7606分析讲解

    一 ad7606数据手册分析 引脚配置和功能描述 ADC7606的典型工作特性 FFT xff08 快速傅里叶变换 xff09 http azaleasays com 2008 10 17 fft and digital signal pr
  • 什么是航位推算(Dead Reckoning )

    只有同时接收三到四个GPS GNSS卫星的信号才能实现精确的GPS GNSS定位 当仅依靠GPS GNSS定位时 xff0c 可能会出现位置精度降低或丢失的情况 例如 xff0c 当车辆在无法接收GPS GNSS信号的区域 xff08 隧道
  • STM32F103系列引脚定义-功能图

    器件功能和配置 xff08 STM32F103XX增强型 xff09 系统结构 管脚图
  • 如何用keil5打开keil4的工程

    参考网友的方法 xff1a 1 到http www2 keil com mdk5 legacy 官网下载keil4的支持包 2 正常流程安装所下载的安装包 xff1b 3 安装完成后 xff0c 用keil5打开工程 xff08 keil4

随机推荐

  • NMEA-0183 协议简介

    NMEA 0183 是美国国家海洋电子协会 xff08 National Marine Electronics Association xff09 为海用电子设备制定的标准格式 目前业已成了 GPS 北斗导航设备统一的 RTCM xff08
  • 串口通信校验方式(even,odd,space,mark)UART数据波形分析

    1 even 每个字节传送整个过程中bit为1的个数是偶数个 xff08 校验位调整个数 xff09 2 odd 每个字节穿送整个过程中bit为1的个数是奇数个 xff08 校验位调整个数 xff09 3 noparity没有校验位 4 s
  • Linex Ubuntu环境下 Intel Realsense D435I 驱动+ROS驱动安装配置

    任务背景 在ROS环境中使用d435i xff0c 订阅图像和imu数据 任务概述 实现在ros中使用d435i主要有两步骤 xff1a 1 安装d435i sdk xff0c 即librealsense xff1b 2 安装realsen
  • C++ 实现简单Http服务器

    实现一个简单的Http服务器 xff0c 基于windows 平台 总共五个文件 HttpServer hpp HttpServer cpp Utils hpp Utils cpp main cpp Utils hpp span class
  • libcurl API介绍及简单编程

    libcurl编程 xff0c 主要采用callback function 回调函数 的形式完成传输任务 xff0c 用户在启动传输前设置好各类参数 和回调函数 xff0c 当满足条件时 libcurl 将调用用户的回调函数实现特定功能 下
  • git patch

    git patch用于将所做的修改进行打包 xff0c 然后再别的分支或给别人可以直接应用该patch xff0c 达到修改复用的效果 diff命令 git diff gt xxxx patch git diff xx file gt xx
  • WIFI知识 - MCS简介

    WIFI知识 MCS简介 MCS简介 802 11n 射频速率的配置通过 MCS xff08 Modulation and Coding Scheme xff0c 调制与编码策略 xff09 索引值实现 MCS 调制编码表是 802 11n
  • 802.11 QoS

    到了空调西瓜WiFi的夏日时光了 xff0c 家里用网的人一多 xff0c 难免会抢占起宽带资源来 有没有什么办法 xff0c 让家里所有人都可以得到一个比较不错的网络体验呢 xff1f 那今天你可以试试打开你路由器的QoS功能了 xff0
  • Wireshark抓包分析WLAN连接过程

    一个完整的WLAN连接过程 xff1a 一 xff1a WLAN扫描 主动扫描 xff1a 两种方式 xff1a xff08 1 xff09 向各个信道发出Probe Request帧并制定某个SSID xff0c 只有能够提供指定SSID
  • 802.11X用户身份验证 EAPOL

    EAPOL是什么 sogou com 802 11X用户身份验证 走看看 zoukankan com EAPOl的由来是基于802 1x网络访问认证技术 xff1a 802 1x协议起源于802 11协议 xff0c 后者是IEEE的无线局
  • git reset

    git reset 三种模式分别为 mixed 默认 soft hard 直接看官方的解释 其中HEAD代表版本库 xff0c index代表暂存区 xff0c 另外还有一个我们改代码的工作区 mixed 回退版本库 xff0c 暂存区 m
  • git reset还是git revert?

    reset和revert都可以用来回滚代码 但他们是有区别的 xff0c 准确来说 xff0c reset是用来 34 回退 34 到某个提交 xff0c 而revert是用来 34 撤销 34 某次或者某几次提交 xff0c 撤销也会作为
  • PR and MR

    GitHub 的 Pull Request 是指什么意思 xff1f 作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 21682976 answer 79489643 来源 xff1a
  • python--基础知识点--subprocess模块

    subprocess 模块的介绍与使用 一 介绍 subprocess模块可以生成新的进程 xff0c 连接到它们的input output error管道 xff0c 同时获取它们的返回码 二 基本操作方法 1 subprocess的ru
  • Homebus(HBS)通信协议学习

    HBS通信主控与从机连接示意图 两根HBS总线之间的电压差大约为15V xff0c 差分信号分别加载到HBS的这两根总线上 用示波器的探头测得 xff08 探头的地在任意一根HBS总线上 xff0c 探头的信号输入端在另一根HBS总线上 x
  • RSA参数及RSA用法

    RSA算法n e d三个参数的意义 n为q p乘机 e为加密质数数值 d为解密质数数值 其中 e d p 1 q 1 61 1余数为1 其中p和q为2个足够大的素数 RSA的算法涉及三个参数 xff0c n e1 e2 其中 xff0c n
  • STM32的CAN

    一 CAN控制器简介 STM32自带了基本扩展CAN外设 xff0c 又称bxCAN xff0c bxCAN的特点如下 xff1a 1 支持CAN协议2 0A和2 0B主动模式 2 波特率最高达1Mbps 3 支持时间触发通信 4 具有3个
  • VSCode使用ssh密钥,不用每次输密码登录服务器的方法

    如果已经用ssh keygen 生成密钥了 xff0c 则跳过生成密钥这一步 客户端机器生成密钥 也就是vscode运行的机器 xff0c 在终端任意路径下输入 ssh keygen 生成密钥 本地 ssh keygen 默认目录在 ssh
  • Wi-Fi 802.11协议 管理帧 之 Auth帧详解

    Auth xff1a 链路认证 链路认证阶段主要是 AP 用来确认 Station 是否是 802 11 设备 xff0c 确认彼此是否可以正常通讯 xff0c 身份认证一般有为两种方式 xff0c 一种是开放系统认证 xff0c 另一种是
  • 802.11 协议介绍

    802 11协议基础 前言 OSI七层网络 开放式系统互联模型 xff08 Open System Interconnection Model xff09 是一种概念模型 xff0c 由国际标准化组织提出 xff0c 一个试图使各种计算机在