Ethernet的成帧十分简单,只要为帧加入前导码(preamble),寻址信息以及在结尾加上校验码即可。相对而言,802.11的成帧比较复杂,因为无线媒介必须将有线网络所没有的帧类型以及各式管理功能纳入考虑。
802.11帧主要有三种类型。数据帧负责在工作站之间传输数据,它可能会因为所处的网络环境不同而有所差异。控制帧通常与数据帧搭配使用,负责区域清空(area clearing),信道获取(channel acquisition)以及载波监听的维护(carrier-sensing maintenance),并于收到数据时予以肯定确认,借此提供工作站之间数据传送的可靠性。管理帧负责监督,主要用来加入或退出无线网络以及处理接入点之间关联的转移事宜。
数据帧会将上层协议的数据置于帧主体(frame body)中加以传递。不同类型的数据帧可根据功能加以分类,包括基于竞争服务以及无竞争服务两种数据帧。
Duration(持续时间)字段用来记载网络分配矢量(Network Allocation Vector简称NAV)的值。访问媒介的时间限制由NAV指定。数据帧的Duration字段的设定必须依循以下规范:
a.无竞争周期所传递的任何帧必须将Duration字段设定为32768。此规范适用于无竞争周期所传递的任何数据帧。
b.目的地为广播或组播地址的帧(Address 1字段设定了组位)的持续时间为0。此类帧并非原子交换过程的一部分,接收端也不会加以确认,因此基于竞争的媒介访问可以在广播或组播数据帧结束后立即开始。NAV在帧交换过程中用来保护对传送媒介的访问。既然广播或组播帧之后不会有来自链路层的确认,因此没有必要为后续帧锁定媒介使用权。
c.如果Frame Control字段中的More Fragments位为0,表示该帧已无其余片段。最后的帧片段只需要为本身的确认预定媒介使用权,之后就可以恢复基于竞争的访问了。Duration字段会被设定为传送一个短帧间间隔及片段响应所需要的时间。
d.如果Frame Control字段的More Fragments位被设定为1,则表示其后还有帧片段。因此,Duration字段便会被设定为传送2个确认加上3个短帧间间隔及下一个帧片段所需要的时间。
每个BSS都会被赋予一个BSSID,它是一个长度为48位的二进制标识符,用来识别不同的BSS。BSSID的主要优点是可作为过滤之用。虽然不同的802.11网络彼此之间可能重叠,但即使如此也不应该让互相重叠的网络受到彼此的链路层广播。
在Infrastructure BSS(基础结构型基本服务集)中,BSSID就是创建该BSS的接入点上无线接口的MAC地址。而IBSS(独立基本服务集)则必须创建BSSID,才能产生网络。为了让所创建的地址尽量不重复,BSSID由46位随机产生的。其所产生的BSSID会将Universal/Local位设定为1,代表这是一个本地地址,至于Individual/Group位则会设定为0。两个不同的IBSS如果要产生相同的BSSID,那么它们所产生的46位随机数必须完全相同。
有一个BSSID会被保留不用,就是所有位均被设定为1的BSSID,又称为广播型BSSID。使用广播型BSSID的帧可以不被MAC中任何的BSSID filter所过滤。BSSID的广播只有在移动式工作站送出Probe request(探查请求)以试图找出与哪些网络可以加入时才会被用到。Probe帧要能够探测现有的网络,就不能被BSSID filter过滤掉。Probe帧是唯一允许使用广播型BSSID的帧。
地址字段的编号与功能取决于设定了哪个DS(分布式系统)位,因此所使用的网络类型会间接影响到地址字段的用法。只有无线桥接器才会使用第四个地址字段。地址字段在数据帧中的用法如下:
功能 | ToDS | FromDS | Address1(接收端) | Address2(发送端) | Address3 | Address4 |
---|---|---|---|---|---|---|
IBSS | 0 | 0 | DA | SA | BSSID | 未使用 |
TO AP(基础结构型) | 1 | 0 | BSSID | SA | DA | 未使用 |
From AP(基础结构型) | 0 | 1 | DA | BSSID | SA | 未使用 |
WDS(桥接器) | 1 | 1 | RA | TA | DA | SA |
Address 1字段代表帧接收端的地址。在某些情况下,接收端即为目的地,但不总是这样。目的地是指负责处理帧中网络层封包的工作站,而接收端则是负责将无线电波解码为802.11帧的工作站。如果Address 1字段被设为广播或组播地址,则必须同时检查BSSID(基本服务集标识符)。工作站只会响应来自同一个基本服务集的广播或组播,至于来自其他不同BSS的则加以忽略。Address 2字段是发送端地址,用来确认信息。发送端不一定是来源地,来源地是指产生帧中网络层协议封包的工作站,而发送端则是负责将帧传送至无线链路。Address 3字段则是供接入点与分布式系统过滤之用,不过该字段的用法取决于所使用的网络类型。
由于IBSS(独立基本服务集)并未使用接入点,因此不会涉及分布式系统。发送端即为帧的来源,而接收端即为帧的目的地。每个帧都会记载BSSID(基本服务集标识符),因此工作站可以检查广播与组播信息。只有隶属同一个BSS的工作站才会处理该广播或组播信息。在IBSS中,BSSID是由随机数产生器随机产生的。
802.11对来源地与发送端以及目的地与接收端有明确的区别。将帧送至无线媒介的发送端不见得就是帧的产生者。目的地址与接收端地址同样有此区别。接收端可以只是中间目的地,而帧只有达到目的地,才会由上层的协议加以处理。
以下是一个简单的网络结构,其中某个无线客户端通过802.11网络连接至服务器,客户端将帧传送给服务器:
client(电脑)作为(SA/TA)–>AP(BSSID RA)–>DS(分布式系统)–>server(DA)
如果帧的目的地位于分布式系统(DS),则客户端既是来源地也是发送端。至于无线帧的接收端则是接入点(AP),不过该接入点只是个中间目的地。当帧送达接入点时,该帧会经分布式系统转送给服务器。因此,分布式是接收端,而服务器才是最后的目的地。在基础结构型网络里,接入点会以其无线接口的地址创建响应的BSS,这就是为什么接收端地址(Address 1)会被设定为BSSID的原因。
当服务器响应客户端时,帧会通过接入点被传送客户端:
由于帧产生自服务器,所以服务器的MAC地址即为该帧的源地址(source address简称SA)。当帧通过接入点转送出去时,接入点将会以自己的无线接口作为发送端地址(transmitter address简称TA)。如同前一个例子,接入点的接口地址就是BSSID。帧最后会被送至客户端,此时客户端既是目的地也是接收端。
在无线分布式系统(wireless distribution system简称WDS)中的用法。无线分布式系统有时也称为无线桥接器。两条有线网络通过扮演无线桥接器角色的基站彼此相连。从客户端送至服务器的帧会经过802.11 WDS。该无线帧的源地址与目的地地址依然对应到客户端与服务器的地址。不过,这些帧还是会区分无线媒介上帧的发送端与接收端。对于由客户端送至服务器的帧而言,发送端就是客户端这边的接入点,而接收端就是服务器这边的接入点。将来源地与传送端分开的好处是当服务器这边的接入点送出必要的802.11响应给对方的接入点时,不会干扰到有线链路层。
802.11具有数种不同类型的数据帧。要使用何种帧,取决于是属于基于竞争的还是无竞争的。基于效率上的考虑,无竞争帧中纳入其他功能。只要改变帧的子类型,无竞争周期中的数据帧可用来确认其他帧,如此便可省去帧间间隔以及一一确认所带来的负担。以下是常见的数据帧类型:
子类型为Data的帧只有在基于竞争的访问周期才会被传送。这类简单的帧只有一个目的,即在工作站间传送帧主体。
Null帧是由MAC标头与FCS标尾所组成。在传统的Ethernet中,Null帧无非就是额外的负担。在802.11网络中,移动式工作站会利用Null帧来通知接入点改变省电状态。当工作站进入休眠状态时,接入点必须开始为之缓存帧。如果该移动式工作站没有数据要经分布式系统传送,也可以使用Null帧,同时将Frame Control字段的Power Management为设定为1。接入点不可能进入省电模式,因此不会传送Null帧。
数据帧的形式取决于网络的类型。帧究竟属于何种类型,完成取决于subtype(子类型)字段,而与其他字段是否出现在帧中无关。
在IBSS中,当无线MAC收到一个帧时,首先会去检查BSSID,只有BSSID与工作站相同的帧才会交由上层协议处理。
在infrastructure(基础结构型)网络中,发送端地址即为接入点(AP)上无线接口的地址,同时也是BSSID。最后,该帧会记载帧的来源MAC地址。区别来源地与发送端之所以有必要,是因为802.11 MAC会将确认送到帧的发送端(即接入点),而较上层的协议将会回复帧的来源地。
在infrastructure(基础结构型)网络中,移动式工作站传送给所连接的接入点的帧格式。接收端地址(RA)为BSSID(即接入点的MAC地址)。送至接入点的帧,其来源地/发送端是无线工作站的网络接口。接入点并未进行地址过滤动作,而是使用第三个地址DA将数据转送至位于分布式系统的适当位置。
当接入点被部署成无线桥接器(或者WDS)时会用到4个地址字段,WDS帧会使用第一个地址(RA),第二个地址(TA)。MAC层会使用这两个地址送出确认并控制流量,例如RTS,CTS以及ACK帧。另外两个地址字段(SA与DA)则是用来记载帧的源地址以及目的地地址,并且将与无线链路所使用的地址区分开来。
收到链路层安全协议保护的帧并不算新的帧类型。当帧经过加密处理后,Frame Control字段的Protected Frame位会被设定为1,至于Frame Body字段则是以加密标头开始,这取决于所使用的是何种协议。
WIFI基础入门–802.11–成帧细节(控制帧)–4
温馨提示:
以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!