和所有其他的802链路层(link layer)一样,802.11可以传送各种不同的网络层协议(network-layer protocol)。和Ethernet不同的是,802.11是以802.2的逻辑链路控制(logical-link control简称LLC)封装来携带上层协议。
传送时,用来封装LLC数据的方式有两种,一种是RFC 1042所描述的方式,另一种则是802.1H所规范的方式。Ethernet帧具有MAC标头(由来源与目的MAC地址组成),类型代码(type code),嵌套封包(embedded packet)以及帧检查(frame check)等字段。
单播数据必须得到确认以确保数据传送无误。虽然整个数据的交换过程包含两个帧,但数据交换本身只是单一操作。只要一方失误,整个操作就必须重新来过。802.11定义了两组截然不同的原子交换过程。第一种为DCF,用于基于竞争的服务,第二种为PCF,用于无竞争服务。无竞争服务所使用的的帧交换方式不仅错综复杂,而且难以理解。
DCF使用的帧交换方式在802.11MAC中占有决定性的地位。根据DCF的规定,所有的产品都必须提供尽力传递的功能。为了实现基于竞争的MAC,处于作用状态的工作站必须处理每个帧的MAC标头。整个帧交换过程从某个工作站在DIFS之后取得闲置媒介的使用权时开始。
广播与组播帧的交换过程最为简单,因为这些帧无需响应。这两种帧也可以视为组帧,因为其接收对象不限于单一工作站。成帧与寻址在802.11中较为复杂,适用此规则的帧的类型如下所示:
(1)广播数据帧会在Address1字段中填入广播地址
(2)组播数据帧会在Address1字段中填入组播地址
(3)广播管理帧会在Address1字段中填入广播地址
组播帧无法分段,也无需得到确认。整个原子交换过程只牵涉到一个帧,根据基于竞争的访问控制规则加以传送。传送结束后,所有工作站必须等待一段DIFS,然后在竞争窗口倒数随机产生的延迟时间。
在802.11标准中,针对个别工作站所传送的帧称为直接数据。本书使用较通俗的词,称之为单播。单播帧必须得到确认以确保可靠性,也意味着可借助各种机制来改善传送效率。本书所描述的交换过程适用于任何单播帧,因此也适用于管理帧与数据帧。实际上,这些操作通常只用于数据帧。
两个工作站之间的传送可靠性建立在简单的肯定确认上。单播数据帧必须得到肯定确认,否则该帧即会被认定为已经遗失。单一帧及其确认是最基本的例子。
包括IP在内,一些较上层的网络协议或多或少都会用到帧分段。在网络层进行分段的缺点是接收端必须重组;如果帧在传送过程中遗失,整个封包必须重传。在链路层(link layer)使用分段机制可以提升速度,即以较小的MTU在跳跃点间传送数据。此外,802.11可以利用帧分段来避免干扰。无线电波干扰通常会以瞬间且高能量的突波形式出现,而且经常与AC电源线同步。将帧加以分段可保护大部分帧不会被损坏。
帧分段是由MAC的分段阀值参数控制。任何超过分段阀值的帧都会被分段,分段方式因具体实现而已。调高分段阀值意味着帧的传送负担较小,不过帧遗失与损坏的成本较高,因为将会有较多的数据必须丢弃或重传。调低分段阀值意味着传送负担较重,不过在面临较恶劣的环境时,这种做法可以提供较好的稳定性。
为保证媒介使用权以及数据传送不被中断,工作站可使用RTS/CTS的交换方式。RTS/CTS交换的做法和帧分段没有什么两样,只是RTS帧并未携带任何数据。RTS中的NAV可让CTS完成操作,而CTS则可用来为数据帧保留媒介使用权。RTS/CTS可用在所有的帧交换,非帧交换或介于两者之间。和帧分段一样,RTS/CTS是由驱动程序中的阀值来控制的。超过该阀值的帧由RTS/CTS先行清空媒介,而较小的帧则被直接传送。实际上,RTS/CTS交换通常与帧分段并行。虽然经过分段,帧分段还是有一定的长度,因此可受惠于RTS/CTS过程所确保的媒介独家使用权,免于隐藏点的竞争。
在RF系统中,放大器是最耗电的组件,它负责将送出的信号放大并将收到的信号放大至可处理的水平。802.11工作站可以关闭无线电波收发器并且定期进入休眠状态,以维持最长的电池使用时间。在休眠期间,接入点会为每个处于休眠状态的工作站缓存单播帧。若有缓存帧,接入点会由后续的Beacon帧告知工作站。从省电状态苏醒的工作站可以使用PS-POLL帧取得这些缓存帧。
接收到PS-Poll帧的接入点可以立即采取响应,也可以等到环境许可,比较空闲时再予以响应。
接入点可以对PS-Poll(省电-轮询)帧立即作出响应。经过一段SIFS接入点即可传送帧。PS-Poll帧的Duration/ID字段中包含了Association ID(关联标识符),因此接入点可以判断哪些帧是为该工作站所缓存。
除了立即响应,接入点可以先回复一个简单响应,这种称为延迟响应(deferred response),因为接入点虽然响应了访问缓存帧的请求,但并未立即采取实际的发送行动。使用延迟响应的优点之一在于接入点方面的软件较易实现,因为确认信息可以通过芯片组固件立即传送,至于数据则可以先予以缓存,然后依正常流程传送。
能够以不同速度操作的网络技术必须具备一种机制,可以协商出一种收发端彼此均可接受的数据传送速度。速度协商对于工作站而言尤其方便。工作站可以经常变换速度,以适应无线电波环境的快速变动。当工作站间的距离改变时,速度也会随之变动。工作站必须能够适应随时变动的环境,必要时更改传送速率。和一些其他协议功能一样,802.11标准并未规范该如何选择传送速率。标准正式提出一般原则:
1.每个工作站均持有一份操作速率列表,其中记录工作站与所连接BSS均支持的所有速率。高于操作速率集的传送速率是不允许用来传送帧的
2.每个BSS必须负责维护一组基本速率,即打算加入此BSS的工作站所必须支持的速率列表。任何传送至组接收地址的帧必须以基本速率传送,以确保所有工作站均可正确解读。
3.用来开始帧交换的控制帧,如RTS/CTS,必须以基本速率集中的一种速率来进行传送。此规则可以确保必须以CTS响应RTS帧的工作站能够以相同速率操作。
4.发送给特定工作站的帧会在Address1字段记载单播目的地地址。单播帧可以使用目的端支持的任一速率传送。
5.ACK或CTS之类的确认帧必须以基本速率集所包含的速率传送,但不能快于这次传送所使用的的初始帧。
802.11接口均支持某种降速机制,可以适应不同网络环境调降所使用的数据率。速率选择主要决定一张网卡该在何时提高速率以提高链路质量。
最常被用来判断何时应该变速的算法,其实是通过一些不是那么严谨的信号质量测量。信号质量可以直接就信噪比加以测量,或者间接观察有多少帧需要重传。直接测量信噪比可以针对最近一个帧的瞬间信号质量,或者最近一段时间所收到的一定数量的帧取平均数。
至于间接量测,则是监测瞬间或平均遗失多少帧,然后予以适度补偿。采用间接测量的算法简单来讲就是:如果帧已经遗失且帧重试计数器已经用尽,那就降速至下一档,然后重试一遍,反复进行以上步骤直到帧送出。
无线接入点的核心其实就是桥接器,负责在无线与有线媒介之间转换帧。虽然802.11并未限制非得使用何种有线媒介技术,但放弃Ethernet不用的接入点还真没见过。大多数接入点在设计上就是扮演802.11与Ethernet之间的桥梁。
当接入点的无线接口接收到准备传送至有线网络的帧时,接入点必须在两种媒介之间桥接帧(bridge frame)。需要进行一系列操作:
(1)当接入点接收到一个帧时,首先会检测该帧基本的完整性。接下来,接入点会针对所使用的物理层,查看物理层标头,然后验证802.11帧上的帧校验码(FCS)
(2)验证帧接收无误后,接入点就会继续查看是否应该进一步处理该帧
a.传送至接入点的帧会将接入点的MAC地址(即BSSID)作为802.11 MAC标头的Address1字段。不匹配该接入点的BSSID的帧应予以丢弃
b.802.11 MAC接着检测且移除重复的帧。产生重复帧的原因很多,不过最常见的情况是802.11确认在传送过程中遗失或损坏。为了简化上层协议的操作,因此由802.11 MAC负责剔除重复的帧。
(3)一旦接入点判断出需要进一步处理该帧,就必须予以解密,因为该帧受到链路层安全算法的保护。
(4)成功解密后,接入点即查看该帧是否为帧片段是否需要进一步重组。完整性保护针对的是重组后的完整帧,而不是个别的帧片段。
(5)如果经过步骤2a的BSSID校验,判断接入点必须桥接该帧,较复杂的802.11 MAC标头会被转换成比较简单的Ethernet MAC标头。
a.记录在802.11 MAC标头的Address 3字段里的目的地址会被复制到Ethernet的目的地地址
b.记录在802.11 MAC标头的Address 2字段里的来源地址会被复制到Ethernet的来源地址。
c.在802.11 Data字段里的SNAP标头将(Type字段里的)类型代码复制到Ethernet帧里的Type字段中。如果该Ethernet帧也适用SNAP,就复制整个SNAP标头。
d.顺序信息主要供帧片段重组之用,不过当帧被桥接之后即予以丢弃
e.如果有标准的服务质量处理过程,即在此进行无线接口与有线接口的Qos映射。不过到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用802.1p优先级位或者其他的控制形式。
6.重新计算FCS(帧校验码)
7.将产生的新帧交付给Ethernet接口传送
将帧从接入点有线端桥接至无线媒介的过程刚好相反:
1.验证Ethernet FCS后,接入点首先会查看是否需要进一步处理所接收到的帧,即查看该帧的目的地地址是否属于当前与接入点有关联的工作站
2.将SNAP标头附加与Ethernet帧的数据之前。上层封包以SNAP标头进行封装,而其Type字段从Ethernet帧里的类型代码复制而来。如果该Ethernet帧也适用SNAP,则复制整个SNAP标头。
3.对帧的传送进行调度。802.11包含复杂的省电操作,将帧置于传送队列之前,接入点可能会将帧缓存与缓冲区
4.一旦帧被置于队列待传,就会被赋予一个顺序编号,如有必要,所产生的数据可以用完整性校验值加以保护。如果帧需要分段,则会根据事先设定好的分段阀值进行分段。分段帧时,Sequence Control字段中的片段编号也会被赋值。
5.如果帧需要保护,则对帧的主体加密
6.802.11 MAC标头根据Ethernet MAC标头产生
a.将Ethernet的目的地地址复制到802.11 MAC标头的Address 1字段
b.将BSSID置于Address 2字段以作为无线媒介上帧的发送者
c.将帧的来源地址复制到MAC标头的Address 3字段中
d.将其他字段填入802.11 MAC标头。也就是把预计传送时间填入Duration字段,并把适当的标记填入Frame Control字段
7.重新计算FCS(帧校验码)。
8.将产生的帧交付给802.11接口发送
服务质量扩展功能会影响帧的传送顺序,但并不会改变帧通过802.11 MAC的基本路径。802.11e服务质量扩展功能并非只用单一传送队列,而是上述有线至无线桥接过程中的第4,5,7步中采用多组传送队列。这些步骤会根据优先次序进行帧处理,而优先级次序取决于帧的内容以及配置设定中预先指定的优先级分级规则。
WIFI基础入门–802.11–成帧细节(数据帧)–5
温馨提示:
以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!