当前位置: 首页 > article >正文

WiFi IEEE 802.11协议精读:IEEE 802.11-2007,6,MAC service definition MAC服务定义

继续精读IEEE 802.11-2007

6,MAC service definition MAC服务定义

6.1 MAC服务概述

6.1.1 数据服务

此服务为对等逻辑链路控制(LLC)实体提供交换MAC服务数据单元(MSDU)的能力。为支持此服务,本地媒体访问控制(MAC)利用底层的物理层(PHY)服务,将MSDU传输至对等MAC实体,在那里MSDU将被交付给对等LLC。这种异步MSDU传输是在无连接基础上进行的。默认情况下,MSDU传输是基于尽力而为原则的。然而,服务质量(QoS)机制使用一个流量标识符(TID)来按每个MSDU指定差异化服务。QoS机制还允许在使用流量规范(TSPEC)的基础上,支持更具同步性的行为,这是基于面向连接的方式实现的。对于提交的MSDU是否能成功交付,并不提供任何保证。广播和多播传输是MAC提供的数据服务的一部分。由于无线介质(WM)的特性,与单播MSDU相比,广播和多播MSDU可能会经历较低的QoS。所有站点(STA)都将支持数据服务,但在支持QoS的基本服务集(BSS)中,只有QoS STA会根据单个MSDU指定的流量类别或流量流(TS)来区分其MSDU交付。

由于MAC的某些功能操作可能会导致某些MSDU(MAC服务数据单元)的重新排序,如下文将更详细地讨论,在非QoS(服务质量)STA(站点)中,数据服务内存在两个服务类别。通过选择所需的服务类别,每个发起MSDU传输的LLC(逻辑链路控制)实体都能够控制MAC实体是否被允许对这些MSDU进行重新排序。

6.1.2 安全服务

IEEE Std 802.11中的安全服务由认证服务以及TKIP(临时密钥完整性协议)和CCMP(计数器模式密码块链消息认证码协议)机制提供。所提供的安全服务范围仅限于站点之间的数据交换。IEEE 802.11 TKIP和CCMP实现所提供的数据保密服务是对MSDU(MAC服务数据单元)的保护。在本标准中,TKIP和CCMP被视为位于MAC子层内的逻辑服务,如参考模型图5-10(在5.7中)所示。TKIP和CCMP服务的实际实现对逻辑链路控制(LLC)和MAC子层以上的其他层是透明的。

IEEE Std 802.11中TKIP和CCMP提供的安全服务如下:
a) 数据保密性;
b) 认证;以及
c) 与层管理相结合的访问控制。

在认证交换过程中,双方按照第8条的规定交换认证信息。

TKIP和CCMP提供的MAC子层安全服务依赖于非第2层管理或系统实体的信息。管理实体通过一组MAC子层管理实体(MLME)接口和管理信息库(MIB)属性向TKIP和CCMP传递信息;特别是,8.7中定义的TKIP和CCMP决策树是由MIB属性驱动的。

使用WEP(有线等效保密)进行保密、认证或访问控制已被弃用。WEP算法不适用于本标准的目的。

6.1.3 MSDU排序

MAC子层提供的服务允许,并在某些情况下可能要求,对MSDU进行重新排序。

在非QoS STA中,MAC不会故意对MSDU进行重新排序,除非基于指定接收STA的当前操作(“电源管理”)模式,这种重新排序对于提高成功交付的可能性是必要的。对于在任一单个STA的MAC服务接口处接收到的MSDU集合而言,这种重新排序(如果有的话)的唯一影响是,相对于来自单个源STA地址的定向MSDU,广播和多播MSDU的交付顺序可能会发生变化。如果使用数据服务的高层协议不能容忍这种可能的重新排序,则应使用可选的StrictlyOrdered服务类别。在使用StrictlyOrdered服务类别的任意两个STA之间传输的MSDU不会受到使用ReorderableMulticast服务类别时可能出现的相对重新排序的影响。然而,若希望在STA处接收使用StrictlyOrdered服务类别发送的MSDU,则该STA则不能同时使用MAC电源管理功能。

在BSS中操作的QoS STA有两种服务类别,分别指定为QoSAck和QoSNoAck(有关更多信息,请参阅6.1.1.3)。对MSDU进行重新排序,不仅是为了基于指定接收STA的当前操作模式提高成功交付的可能性,还是为了尊重在MA-UNITDATA.request原语中指定的单个MSDU的优先级参数。对于在任一单个STA的MAC服务接口处接收到的MSDU集合而言,这种重新排序(如果有的话)的影响包括:
a) 相对于单播MSDU,广播和多播MSDU的交付顺序发生变化;
b) 对来自单个源STA地址且具有不同TID值的MSDU进行重新排序;以及
c) 对具有相同TID但不同服务类别的广播和多播MSDU进行重新排序。

对于具有相同TID值且发往相同目的地的单播MSDU,不得进行重新排序。

在非QoS BSS中操作的STA应遵循为非QoS STA定义的重新排序规则。

为了使MAC正常操作,分布系统(DS)必须满足ISO/IEC 15802-1:1995的要求。确保MSDU适当排序的操作限制在9.8中指定。

6.1.4 MSDU format

6.1.5 MAC数据服务架构

MAC数据平面架构(即涉及MSDU全部或部分传输的过程)如图6-1所示。

在传输过程中,MSDU会经历以下部分或全部过程:省电模式下的帧传输延迟、序列号分配、分片、加密、完整性保护和帧格式化。IEEE Std 802.1X-2004可能会在受控端口阻止MSDU。在某个时刻,包含MSDU全部或部分的数据帧会按AC/TS(访问类别/流量规范)进行排队。这种排队可能发生在图6-1所示的三个点中的任何一个。

在接收过程中,接收到的数据帧会经历MPDU(MAC协议数据单元)头部和循环冗余码(CRC)验证、去重、(如果使用Block Ack机制)可能的重新排序、解密、去分片、完整性检查和重放检测。重放检测(或使用安全机制时的去分片)之后,MSDU会被传递到MAC_SAP(MAC服务访问点)或DS(分布系统)。如果受控端口未启用,且MSDU不代表IEEE 802.1X帧,则IEEE 802.1X受控/非受控端口会丢弃该MSDU。TKIP(临时密钥完整性协议)和CCMP(计数器模式密码块链消息完整码协议)MPDU帧顺序强制在解密之后、MSDU去分片之前进行;因此,如果MPDU未按顺序到达,去分片将失败。

7,Frame formats帧格式

8,Security 安全

9,MAC sublayer functional description MAC子层功能描述

10,Layer management 层管理

11,MLME,MAC sublayer management entity,MAC子层管理入口

12,PHY service specification,物理层服务规范

13,PHY management,物理层管理

14,Frequency-Hopping spread spectrum (FHSS) PHY specification for the 2.4 GHz industrial, scientific, and medical (ISM) band,FHSS 跳频--已废弃

15,DSSS PHY specification for the 2.4 GHz band designated for ISM applications,802.11b(2.4G 1 Mb/s and 2 Mb/s )

16,Infrared (IR) PHY specification 红外--已废弃

17,Orthogonal frequency division multiplexing (OFDM) PHY specification for the 5 GHz band, 802.11a(5G OFDM)

18,High Rate direct sequence spread spectrum (HR/DSSS) PHY specification,802.11b(2.4G CCK 5.5 Mb/s and 11 Mb/s)

19,ERP specification,802.11g(2.4G DSSS-OFDM)


http://www.kler.cn/a/562845.html

相关文章:

  • Redis集群机制及一个Redis架构演进实例
  • Linux基础30-C语言篇之冒泡排序【入门级】
  • 如何在开发中更好地使用DeepSeek:从入门到精通
  • Linux网络基础(协议 TCP/IP 网络传输基本流程 IP VS Mac Socket编程UDP)
  • python处理文件(完成文件分类)
  • RMAN备份恢复典型案例——数据库卡顿
  • 跟着 Lua 5.1 官方参考文档学习 Lua (9)
  • 事务的4个特性和4个隔离级别
  • QT初学——helloworld
  • 绕过过滤order by
  • 20分钟 Bash 上手指南
  • 机器学习介绍与数据集
  • leetcode 1392. 最长快乐前缀
  • 力扣 3248. 矩阵中的蛇(Java实现)
  • Spring Boot中Bean Validation的实战应用
  • 几种AI模型在算法工作中的使用测评——Grok3,Deepseek,Chatgpt,Kimi,Claude(持续更新)
  • 【图像的读写与基本操作】
  • vscode java环境中文乱码的问题
  • 【华三】从零开始掌握SR技术:原理、架构与应用全解析
  • kotlin的lateinit声明 的变量可能为null吗?