802.11简介
在进入无线网络的细节之前,我们先通过本文从总体上介绍一下802.11的网络。 因为,网络协议往往涉及到各式各样的定义和缩写,本文将从总体上予以介绍,希望在以后深入到细节的时候能够有些概念。
虽然802.11网络与以太网(Ethernet)十分相似,但是802.11网络仍然有很多特定的设计,将以太网扩展到了无线世界中。 802.11的核心就是媒介访问控制(Media Access Control, MAC)的方式。无线网卡使用的是48位的MAC地址,保证了对有线网络的兼容性。 MAC地址就是一个固定值,与以太网的MAC地址一样,802.11的MAC地址也一样会出现在ARP列表中,使用相同的供应商前缀,这些都没有什么分别。
而构成802.11网络的设备则与以太网络的设备有很大的不同。最大的特点就是802.11的网络设备是可以随意移动的。
1. IEEE 802协议族
IEEE 802协议族是一系列局域网(Local Area Network, LAN)技术的协议族,802.11是其中一员。IEEE 802协议族关注的是OSI模型最底下的两层, 所有的802网络都有一个MAC和一个PHY组件,分别描述链路层和物理层的设备。MAC指定了访问媒介以及发送数据的规则, 而数据是如何接受和发送的则由PHY实现。
802协议族中的各个网络通过第二个数字加以区分。比如说,802.3是载波监听多路访问/冲突检测(Carrier Sense Multiple Access Network with Collision Detection, CSMA/CD)规范,它应用于以太网。802.5描述了令牌环(Token Ring)网络的实现。 802.2描述了一个一般的链路层控制协议LLC(Logical Link Control),可供所有局域网底层技术使用。802.1记录了802网络的管理特性, 它还有很多扩展协议比如桥接(802.1d)和虚拟局域网(Virtual LANs, VLANs, 802.1q)。
802.11只不过是一种使用LLC封装的链路层协议。最早802.11只定义了MAC和两种物理层:跳频扩频物理层(Frequency-Hopping Spread-Spectrum, FHSS)和直接序列扩频物理层(Direct-Sequence Spread-Spectrum, DSSS)。后来802.11陆续添加了其它的物理层, 802.11b描述了一个高速直接序列扩频物理层(High-Rate DSSS, HR/DSSS)。 802.11a定义了一个基于正交频分复用(Orthogonal Frequency Division Multiplexing, DFDM)的物理层。
802.11用无线电波作为物理层,将PHY划分为了两个一般组件:物理层汇聚过程(Physical Layer Convergence Procedure, PLCP)负责将MAC帧映射到传输媒介, 和物理媒介相关的系统(Physical Medium Dependent, PMD),负责传送MAC帧。PLCP是MAC与物理层之间的接口。
2. 802.11网络
802.11网络由四个部分构成:
- Access Points:接入点(Access Points, AP)是桥接有线与无限网络的设备。AP的功能不仅于此,但桥接(bridge)是最主要的, 负责将802.11网络的帧与其它类型的网络帧相互转换。
- Station:无线网络的建立就是为了在Station之间传递数据。Station是网络中的各个计算机设备,比如说手机、笔记本什么的。
- Wireless Medium:无线媒介用于在Station以及AP设备之间传送数据帧。最初标准化了两种物理层:射频(Radio Frequency, RF)和红外线(Infrared), 而RF是使用更为广泛的一种。
- Distribution System:分布系统则是多个AP之间通过有线或者无线的方式互联互通,实现较大范围无线覆盖的系统。802.11的规范中并没有明确的描述分布系统的细节。 大多数的实现都是以桥接引擎(briding engine)和分布式系统媒介(distribution system medium)构成的AP件转发帧的骨干网络(backbone network)。 几乎所有商业上成功的分布网络都用以太网(Ethernet)作为其骨干网络技术。
基本服务集(Basic Service Set, BSS)是802.11网络的基本组件,它就是Stations之间简单的相互通信。通信在一个模糊的空间中进行,称为基本服务空间(basic service area), 它是无线媒介的传播特性决定的。当一个station在基本服务空间中,就可以与BSS中的其它成员通信。
BSS网络有两种形式:
- 独立性网络(Independent BSS, IBSS)。各个Station之间可以直接通信,是由少数几个Station为了特定的目的组成的暂时性网络,有时也称之为ad hoc network.
- 基础结构网络(Infrastructure BSS)。基础结构网络不简称为IBSS,IBSS只用于独立性网络。在基础结构网络中有一个AP用于管理网络中的所有通信, 包括Station之间的通信。如果网络中有一个Station需要与另一个Station通信,需要先发送数据帧到AP,再由AP转发给另一个Station。
一个接入点的网络覆盖能力有限,如果我们希望得到一个能够覆盖一个公园的无线网络服务,就需要用到扩展服务集(Extended Servicce Set, ESS)。 它由多个通过分布系统连接在一起的AP构成。ESS是802.11网络中的最高抽象概念,其中的各个接入点(AP)相互合作, 使得外界能够使用单一的MAC地址与其它Station通信,而不必关心Station具体与哪个AP设备连接。
3. 802.11的MAC
802.11网络的关键就在于MAC。MAC位于各式物理层之上,控制着数据的传输,负责构成网络数据帧以及与有线骨干网络之间的交互。 不同的物理层可能提供不同的传输速度,但物理层之间必须彼此合作。
802.11也是采用CSMA的机制控制对传输媒介的访问。不过由于冲突(collisions)会浪费宝贵的传输资源,因此802.11使用的是冲突避免(Collision Avoidance, CA)机制, 而不是以太网中的冲突检测(Collision Detection, CD)机制。与以太网一样,802.11采用的是不具中枢控制功能的分布式访问机制,因此每个station访问媒介方式都是一样的。 802.11与以太网之间的主要差异在于各自所使用的底层媒介。
3.1 无线网络所面临的两个挑战
无线网络环境与有线网络环境之间存在较大的差异,为无线网络的设计带来了很多难题。其中最主要的有两个:无线通信的可靠性、隐藏节点问题。
在有线网络中,我们有理由假定数据的接收方一定能够收到所有的数据帧。但在无线链路中,存在着各种各样的噪声,微波炉都可能对无线传输带来干扰。 而且随着传播距离的拉长,无线信号减弱,数据在传输过程中出错甚至丢失是很正常的一件事情。
为了提高无线传输的可靠性,802.11采用了正确认(positive acknowledgment)的机制,要求所有发送出去的帧都必须得到响应。如果发送方没有接收到ACK, 就意味着一次传输失败。失败的原因可能有多种形式,接收方没有收到正确的数据帧、接收方正确的接收到帧了但发送方并没有收到确认信号,不论是那种形式的失效,都是失效。 发送数据帧并接收到ACK确认数据帧成功发送的过程就是一个原子操作,整个操作过程中包含若干个步骤,我们不必深究在哪一步失效了,只要没有收到确认信号,数据帧就需要予以重传。 这样就提高了无线通信的可靠性。
为了解释隐藏节点问题,我们考虑如下的一个场景。有三个节点需要通信,节点1和节点3只能分别与节点2通信,节点1与节点3之间因为距离太远无法收到对方的无线信号。 此时节点3对于节点1来说就是一个隐藏节点。节点1和节点3可能在同一时间传送数据,在节点2这边就会产生相互的干扰,以至于节点2无从响应。 但是节点1与节点3是不知道有冲突发生的。
对于有线传输,信号都是在线缆中进行的,通过检测线缆上有没有信号就可以知道通信媒介是否已经被占用了,这也就是所谓的冲突检测CD机制。 而在无线网络中,信号的传递范围是模糊的,冲突检测机制就显得不适用了。
为了让节点2能够正常的接受数据,避免冲突的发生。802.11允许Station使用请求发送(Request to Send, RTS)和清楚发送(Clear to Send, CTS)来控制信号空间。 当节点1有一个帧需要传送的时候,就先送出一个RTS帧开启数据帧的传递过程。空间中所有可能接收到RTS帧的设备在未来的一段时间内都会保持沉默,不再发送数据。 而RTS帧的目标端则会以CTS帧应答。同样的,空间中所有可能接收到CTS帧的设备也会保持一段时间的沉默。在这段沉默的时间中,无论是发送端还是接收端周围都不会再有其它设备发送数据, 占用无限信道。节点1就可以放心的发送数据帧到节点2不需要担心有任何隐藏节点的干扰。
3.2 MAC的访问模式与时机
无线媒介是整个网络的公共资源,为了正常的网络通信,我们就需要尽量避免冲突的发生。CSMA/CA机制就是有分布式协调功能(Distributed Coordination Function ,DCF)控制的。 如果要求无竞争服务(contenion-free service),则需要用到建立在DCF之上的点协调功能(Point Coordination Function, PCF)。
DCF是标准CSMA/CA访问机制的基础。和以太网一样,在传送数据之前,需要先检查无线链路是否处于清空的状态。当需要避免冲突时,Station会随机地为每个帧选定一个退避(backoff)时间。 有时也可以通过RTS/CTS来进一步减少冲突的可能性。PCF是由AP提供的服务,因此只有基础结构网络才有这种功能,提供的是无竞争服务。允许工作站经过一段较短的时间间隔后发送, 实际上PCF并没有被广泛的应用。实际上,还有一种介于DCF和PCF之间的混合协调功能(Hybrid Coordination Function, HCF)。可以在网络中提供质量服务(Quality of Service, QoS)。 可以提供比DCF更高一级的服务质量,却不需要PCF那样严格控制时机。
载波监听(Carrier Sensing)主要用来判断媒介是否处于可用的状态。802.11描述了物理和虚拟的两种载波监听功能,只要其中一个监听功能显示媒介处于忙碌的状态,MAC就将之汇报给高层的协议。 物理载波监听的硬件成本很高,而且由于隐藏节点问题的存在,物理载波监听技术并不能够提供所有的信息。一般都需要有虚拟载波监听手段。
虚拟载波监听是由网络分配向量(Network Allocation Vector, NAV)提供的。NAV本质上是一种计时器,它以微秒为单位向下计数。只要NAV的值不为零,就表示媒介处于忙碌的状态。 802.11的帧中有一个Duration的字段,指示一个设备占用媒介的时间。各个接收到数据帧的工作站都会更新其NAV计数为Duration字段中描述的值。
NAV可以保证数据帧传送的原子操作不被中断。RTS/CTS过程就是一对原子操作。比如说现在节点1先发送一个RTS帧,在帧中设定了Duration所有收到RTS帧的工作站都会延迟访问媒介, 直到NAV计数为零。但是由于隐藏节点的存在,并不保证接收端周围没有节点产生冲突,所以接收节点在发送CTS帧时,也会设置Duration以更新其周围节点的NAV。之后的帧传送和ACK过程, 一样可以设定Duration,直到整个传送过程结束后,再经过一段分布式帧间间隔(Distributed Interframe Space, DIFS)之后,任何设备就可以对媒介进行访问了,也就进入了竞争窗口(Contention Window)。
上述的DIFS就是分布式协调功能DCF的一个部分。帧间间隔就是在媒介上连续两帧之间的一段延时,它是协调媒介访问的重要手段。802.11涉及了四种不同的帧间间隔, 其中三种都是用来决定媒介的访问时机的。802.11的MAC内置了冲突避免机制,所以设备会延迟对媒介访问,直到媒介空闲。不同的帧间间隔为不同类型的传输带来了不同的优先级, 当媒介再次空闲的时候,高优先级数据帧的帧间间隔小,优先占用媒介。
- 短帧间间隔(Short Interframe Space, SIFS):用于高优先级的传输,RTS/CTS以及ACK,都是高优先级的传输。
- PCF帧间间隔(PCF Interframe Space, PIFS):被PCF用于无竞争操作,有时也称为优先级帧间间隔(priority interframe space)。
- DCF帧间间隔(DCF Interframe Space, DIFS):DIFS是竞争式服务中最短的媒介闲置时间。
- 扩展帧间间隔(Extended Interframe Space, EIFS):EIFS并非固定的时间间隔,只有在帧传输出现错误的时候才会用到EIFS。
3.3 基于DCF的竞争访问规则
大部分的无限网络都是采用DCF的,它允许多个独立的Station彼此交互,无需通过中心控制节点,因此可以运用于IBSS网络或者基础结构网络中。 在试图传送任何数据之前,Station必须查看无线媒介是否处于闲置状态。若不是,必须延迟访问并利用指数退避(exponential backoff)算法来避免冲突。 所有使用DCF的传输中都会用到如下的两个基本规则:
- 如果媒介闲置时间长于DIFS,便可以立即进行传输。载波监听可以同时使用物理和虚拟的两种方式进行。若之前的帧接收无误,则必须至少空出一段DIFS, 若有无,则需要空出一个EIFS。
- 若媒介处于忙碌状态,Station必须等待信道再次闲置方可使用,802.11称之为访问延迟(access deferral)。一旦经历过访问延迟,工作站将认为媒介闲置, 此时开始等候DIFS或者EIFS,同时准备指数退避过程(exponential backoff procedure)。
在一些特定的情况下还有一些额外的规则:
- 发送端负责错误恢复(error recovery)。发送端预期每个帧都会收到一个确认帧,如果没有收到就必须重新发送直到成功为止。
- 只有收到正确认(positive acknowledgment)才表示发送成功。
- 所有的单播(unicast)数据都必须确认,广播数据则不需要。
- 每个Station都应当有一个重试计数器(retry counter),只要发送失败该计数器就要累加。
- 多帧序列可以在传送过程的每个步骤中都跟新NAV。当所收到的Duration比Station当前计数的NAV还要大,Station就需要更新NAV。
- 以下帧类型可在SIFS之后进行传输,具有较高的优先级:确认(acknowledgment)、RTS/CTS过程中的CTS以及片段序列(fragment sequence)中的帧片段(fragment)。
- 如果高层的包(higher-level packet)的大小超过所设定的分段阈值(fragmentation threshold),则必须加以分段,并使用扩展帧序列(extended frame sequence)。
上面所说的分段发送,是指当一个上层数据包的长度大于一定阈值之后,需要将一个大包拆分为若干小包予以发送。这样可以降低可能被干扰的数据量,提高整体的有效吞吐量。 在扩展帧序列中,每个帧片段都有一个相同的帧序号(frame sequence number)以及一个递增的帧片段编号(fragment number)以便重组。其中还有一个帧控制信息(frame control inforation)用来只是是否还有其它帧片段待收。
4. 总结
一个无限网络由四个部分构成:AP、Station、无线媒介和分布系统(或者说是骨干网络)。以BSS作为网络的基本组件,有支持Station之间直接通信的IBSS网络,也有建立在AP之上的基础结构型网络。 为了提高无限网络的覆盖范围,还有扩展服务集ESS。
802.11是IEEE 802网络协议族的一员,它定义和描述了用于无线网络的物理层和链路层,不同的物理层使用802.11a, 802.11b等协议具体定义。 其关键就是MAC,它位于各式物理层之上,控制着数据的传输。为了提高无线通信的可靠性,802.11采用应答的机制,执行出错重传。另外通过合理的控制无限媒介的访问时机,避免冲突, 通过CSMA/CA机制控制数据传输。