[原创] 基于数据链路层浅析wifi网络避免冲突机制

发新帖
发表于 2016-10-9 10:13:50 | 显示全部楼层 |阅读模式
分享:
查看: 4105|回复: 0
虽然ISO/IEC 7498标准所定义的OSI/RM只将网络划分为七层。但实际上每一层还可划分为多个子层(Sub Layer)。所有这些子层中,最为人熟知的就是ISO/IEC 8802[7]规范划分Data Link Layer而得到的LLC(Logic Link Control Sub Layer)和MAC(Medium Access Control Sub Layer)。 媒介访问控制子层(MAC Sub Layer):该子层的目的是解决局域网(Local Area Network,LAN)中共用信道的使用产生竞争时,如何分配信道的使用权问题。目前LAN中常用的媒介访问控制方法是CSMA/CD(争用型介质访问控制)。由于无线网络的特殊性,MAC的控制方法略有不同。将在下文介绍相关内容。 逻辑链路控制子层(LLC Sub Layer):该子层实现了两个站点之间帧的交换,实现端到端(源到目的),无差错的帧传输和应答功能及流量控制功能。 在Data Link层划分的这两个子层中,802.11只涉及MAC层。由于物理介质的不同,无线和有线网络使用的MAC方法有较大差别,主要区别如下: 1,有线网络最常使用的方法(此处仅考虑以太网)是CSMA/CD(Carrier Sense Multiple Access/Collision Detect,载波监听多路访问/冲突检测机制)。其主要工作原理是:工作站发送数据前先监听信道是否空闲,若空闲则立即发送数据。并且工作站在发送数据时,边发送边继续监听。若监听到冲突,则立即停止发送数据并等待一段随机时间,然后再重新尝试发送。 2,无线网络主要采用CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance,载波监听多路访问/冲突避免机制)方法。无线网络没有采用冲突检测方法的原因是:如果要支持冲突检测,必须要求无线设备能一边接收数据信号一边传送数据信号,而这种设计对无线网络设备来说性价比太低。另外,冲突检测要求边发送数据包边监听,一旦有冲突则停止发送。很显然,这些因发送冲突而被中断的数据发送将会浪费不少的传输资源。所以,802.11在CSMA/CD基础上进行了一些调整,从而得到了CSMA/CA方法。其主要工作原理见下节内容。 注意 CSMA/CA协议信道利用率低于CSMA/CD协议信道利用率。信道利用率受传输距离和空旷程度的影响,当距离远或者有障碍物影响时会存在隐藏终端问题,降低信道利用率。在802.11b WLAN中,在1Mbps速率时最高信道利用率可达到90%,而在11Mbps时最高信道利用率只有65%。 CSMA/CA主要使用两种方法来避免碰撞。 设备发送数据前,先监听无线链路状态是否空闲。为了避免发生冲突,当无线链路被其他设备占用时,设备会随机为每一帧选择一段退避(backoff)时间,这样就能减少冲突的发生。RTS-CTS握手。设备发送帧前,先发送一个很小的RTS(Request To Send)帧给目标端,等待目标端回应CTS(Clear To Send)帧后才开始传送。此方式可以确保接下来传送数据时,其他设备不会使用信道以避免冲突。由于RTS帧与CTS帧长度很小,使得整体开销也较小。 我们通过图3-3来介绍RTS和CTS的作用。 如图3-3所示,以站A和站B之间传输数据为例,站B、站C、站E在站A的无线信号覆盖的范围内,而站D不在其内。站A、站E、站D在站B的无线信号覆盖的范围内,但站C不在其内。 如果站A要向站B发送数据,站A在发送数据帧之前,要先向站B发送一个请求发送帧RTS。在RTS帧中会说明将要发送的数据帧的长度。站B收到RTS帧后就向站A回应一个允许发送帧CTS。在CTS帧中也附上站A欲发送的数据帧的长度(从RTS帧中将此数据复制到CTS帧中)。站A收到CTS帧后就可发送其数据帧了。怎么保证其他站不会干扰站A和站B之间的数据传输呢?对于站C,站C处于站A的无线传输范围内,但不在站B的无线传输范围内。因此站C能够收听到站A发送的RTS帧,但经过一小段时间后,站C收听不到站B发送的CTS帧。这样,在站A向站B发送数据的同时,站C也可以发送自己的数据而不会干扰站B接收数据(注意,站C收听不到站B的信号表明,站B也收不听到站C的信号)。对于站D,站D收听不到站A发送的RTS帧,但能收听到站B发送的CTS帧。因此,站D在收到站B发送的CTS帧后,应在站B随后接收数据帧的时间内关闭数据发送操作,以避免干扰站B接收自A站发来的数据。对于站E,它能收到RTS帧和CTS帧,因此,站E在站A发送数据帧的整个过程中不能发送数据。 总体而言,使用RTS和CTS帧会使整个网络的效率下降。但由于这两种控制帧都很短(它们的长度分别为20和14字节)。而802.11数据帧则最长可达2346字节,相比之下的开销并不算大。相反,若不使用这种控制帧,则一旦发生冲突而导致数据帧重发,则浪费的时间就更大。 另外,802.11提供了三种情况供用户选择以处理。 1,使用RTS和CTS帧。 2,当数据帧的长度超过某一数值时才使用RTS和CTS帧。 3,不使用RTS和CTS帧。 尽管协议经过了精心设计,但冲突仍然会发生。例如,站B和站C同时向站A发送RTS帧。这两个RTS帧发生冲突后,使得站A收不到正确的RTS帧因而站A就不会发送后续的CTS帧。这时,站B和站C像以太网发生冲突那样,各自随机地推迟一段时间后重新发送其RTS帧。因此会根据802.11协议,CSMA/CA具体运作时由协调功能(Coordination Function,CF)来控制。协议规定有四种不同的协调功能,分别是DCF(Distributed CF,分布式协调功能)、基于DCF之上的PCF(Point CF)、HCF(Hybrid CF,混合型协调功能)以及用于Mesh网络的MCF(Mesh CF)。 由于无线网络是共享介质,所以协调功能的目的就是用于控制各个无线网络设备使用无线媒介的时机以避免冲突发生。形象点说,这就好比在一个会议室里,所有人都可以发言,但如果多个人同时发言又不知道谁和谁在说话。所以,每个打算发言的人都需要检查当前发言的情况。在这里不详细介绍802.11中CF相关的内容。
收藏 回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表