微信公众号:卢同学
关注可了解更多。若有问题或建议,请与本人联系或者公众号留言;如果你觉得此文对你有帮助,欢迎赞赏

目录

凡事若能综观形势,通常有助于细节的进一步探究

从OSI七层模型来看,802规范的重心放在OSI模型最下面的两层,即数据链路层和物理层。

数据链路层又分为逻辑链路控制层(LLC)和媒介访问控制层(MAC),
物理层也分两层,物理层会聚过程Physical Layer Convergence Procedure (PLCP)
和物理媒体相关Physical Medium Dependent (PMD),
理清这些分层的关系,将有助于我们后面的分析。

802.11 规范的关键在于 MAC。MAC是一组用以决定如何访问媒介以及如何传输数据的规则,至于传输与接收的细节则交给PHY。

MAC 位于各种物理层之上,控制数据的传输。它负责核心成帧操作以及与有线骨干网络之间的交互,不同的物理层可以提供不同的传输速度,不过物理层之间必须彼此互通。


MAC的设计需要考虑什么问题?

1、因为射频链路的品质问题,为了克服干扰、多径衰落等问题造成的布线死区。

采用了肯定确认机制。所有传出的帧必须得到响应。

2、隐藏节点问题,在如下图所示环境中,由于距离原因,从节点1的角度看节点3就是隐藏节点。节点 1 与节点 3 有可能在同一时间传送数据,这会造成节点 2 无法辨 识任何信息。
下图示节点1和3互为隐藏节点。

为了防止冲突发生,802.11允许使用CTS和RTS信号清空传输区域。
若节点1有帧需要发送,因此发送RTS帧预约无线链路的使用权以及要求接收到这帧的其他工作站保持沉默。


MAC是怎么进行访问控制以及时机的?

无线媒介的访问由 协调功能 控制。

  • 分布式协调功能:DCF:DCF是标准的CSMA/CA访问机制的基础,传输数据之前会检查无线链路是否处于清空状态,为避免冲突发生,某传输者占据信道时,工作站会随机为每帧选定退避时间。还可以利用RTS/CTS清空技术进一步减少冲突发生。

  • 点协调功能:PCF;点协调提供无竞争服务。(实际上并不常见)

载波监听功能与网络分配矢量

载波监听主要用于判断媒介是否处于可用状态,802.11具备物理和虚拟载波监听两种。
物理的由物理层提供,取决所使用媒介与调制方式。物理监听无法提供如隐藏节点信息。
虚拟的由网络分配矢量(NAV)提供,802.11帧通常会包含Duration字段用于预约媒介使用时间,NAV本身是计时器。其他工作站会将NAV值倒数至0,只要不为0则代表媒介处于忙碌状态。当NAV为0则媒介处于空闲状态。

如图,sender会在其RTS帧中设定NAV ,防止传送时其他工作站访问媒介,所有收到RTS的工作站均会延迟访问,直到NAV消失。
接收端会回复RTS,其中也包含了NAV,此NAV可防止其他工作站在传输过程中访问媒介。

帧间间隔与优先级

不同帧间 间隔提供不同类型传输产生不同优先次序。802.11用到4种帧间间隔,其中三种用于界定媒介访问。由上所知,MAC具备冲突避免功能,所以工作站会延迟媒介访问时间直到媒介空闲。
还是这个图:

  • 短帧间间隔SIFS:用于高优先级的传输场合,如RTS/CTS以及肯定ACK。

  • PCF帧间间隔PIFS:用于无竞争操作中。

  • DCF帧间间隔DIFS竞争式服务中最短媒介闲置时间,如媒介闲置时间超过此则工作站可以立即访问媒介。

  • 扩展帧间间隔EIFS:并非固定的时间间隔,只有帧传输出现错误的时候用。


怎么利用DCF(分布式协调功能)进行基于竞争的访问?

试图传送任何数据之前,工作站必须检查介质是否处于闲置状态。若处于忙碌状态,工作站必须延迟访问,并利用指数型退避(orderly exponential backoff)算法来避免碰撞发生。

在所有使用 DCF 的传输当中,将会运用到两项基本原则:

一、如果介质闲置时间长于 DIFS,便可立即进行传输。载波监听同时可通过物理与虚拟(NAV)方式进行。
   a. 如果之前的帧接收无误,介质至少必须空出一段 DIFS 时间。
   b. 如果之前的传输出现错误,介质至少必须空出一段 EIFS 时间。
二、如果介质处于忙碌状态,工作站必须等候至频道再度闲置。802.11 称之为访问延期。一旦访问延期,工作站会等候介质闲置一段 DIFS 时间,同时准备指数型退避访问程序。

DCF 与错误复原

错误监听与更正是由起始基本帧交换过程的工作站来决定。一旦监听到错误,该工作站必须负责重传。错误检测由发布端负责,有时可根据确认来推断该帧是否丢失。若重传则重传计数器(retry counter)就会累加。

除重试计数器外,MAC会赋予每个帧片段最长生存时间,一旦超过此帧被丢弃。上层协议如TCP可以检测到而重传,但是会被视为新的帧。

DCF的退避算法

当帧传送完成并且经过一段 DIFS 时间,工作站便会试图传送之前拥塞的数据。DIFS 之后所紧接的一段时间称为竞争期间或退避期间。此期间可进一步分割为时隙(slot)。工作站会随机挑选某个时隙(slot),等候该时隙(slot)到来以便访问介质。所有时隙(slot)的选择机会均等。当多部工作站同时试图传送数据,挑到第一个时隙(slot)(亦即取得最小随机号码)的工作站可以优先传送。

时隙(slot)长度因媒介而异。


帧的分段与重组

来自较上层的封包,以及某些较大的管理帧,可能必须经过分段,无线频道才有办法加以传输。当干扰存在时,分段封包同时有助于提升可靠性。

当上层封包超过网络管理人员所设定的分割门限,就会进行帧的分割。帧控制信息用来指 示是否还有其他帧片段待接收。每个帧片段都会设定 NAV,继续掌握介质的使用权,直到下一个帧 的应答结束。图中,fragment0 设定了 NAV,并继续掌握介质直到 ACK 1,而 Fragment 1 也设 定了 NAV,并继续掌控介质直到 ACK 2,依此类推。当最后一个帧片段及其应答送出时,NAV 即会设定为 0。代表释放介质。


帧格式长啥样?

一般802.11帧如下:(上面数字为字节)

并非每个帧都会用到所有的地址位,这些地址位的值,也会因为 MAC 帧种类的不同而有所差异。

Frame Control 位,所有帧的开头均是长度两个字节 Frame Control (帧控制)位,如图 所示。


Frame Control 位包括以下次位:

  • Protocol 位 协议版本位由两个 bit 构成,用以显示该帧所使用的 MAC 版本。目前,802.11 MAC 只有 一个版本;它的协议编号为 0。

  • Type 与 Subtype 位 类型与次类型位用来指定所使用的帧类型。
    802.11 帧主要有三种类型。

数据帧好比 802.11 的驮马,负责在工作站之间传输数据。数据帧可能会因为所处的网络环境不同而有所差异。
控制帧通常与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性。
管理帧负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。
Subtype 就是在这三种帧每种的细分。

  • TO DS 与 From DS bit 这两个 bit 分别表示无线链路向无线工作站发送的帧和无线工作站向无线链路发送的帧.

    1

简单来说:
To DS:表示Station->AP,一般也叫Upload,Station发送的帧。
From DS表示AP->Station,一般也叫Download,Station接收的帧。

  • More fragments bit 此 bit 的功能类似 IP 的 More fragmentsbit。若较上层的封包经过 MAC 分段处理,最后一 个片段除外,其他片段均会将此 bit 设定为 1。大型的数据帧以及某些管理帧可能需要加以分段;除此之外的其他帧则会将此 bit 设定为 0。

  • Retry bit 有时候可能需要重传帧。任何重传的帧会将此 bit 设定为 1,以协助接收端剔除重复的帧。

  • Power management bit,此 bit 用来指出传送端在完成目前的基本帧交换之后是否进入省电模式。1 代表工作站即将进入省电模式,而 0 则代表工作站会一直保持在清醒状态。基站必须行使一系列重要的管理功能,所以不允许进入省电模式,因此基站所传送的帧中,此 bit 必然为 0。

  • More data bit 为了服务处于省电模式的工作站,基站会将这些由“传输系统”接收而来的帧加以暂存。基站如果设定此 bit,即代表至少有一个帧待传给休眠中的工作站。

  • Protected Frame bit 相对于有线网络,无线传输本质上就比较容易遭受拦截。如果帧受到链路层安全协议的保护,此 bit 会被设定为 1,而且该帧会略有不同。之前,Protected Frame bit 被称为 WEP bit。

  • Orderbit 帧与帧片段可依序传送,不过发送端与接收端的 MAC 必须付出额外的代价。一旦进行“严 格依序”传送,此 bit 被设定为 1。


  • Duration:设定 NAV, 当第 15 个 bit 被设定为 0 时,Duration/ID 位就会被用来设定 NAV。此数值代表目前所进行的传输预计使用介质多少微秒。工作站必须监视所收到的任何帧头,并据以更新 NAV。任何 超出预计使用介质时间的数值均会更新 NAV,同时阻止其他工作站访问介质。

  • Address 位,因为随着帧类型不同, 这些位的作用也有所差异。
    基本上,Address 1 代表接收端,Address 2 代表传送端,Address 3 被接收端拿来过滤地址。举例而言,在基础网络里,第三个地址位会被接收端用来判定该帧是否属于其所连接网络。

802.11 所使用的定位模式,乃是依循其他 IEEE 802 网络所使用的格式,包括以太网。地址位本身的长度有 48 个 bit。如果传送给实际介质的第一个 bit 为 0,该地址位代表单一工作站 (单点传播[unicast])。如果第一个 bit 为 1,该地址代表一组实际工作站,称为组播(多点传 播[multicast])地址。如果所有 bit 均为 1,该帧即属广播(broadcast),因此会传送给连接至 无线介质的所有工作站。

  • 顺序控制位,当上层帧交付 MAC 传送时,会被赋予一个 sequence number(顺序编号)。此位的作用, 相当于已传帧的计数器取 4096 的模(modulo)。此计数器由 0 起算,MAC 每处理一个上层封包就会累加 1。如果上层封包被切割处理,所有帧片段都会具有相同的顺序编号。如果是重传帧, 则顺序编号不会有任何改变。帧片段之间的差异在于 fragment number(片段编号)。第一个片段的编号为 0。其后每个片段依序累加 1。重传的片段会保持有原来的 sequence number 协助重组。

  • 帧主体,帧主体(Frame Boby)亦称为数据位,负责在工作站间传送上层数据(payload)。

  • 帧检验序列(FCS) 和以太网一样,802.11 帧也是以帧检验序列(frame check sequence,简称 FCS)作为结 束。FCS 通常被视为循环冗余码(cyclic redundancy check,简称 CRC)。


802.11MAC是怎样对上层协议进行封装的?

和所有其他的 802 链路层一样,802.11 可以传输各种不同的网络层协议。

传输时,用来封装 LLC 数据的方式有两种。其中一种是 RFC 1042 所描述的方式,另外一 种则是 802.1H 所规范的方式。

RFC 1042 与 802.1H 均衍生自 802.2 的子网络访问协议(sub-network access protocol, 简称 SNAP)。MAC 地址会被复制到封装帧(encapsulation frame)的开头,然后插入 SNAP 标头。然后是一个控制位。此控制位会被设定为 0x03,代表未编号信息(unnumbered information,简称 UI),SNAP 所置入的最后一个位是组织代码(organizationally unique identifier,简称 OUI),802.11H 与 RFC 1042 之间的唯一差异,在于其使用的 OUI。

广播与组播帧或管理帧

广播与组播帧的交换过程最为简单,因为这些帧无须应答。这两种帧也可以视为群组帧, 因为其接收对象不限于单一工作站。

帧封装(framing)与定位(addressing)适用此规则的帧类型如下所示:

广播数据帧会在 Address1 位中填入广播地址
组播数据帧会在 Address1 位中填入组播地址
广播管理帧会在 Address1 位中填入广播地址(Beacon、Probe Request 以及 IBSS ATIM 帧)、组播帧无法加以分段,也无须得到应答。

单播帧

单一帧(最后一个片段)

两部工作站之间的传输可靠性建立在简单的正面应答上。单点传播数据帧必须得到正面应 答,否则该帧即会被认定已经丢失。如果是单一帧,则此该 ACK 中 NAV 会被设定为 0。

包括 IP 在内,一些较上层的网络协议或多或少都会用到帧分段。倒数第二个帧之 前所有帧均会使用 NAV,为下一个帧锁住介质。第一个数据帧会将 NAV 的时间设定至足以涵盖 ACK1,下一个帧片段及其回应(ACK2)。为了表示其为帧片段,MAC 会将帧标头控制位的 More Fragmentsbit 设定为 1。最后一个回应(ACK3)除外,其余回应都会继续为下一个数据片段及 其回应延长锁住介质的时间。后续的数据帧会继续延长 NAV 以涵盖后续的回应,直到最后一个 数据帧才会将 More Fragmentsbit 设定为 0,而最后一个回应(ACK3)则会将 NAV 设定为 !

为保证介质使用权以及数据传输不被中断,工作站可使用 RTS/CTS 的交换方式。

有线和无线是怎么转换的?

无线至有线媒介(802.11 至以太网)

  1. 当基站接收到一个帧,首先会检测该帧基本上是否完整。接下来,基站会针对所使用的 物理层,检视本章之前讨论过的物理层标头,然后验证 802.11 帧上的帧检验码。

  2. 证帧接收无误后,基站就会继续检视是否应该进一步处理该帧。

a. 传送至基站的帧,会将基站的 MAC 地址(即 BSSID)摆在 802.11 MAC 标头 的 Address 1 位。不符该基站 BSSID 的帧应予以丢弃。(有些产品并未实现 此步骤。)
b. 802.11 MAC 接着监测且移出重复的帧。产生重复帧的原因很多,不过最常 见的情况是 802.11 应答信息在传送过程中丢失或有所损毁。为了简化上层 协议的工作,因此由 802.11 MAC 负责剔除重复的帧。

  1. 一旦基站判定需要进一步处理该帧,就必须予以解密,因为该帧会受到链路层安全算法 的保护。

  2. 成功解密之后,基站即检视该帧是否为帧片段,需要进一步重组。完整性保护(integrity protection)针对重组后完整帧,而不是个别的帧片段。

  3. 如果经过步骤 2a 的 BSSID 检验,判定基站必须桥送该帧,较复杂的 802.11 MAC 标 头就会被转换为较简单的以太网 MAC 标头。

a. 记录在 802.11 MAC 标头之 Address 3 位里的目的地址,会被复制到以太网 的目的地址。b. 记录在 802.11 MAC 标头之 Address 2 位里的源地址,会被复制到以太网的 源地址。
c. 从 802.11 Data 位里的 SNAP 标头,将(Type)类型代码复制到以太网帧里 的 Type 位。如果该以太网帧亦使用 SNAP,就复制整个 SNAP 标头。
d. 顺序信息主要供帧片段重组之用,不过当帧被桥送之后即予以丢弃。
e. 如果有标准的服务质量处理程序,即在此进行无线与有线的 Qos 对应。不过 到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用 802.1p 优先性等级 bit,或者其他的控制形式。

  1. 重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多 出一些位,同时为 FCS 所保护。

  2. 所产生的新帧交付以太网界面传送。


有线媒介到无线媒介

  1. 验证以太网 FCS 后,基站首先会检视是否需要进一步处理所接收到的帧,亦即检视该 帧的目的地址是否属于目前与基站连接的工作站。

  2. 将 SNAP 标头附加于以太网帧的数据之前。上层封包是以 SNAP 标头进行封装,而其 Type 位是自以太网帧里的类型代码复制而来。如果该以太网帧亦使用 SNAP,则复制 整个 SNAP 标头。

  3. 对帧的传送进行排程。802.11 包含复杂的省电过程,将帧置于传送序列之前,基站可 能会将帧暂存于缓存区

  4. 一旦帧被置于序列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完 整性检验值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分 段帧时,将会在 Sequence Control 位指定片段编号。

  5. 如果帧需要保护,则对帧(或每个帧片段)的本体加密。

  6. 802.11 MAC 标头是根据以太网 MAC 标头产生。

a. 将以太网 的目的地址复制到 802.11 MAC 标头的 Address 1 位。b. 将 BSSID 置于 MAC 标头的 Address 2,以作为无线介质上之帧的发送者。c. 将帧的源地址复制到 MAC 标头的 Address 3 位。d. 将其他位填入 802.11 MAC 标头。也就是把预计传送时间填入 Duration 位, 并把适当的标志填入 Frame Control 位。

  1. 重新计算帧检验码。以太网与 802.11 使用相同的算法来计算 FCS,不过 802.11 帧多 出一些位,同时为 FCS 所保护。

  2. 所产生的新帧交付 802.11 界面传送。

总结

数据帧发送过程:(不太严谨的图示)

巨人的肩膀

本文学习自以下文档:

[1] 802.11 无线网络权威指南.MattbewS.Gast

wifi协议_图解 802.11wifi协议相关推荐

  1. 图解 802.11wifi协议

    微信公号:卢同学 关注可了解更多.若有问题或建议,请与本人联系; 目录 凡事若能综观形势,通常有助于细节的进一步探究 从OSI七层模型来看,802规范的重心放在OSI模型最下面的两层,即数据链路层和物 ...

  2. WIFI基本知识及802.11协议整理

    WIFI基本知识及802.11协议整理 2015-11-11 fredzeng linux 主要内容: 一.基本概述 二.实践基础 三.一些原理 四.补充 五.其它 一.基本概述 ========== ...

  3. 上下位机通讯协议_嵌入式中自定义协议的一些典型例子

    关于自定义协议,对于会的人很简单,对于不会的人就摸不着头脑.下面分享一些关于自定义协议的笔记. 什么是协议? 协议这个概念我觉得挺杂的.就像嵌入式的概念一样,说法不一,比如大家常常争论FPGA是不是嵌 ...

  4. 数据链路层协议_数据链路层 基本数据链路协议

    目录 数据帧的传输协议 认识了数据链路层,解决数据帧的组帧方式和差错控制后,现在我们来看看数据帧是如何来传输的,即学习数据帧的传输协议. 数据帧的传输协议主要用来解决数据帧收发双方如何协同进行数据帧的 ...

  5. tcp ip协议_网络通信-TCP/IP协议族简述

    导读:计算机与网络设备要相互通信需要遵守同样的规则.例如,如何找到通信目标.该使用哪种语言通信.怎么结束通信等规则.不同的硬件.操作系统之间的通信都需要遵循同一种规则,这种规则也称为是协议.下面本文主 ...

  6. dhcp是哪一层的协议_常用的网络协议有哪些,分别是什么含义

    ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址.启动时它选择一个协议(网络层)地址,并检查这个地址是否已经有别的计算机使 ...

  7. java modbus通讯协议_物联通讯协议一(Modbus)

    1.Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表.Modbus已经成为工业领域通 ...

  8. rtsp协议_如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口?...

    原标题:如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口? TSINGSEE青犀视频云边端架构全线都提供了丰富的API接口,用户可以自由调用进行二次开发.在本文之前,我们博 ...

  9. vrrp协议_虚拟路由冗余协议VRRP原理介绍

    一.概述: 1.1. 产生背景 随着Internet的发展,人们对网络可靠性的要求越来越高.特别是对于终端用户来说,能够实时与网络其他部分保持联系是非常重要的.一般来说,主机通过设置默认网关来与外部网 ...

最新文章

  1. DELL 向左走 向右走?(二)
  2. 赠书:京东当当新书榜TOP1的“算法小抄”!
  3. 互联网女皇”Mary Meeker 2015互联网趋势报告说了些什么
  4. angular 动态取到的html片段 在页面的展示
  5. VTK:模型之CappedSphere
  6. 第一个将Palette Mode引入VVC(H.266),阿里云在JVET会议上引起关注
  7. 多个html页面拼接成一个页面_浏览器渲染页面机制以及如何减少DOM操作
  8. 极简darknet环境搭建记录
  9. 计算机组成 结构 华南理工,计算机组成原理-2019春华工网络教育随堂练习
  10. c99数组稀疏初始化
  11. java生成xsd_如何使用Java代码生成XSD文件?
  12. 如何自学成为设计师_不会自学,你永远只能是个三流设计师
  13. CVPR2004/风格分解:Separating Style and Content on a Nonlinear Manifold在非线性流形上分离样式和内容
  14. 浅学C#(3)——C#的优点和缺点
  15. 蓝桥杯 基础练习 字母图形
  16. [OGRE]基础教程来三发:来谈一谈摄像机吧
  17. 解决:word文档中插入照片有一部分不显示
  18. Golang map源码详解
  19. docker镜像的分层理解,大白话跟你讲
  20. 【学习】如何制作手机端html模板(REM的实际应用)

热门文章

  1. python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间
  2. 自学python买什么书比较好-python入门学习哪个书比较好(python视频教程知乎)
  3. qmenu qt 关闭,Qt实现点击菜单项后QMenu不关闭功能
  4. 【Spring笔记】使用javaconfig配置
  5. 【java笔记】函数式接口
  6. 最简单的基于FFmpeg的移动端例子:Windows Phone HelloWorld
  7. 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)...
  8. android调webview的方法,Android中的WebView详解
  9. ubuntu16.04安装python.h_ubuntu16.04安装python3.6踩过的坑
  10. python open找不到文件的原因_python – logger找不到文件