具有802.11无线网卡的设备,包括手机、笔记本电脑等。
AccessPoint(AP):
实现无线网络与固定网络连接功能的设备,通常也称作“热点”,它主要完成STA与STA之间数据的转发、STA与骨干网之间数据的转发以及必要的管理工作。
本文中将AP和STA通称为Node(节点)。
WirelessMedium(WM):
STA之间以及STA与AP之间传递数据的通道,即无线链路。
无线链路一词相对直观和容易理解,本文中的用无线链路只带WM。
DistributionSystem(DS):
8023.11中的一个逻辑概念,通常包括两部分:骨干网以及AP的帧分发机制。这里的骨干网指的是连接各AP的固网,通常可以理解为以太网;AP的帧分发机制则完成骨干网与STA、以及STA与STA之间的数据帧转发工作。
1.280
2.11组网方式
IndependentBasicServiceSet(IBSS)
—IBSS中只有STA和WM,没有AP和DS
—IBSS内的通信只能发生在STA直接通信距离内
—IBSS内STA间的通信都是点到点直接通信,没有转发
图1IBSS网络结构
InfrastructureBasicServiceSet(BSS)
—BSS内有STA、AP和WM,但没有DS
—BSS的范围由AP的覆盖范围决定
—BSS内的各STA的通信均由AP中转,不能直接通信
—BSS内STA在通信前必须先与AP进行关联(associate),建立STA-AP的对应绑定关系—STA总是关联的发起方,AP是响应方并决定是否允许STA的加入
—一个STA同一时刻最多只能与一个AP进行关联
—AP的存在使得各STA可以以省电(power-saving:PS)模式工作
图2BSS网络结构
ExtendedServiceSet(ESS)
—多个BSS串在一起组成一个ESS,同一ESS内的所有AP使用同一个SSID(ServiceSetIdentifier)
—一个ESS内的各BSS由DS连接起来
图3ESS网络结构
2.802.11数据传输的基本问题及解决方案
2.1数据传输的可靠性
将数据准确无误地送达目的地是任何通信技术的基本要求。802.11中引入多种机制来保证数据传输的可靠性。
2.1.1ACK机制
接收方成功接收到一个帧后,向发送方回复一个Ack帧进行确认。这里的成功接收意味着MAC帧已经收到且FCS校验结果正确。
图4引入ACK后的帧交互机制
一般情况下有两种帧要求Ack帧的确认:
单播帧:单播帧的接收者必须向发送者回复Ack进行确认
ToDS域为1的多播/广播帧:ToDS为1意味着这个报文需要由AP转发到DS里去,
AP向发送方确认报文已收到并会被转到DS里去。此时其他STA不回复。
多播/广播帧不要求、也不能要求收到该帧的每个节点都ACK回复,因为这样既无必要,AP也无法处理。
发送方收不到Ack帧的可能情况有:
接收方未接收到帧,所以没有回复Ack
接收方收帧过程出错,或是对帧的FCS校验失败,没有回复Ack
接收方成功收到帧,但发送方没有成功收到Ack帧
不管是那种情况,发送方都会认为发送失败并启动重传。
2.1.2重传机制
802.11中提供一个门限值RTSThreshold,长于或等于该门限值的帧被认为是长帧,而短于该门限值的帧被认为是短帧。
系统为每一个即将传输的帧(impendingframe)都相应地配备有一个重发计数器(RetryCounter),长帧则为LRC(LongRC),短帧则为SRC(ShortRC)。每重传一次,相应的RC就加1。系统中对帧的重传次数是有限制的。如果重传次数达到上限但传输依然没有成功,该帧将被丢弃。
综上所述,帧的重传不会无限制的重复下去,当发生下述情况之一时,重传终止:
得到了接收方的Ack,发送成功;
重传次数达到上限但仍未收到接收方的Ack,发送失败,弃帧;
当前帧已经过了有效时期但仍未收到接收方的Ack,发送失败,弃帧。
重传意味着对帧的缓冲,意味着对系统内存及其他资源的占用。而帧越长,对系统内存的占用就越多。因此按帧的的长短进行分类,降低长帧的重传上限,有利于提高系统资源的利用效率。
鉴于发送方没收到Ack的可能原因,重传有可能导致接收方收到重复帧,因此接收方需要相应的重复帧过滤机制。
2.1.3重复帧过滤机制
802.11网络中的每一个节点,包括STA和AP,都会根据所收到的帧来缓存并更新<对端地址,帧序号,分片序号>组合,对于每一个对端地址,只需要保存最近收到的帧的<地址,帧序号,分片序号>组合。
收帧过程中,如果接收端发现当前帧是一个重传帧(帧中的RetryBit为1),则根据当前帧的发送者地址找到缓存中对应的<对段地址,帧序号,分片序号>。如果当前帧的帧序号小于或等于组合中的帧序号,或者帧序号相同但是分片序号小于或等于组合中的帧序号,接收方会将该帧认为是重复帧而将其丢弃。
如果当前帧中的RetryBit为0,接收端将不会启动重复帧过滤机制。
对重复帧,接收方依然回复ACK帧,以免发送方不断重传。
2.1.4分片机制
根据帧格式的定义,802.11帧中负载的最大长度为23424字节。对于更长的数据,则需要将其分片成多个帧组成分片序列来完成传输。
802.11的分片序列中,除了最后一片,所有分片大小都应一样,且应该是偶数个字节。整个分片序列共享一个帧序号,帧序号表示各分片在整个序列中的位置。除了最后一片外,所有分片中的MoreFrag域都应设为0以告知接收者还有后续分片。根据帧格式的定义,分片号由4比特的二进制序列表示,说明一帧数据最多只能有16个分片。
接收方先将所收到的分片缓存,收齐所有分片后按照分片号的先后顺序重新组装。如果未能收齐所有分片或者重组失败,接收方将直接丢弃整个分片序列。
在正常情况下,接收者应对每一个收到的分片立即回复ACK,收到ACK后发送方继续发送下一个分片。如果某个分片没有被ACK,发送方将对该分片启动重传机制。显然,任何一个分片的发送失败都会导致整个序列的发送失败。
对大的数据包进行分片处理,可以提高传输的可靠性。
2.2隐藏节点(hiddennode)问题
考虑下图所示的情况:node1和node3都在node2的收发区域内,但node1不在node3的收发区域,因此对于node3相对于node1而言是一个“隐藏节点”。同样,node3也是node1的“隐藏节点”。如果不加任何约束的话,node1和node3很有可能同时向node2发送数据,而node2无法区分并成功接收,因而发生冲突。