802.3以太网帧格式和802.11冲突检测机制的区别

802.11协议精读3:CSMA/CD与CSMA/CA - 博客频道 - CSDN.NET
浮名只是身外物,不着方寸也风流。
分类:无线通信理论网络工程|路由协议|CISCO移动通信|无线网络|NS2|NS3|IT++
在前一份文档中,我们详细记录了有关802.11中DCF模式以及其核心CSMA/CA的一些内容与细节。对比无线网络,有线网络的集线器和中继器设计中,采用了CSMA/CD技术。该技术早期是用来解决有线网络中,共享介质下的多路网络接入问题,该技术仍然在当今的10M/100M半双工网络中使用。在更高的带宽情况下,比如千M网络,则采用全双工技术以代替CSMA/CD。
本文主旨是希望能理清CSMA/CD和CSMA/CA的关系与区别。接下来,我们首先会说明最基础的CSMA协议的工作机制,然后我们说明CSMA/CD的工作机制,最后,对比前一份文档,我们分析CSMA/CD和CSMA/CA的区别。
注:本文中有关有线网络的理论很多参考自《Ethernet:The Definitive Guide》。
CSMA的全称是Carrier Sense Multiple Access,在笔者的理解中,其更趋向于一种理论研究的随机接入协议,或者说,基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种:
1-persistentes CSMA(1坚持-CSMA)
0-persistentes CSMA(0坚持-CSMA)
p-persistentes CSMA(p坚持-CSMA)
从历史上而言,CSMA实际上是源于aloha协议,为了理清协议的设计思路的脉络关系,我们还是有必要对原始的aloha协议做一个说明。Aloha是为无线工作环境设计的一个协议,其最初的思想很简单:“一个aloha节点只要有数据的话,该节点就可以立即发送。当该节点数据发送完之后,其需要等待接收方反馈的ACK。若成功接收到ACK之后,那么这一次传输成功。如果没有收到ACK的话,那么这一次传输失败。该aloha节点会认为网络中还存在另外一个aloha节点也在发送数据,所以造成接收方发生了冲突。最后这些冲突的节点会随机选择一个时间进行回退(backoff),以避免下一次冲突。若冲突节点回退完成,其才可以重新进行发送&。
实际上从初始的aloha协议中,我们就可以看到现在CSMA/CA的影子,网络协议的设计都是符合KISS原则的(Keep It Simple and Stupid),所以实际中我们所应用到的网络协议,其思想都不会是特别复杂。基于aloha协议的思想,CSMA协议对其最大的改进即是引入了LBT机制(Listen Before Talk),在CSMA中的CS(Carrier Sense)即是指Listen监听机制。在LBT机制下CSMA的思想就是:“CSMA节点在每一次发送之前先监听信道是否是空闲的,如果信道不是空闲的话,那么就不发送数据,等待一会再进行尝试。只有确保是空闲的情况下,才可以发送数据,从而避免打断其他节点正在进行的传输过程&。
具体CSMA的工作机制关联着我们之前所叙述的三种CSMA模式,以下我们分别进行叙述:
1-persistentes CSMA:“节点需要持续监听信道,一旦节点发现信道空闲后,则立刻发送数据。”。
0-persistentes CSMA:“节点不连续监听信道,若该时刻节点监听信道为busy,那么等待一段时间后,再次进行监听。若节点该时刻监听信道为空闲,则立刻发送数据。”
p-persistentes CSMA:“节点需要持续监听信道,一旦发现信道空闲后,节点以p的概率立刻发送数据,以1-p的概率不发送数据。若节点该时刻不发送数据,那么等待一段时间后,再次进行监听,并以p概率再次发送”。(注:这里所述的p概率可以理解成抛骰子赌大小,如果抛大,那么就发送,反之不发送。其中抛大的概率就是p,而抛小的概率就是1-p)
在以上三种CSMA机制中,若节点传输发送冲突,则类似aloha的基本算法,随机等待一个时间之后,再次进行重试。以上,我们分析了CSMA的基本工作模式,或者称之为CSMA的基本思想,接下来,我们具体讨论有线网络所应用到的CSMA/CD协议。
CSMA/CD的全称是Carrier Sense Multiple Access with Collision Detection,即基于冲突检测的载波监听多路访问技术。CSMA/CD也是最初802.3中的核心,应用在10M/100M的半双工有线网络中,目前CSMA/CD的应用场景少了很多,大部分都直接基于全双工工作。
CSMA/CD从思想上应该是源自于1-坚持CSMA,即1-persistentes CSMA。在其基础上,加入了CD(Collision Detection)的机制。冲突检测,即CD的机制主要是用来发现冲突,并解决冲突的。我们下面描述CSMA/CD的具体工作机制:
“节点发送数据之前需要持续监听信道,一旦节点发现信道空闲,则立刻发送数据。在发送数据的同时,节点持续监听信道,&探测& 是否有别的节点也在该时刻发送数据。
若传输过程中没有检测到别的节点的传输,那么成功传输。在成功传输后,节点需要等待帧间间隔IFG(interframe gap)时间后,可以进行下一次传输。
若在传输过程中,探测到别的节点也在传输,那么则检测到冲突。发生冲突后,节点立刻停止当前的传输,并且发送特定的干扰序列(JAM序列),用以加强该次冲突(用以保证其余所有节点都检测到该次冲突),在JAM序列发送完之后,节点随机选择一个时间倒数进行backoff。当backoff完成之后,节点可以尝试再次重传”。
在上述的描述中,我们可以发现,CSMA/CD和1-坚持CSMA是非常相近的,与传统的aloha相比,CSMA/CD不仅仅添加了LBT的机制,还引入了冲突检测(Collision Detection)机制,用以在传输中立刻发现冲突,而不是依靠ACK的反馈来判断是否有冲突发生,从而提高网络效率。在CSMA中,我们还需要描述一些细节内容:
载波检测(CS:carrier sense):在有线网络中,载波检测实际上即是接收信道上的信息,并加以解析。用这种方式判断共享信道上有没有节点正在传输信息,从而达到监听(listen)的作用。其中载波检测这个名字实际上是从AM/FM接收中来的,即载波就是携带调制信息的模拟信号,从而载波监听就是对是不是有AM/FM信号进行侦听。冲突检测(CD:collision detection):在一些理论中,介绍冲突检测为“发送的同时,接收同一个信道上的数据,并比较发送数据Tx与接收数据Rx”。若Tx=Rx,则没有冲突发生,若Tx≠Rx,则识别到一个冲突。在一些工程介绍中,介绍检测冲突的方法是“介质依赖法”。连接段介质(实际上是电缆)拥有传输和接受数据的独立路径(双绞线中有单独的发送和接受回路),冲突检测是在同一个接收段收发器中,借助同时发生在传输和接收数据路径上的活动来完成的。在同轴电缆介质上,收发器通过检测同轴电缆的DC(即直流信号)信号等级来检测冲突。当两个或者多个基站同时传输时,同轴上的平均DC电压可达到触发同轴收发器中的冲突检测电压等级。同轴收发器连续检测同轴电缆上的平均电压等级,若平均电压等级表明,有多个基站同时传输内容后,其会发送JAM信号到以太网接口处。发送JAM信号的这个过程比冲突检测时间较长,多出的时间包含了根据10Mbps以太网上总信号延迟算出的时间(即包含了JAM信号的传输时间)。时隙与捕获效应:在有线网络中,捕获效应被定义为1个时隙长度内没有冲突发生,同时时隙被定义为512bit在10Mbps或100Mbps网络的发送时间。在有线网络中选择为512bit作为一个时隙的参考值,是考量了为发送信号到对端的最大往返时间。该最大往返时间包含了电磁波通过物理层的往返时间以及传输JAM信号所花费的时间。(JAM信号是加强冲突的一个通知信号)。若节点已捕获信道,即已发送512bit,那么对方不一定会来打断你当前的传输,1.即确保对方能检测到你,2.并且反馈的JAM信号也能通知到你。同时,若从电磁波传输的角度而言,512bit在10M中传输的时间换算成电磁波能够传播的距离大约是2800米,512bit在100M中传输的时间换算成电磁波传播的距离大约是200米,对比有线网络的双绞线长度(大约100米)而言,这些参数还是可以接受的。在1000Mbps网络以及其上,都是默认物理层采用全双工模式的,若还是采用CSMA/CD的模式,那么这里的时隙长度会被定义为512byte的长度,不过目前这个可能是学术上的用法,而非协议的定稿。重传机制(Backoff与BEB机制):若节点检测到冲突发生在前512个字节,即一个时隙内,那么节点首先进行backoff,然后进行重传。这里backoff是采用BEB(二进制指数回退算法),即在一个随机窗口内,选择一个随机数并乘以时隙(time slot)进行回退。在第0~10次回退过程中,每回退一次,随机窗口放大一倍,在第11次到第16次过程中,依然进行回退,并尝试重新发送数据包,但是不放大窗口大小,第17次若失败,则丢包。按照一般情况下,冲突不会发生在512字节以后的部分,即已经发生了捕获效应,即节点已经捕获到了信道。不过比如时间不同步这样的一些情况出现,导致冲突发生在512字节之后,貌似是不进行重传,直接丢包的。
CSMA/CD与CSMA/CA
在综述完CSMA/CD后,对比我们前一次叙述的CSMA/CA,我们总结这两者之间的联系和区别。
联系:CSMA/CD与CSMA/CA机制都从属于CSMA的思路,其核心就是LBT机制,换言之,两个在接入信道之前都需要进行监听。当发现信道空闲后,其才可以进行接入。
在思想上:
CSMA/CD是源自于1-坚持CSMA,而CSMA/CA是源自于p-坚持CSMA。即CSMA/CD是持续监听信道,一旦发现信道空闲,则立刻传输。CSMA/CA是边进行backoff回退过程边进行监听,若信道空闲则进行backoff,否则挂起随机倒数计数器。只有当backoff counter(即随机倒数计数器)回退至0时,其才可发送数据。
在冲突检测上:
CSMA/CD中是采用冲突检测+JAM机制,即边发送边监听实时信道状态,可以在传输过程中,实时判断信道中是否有冲突发生,一旦发现了冲突,则发送JAM信号以加强冲突,其余节点也因识别到该JAM信号,从而停止当前传输。若整个过程中,节点都没有发现冲突以及JAM反馈,那么该次传输成功。CSMA/CA是源自于aloha的ACK反馈机制,若接收到对方反馈的ACK后,那么这一次传输成功,否则失败。
在监听机制上:
由于CSMA/CD是有线网络,故其监听是直接解调有线介质上的信息,若没有信息,则信道空闲,若存在信息,则信道繁忙。在CSMA/CA中,不仅引入了物理载波监听与虚拟载波监听这两种技术,同时在物理载波监听中,还分为能量检测(Energy Detection)和载波感知(Carrier sense)。同时该载波感知所指是利用无线帧物理层头部中的固定序列(即preamble),利用已知序列和其做相关运算(自相关或者互相关运算)进行识别。详细的一些内容可以参考上一篇有关DCF和CSMA/CA的文章。
在回退(backoff)机制上:
在CSMA/CD中,回退只有在冲突之后才会发生,节点选择选择一个随机时间进行回退,该随机事件具体是时隙乘以回退窗口内的一个随机数。其中为了避免多次冲突的问题,在每一次冲突后,节点的回退窗口也会执行BEB算法,即将回退窗口进行翻倍。在CSMA/CD中,回退一共可以进行16次,其中,第1~9次存在会对回退窗口进行翻倍,在第10~16次中,窗口大小不变(窗口最大1024),再次重试。第16次若失败,则进行丢包处理。在CSMA/CA中,节点的每一次传输之前都需要进行backoff过程。在CSMA/CA的backoff过程中,节点会在每一个slot中对信道进行监听(这里包含物理载波监听和虚拟载波监听),若信道监听为空闲,那么进行backoff,即随机倒数计数器减1,若信道监听为信道忙,则挂起该计数器,只有当该计数值为0时,节点才可以发送数据。在CSMA/CA中,若发生冲突后,对竞争窗口(Contention Window)进行BEB操作,在1~6次中,窗口大小翻倍,第6次时,窗口大小不变(窗口最大也是1024),再次重试,若第7次传输失败,则进行丢包处理。
在时隙的定义上:
在CSMA/CD中,时隙被定义在一个固定数据片大小在固定速率的媒介上传输的时间,比如在10M/100M网络中,时隙为512位在10M/100M网络下对应传输的延迟。在CSMA/CA中,时隙中包含三个方面的内容,即传播延迟,信道检测(CCA)以及收发天线转换。时隙时间具体与其对应的802.11协议版本有关,比如802.11b中,时隙即是20us。
在捕获效应的定义上:
在CSMA/CD中,捕获效应被定义为节点成功传输1个时隙的数据,从而节点能够确保自己已经捕获了信道,其余节点也都已感知到了这点,从而确保不会有冲突发生。在CSMA/CA中,捕获效应是指由于信号功率的不同,比如有两个节点同时向接收方发送数据,其中一者信号强度大(即SNR大),一者信号强度小(即SNR小)。在这种情况下,若信号较好的SNR能够达到解调其数据所需最低的SNR阈值的话,那么其是可以解调,即这次传输可以是成功的。直观的理解,我们可以认为一个大嗓门和一个小嗓门同时说话,那么我们是可以听清楚大嗓门的。
以上是总结的一些笔者理解CSMA/CA和CSMA/CD的区别,其他还存在的一些区别,比如在802.11DCF模式中所采用的RTS/CTS机制,在有线网中就不存在或者对应存在区别,在此就不再一一赘述了。
注:在上述的讨论中,有线网络的部分知识主要是源于《Ethernet:The Definitive Guide》,而无线网络的部分主要来源于笔者的研究经历,在无线网络中,也有想要实现类似于有线网络的CSMA/CN的工作机制,笔者的一部分工作也是来源于此,有兴趣可以自行阅读。以上讨论中,如果存在错误,还请见谅。
fzxy002763
排名:第1847名
大部分文章为个人做为笔记用途,如有错误,还请见谅。 802.11讨论群:
(40)(27)(19)(30)(26)(58)(16)(42)(99)(18)(15)(50)(25)(2)(1)4931人阅读
hardware(24)
自协商基本原理&
  自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。
  自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。&
  自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速连接脉冲),协商信息封装在这些FLP序列中。FLT中包含有时钟/数字序列,将这些数据从中提取出来就可以得到对端设备支持的工作模式,以及一些用于协商握手机制的其他信息。当一个设备不能对FLP作出有效反应,而仅返回一个NLP(普通连接脉冲)时,它被作为一个10BASE-T兼容设备。 快速链路脉冲FLP和普通链路脉冲NLP都仅使用于非屏蔽双绞线上,而不能应用在光纤媒体。&
  自动协商的内容主要包括双工模式、运行速率、流控等内容,一旦协商通过,链路两端的设备就锁定在这样一种运行模式下。1000M以太网也支持自协商,在此从略。&
  电口和光口自协商主要区别是在OSI 中它们所处的位置不同。对于电口来说,协商发生在链路信号传输之前;对于光口来说, 自协商机制与PCS在同一层, 这意味着光口的协商必须先建立链路同步以后才可以进行协商。
 协商过程
  & 如果两端都支持自协商,则都会接收到对方的FLP,并且把FLP中的信息解码出来。得到对方的连接能力。并且把对端的自协商能力值记录在自协商对端能力寄存器中(Auto-Negotiation Link Partner Ability Register , PHY标准寄存器地址5 )。同时把状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)置成1。在自协商未完成的情况下,这个bit一直为0。
然后各自根据自己和对方的最大连接能力,选择最好的连接方式Link。比如,如果双方都即支持10M也支持100M,则速率按照100M连接;双方都即支持全双工也支持半双工,则按照全双工连接。
一定连接建立后,FLP就停止发送。直到链路中断,或者得到自协商Restart命令时,才会再次发送FLP。
为了保证在对端不能支持自协商的情况下也能连接,引入了被称为并行检测(Parallel Detection)的机制。在一端打开自协商,另一端关闭自协商的情况下,连接的建立就依靠并行检测功能实现。
并行检测机制是这样的:在具有自协商能力的设备端口上,如果接收不到FLP,则检测是否有10M链路的特征信号或100M链路的特征信号。
如果设备是10M设备,不支持自协商,则在链路上发送普通连接脉冲(Normal Link Pulse)简称NLP。NLP仅仅表示设备在位,不包含其它的额外信息。NLP脉冲如图:
如果是100M设备,不支持自协商,则在没有数据的情况下,在链路上一直发送4B/5B编码的Idle符号。
并行检测机制如果检测到NLP,则知道对方支持10M速率;如果检测到4B/5B编码的Idle符号,则知道对方支持100M速率。但是对方是否支持全双工、是否支持流控帧这些信息是无法得到的。因此在这种情况下,认为对方只支持半双工,不支持全双工,且不支持流控帧。
基于以上原理,在对端不打开自协商时,打开自协商的一方只能协商成半双工模式。
802.3协议规定,通过并行检测建立连接后,PHY的状态寄存器(PHY标准寄存器地址1)的自协商完成bit(bit5)依然要置位成1,尽管链路上并非使用了真正的自协商操作。同时规定在自协商完成bit为1的情况下,本地自协商能力寄存器(PHY标准寄存器地址4)和对端自协商能力寄存器(PHY标准寄存器地址5)是有意义的。所以,要把寄存器5中的数据更新。如果建立的连接为10M,则寄存器5的10M能力bit(bit5)置1,其它bit置0,表示对端只能支持10M半双工;如果建立的连接为100M,则寄存器5的100M能力bit(bit7)置1,其它bit置0,表示对端只能支持100M半双工。
千兆光口自协商
千兆光口可以工作在强制和自协商两种模式。802.3规范中千兆光口只支持1000M速率,支持全双工(Full)和半双工(Half)两种双工模式。
自协商和强制最根本的区别就是两者再建立物理链路时发送的码流不同,自协商模式发送的是/C/码,也就是配置(Configuration)码流,而强制模式发送的是/I/码,也就是idle码流。
千兆光口自协商过程:
1.两端都设置为自协商模式
双方互相发送/C/码流,如果连续接收到3个相同的/C/码且接收到的码流和本端工作方式相匹配,则返回给对方一个带有Ack应答的/C/码,对端接收到Ack信息后,认为两者可以互通,设置端口为UP状态
2.一端设置为自协商,一端设置为强制
自协商端发送/C/码流,强制端发送/I/码流,强制端无法给对端提供本端的协商信息,也无法给对端返回Ack应答,故自协商端DOWN。但是强制端本身可以识别/C/码,认为对端是与自己相匹配的端口,所以直接设置本端端口为UP状态
3.两端均设置为强制模式
双方互相发送/I/码流,一端接收到/I/码流后,认为对端是与自己相匹配的端口,直接设置本端端口为UP状态
快速链接脉冲(FLPs)和普通链接脉冲(NLPs)
自动协商的执行是通过FLPs来实现的。NLPs是周期为16ms左右的脉冲,脉冲宽度为100ns(10base-T)、10ns(100base-TX)。FLPs类似于NLPs,它是连续的17~33个的脉冲用来传输16bit的连接码(link code word)以进行自动协商,码宽为125us,在125us码宽中间有脉冲为1,无脉冲为0。link code word并不是以太网通信结点的有效数据,只被PHY接口模块识别。
& 自协商基本页信息
在链路初始化的时候,自协商协议向对端发送16Bit的报文,也就是所谓的脉冲信号,然后从对端接收类似的报文,这个16Bit的报文就是我们所说的基本页,不同的设备,在针对基本页做字位信息的时候,那就能识别它是属于哪一个情况.。
bit0~4:指示自协商数据帧,对于802.3标准,设置为'10000';
bit5~12:指示结点(端口)信息性能域;
&bit5~9:定义端口可连接类型,按照优先级从高到低如下(SETBIT有效):
& bit8:100base-TX全双工;bit9:100base-T4;bit7:100base-TX半双工;bit6:10base-T全双工;bit5:10base-T半双工;
&bit10:指示流量控制信息:0:流控无效;1:流控有效,决定了端口后续通信是否有PAUSE帧;
&bit11:支持全双工连接时的非对称暂停机制;
&bit12:扩展下一页信息页,仅用于千兆端口;
bit13:远程故障指示;
bit14:握手信号Ack,当收到三个连续的相同FLP后,此位置1;
bit15:指示是否有下一页基本页信息。下一页信息用来传输在自协商过程中已连接节点的额外信息。
PAUSE帧(流量控制)
为什么要有流量控制呢?现在的网络有10M和100M的以太,那么当10m以太和100m以太共存的时候,那就有可能会产生这种线路速率不匹配的情况,这个时候,当通过交换机一个端口的流量过大,超出了它的处理能力时,就会发生端口拥塞,拥塞的时候那么丢包、重传、时延等都会随之而来,流量控制的作用时防止在出现拥塞的情况下丢帧。
  这里的流量控制采用的是最常用的一种方式—PAUSE帧。
  在半双工方式下,流量控制是通过后退压力(backpressure)技术实现的,模拟产生碰撞,使得信息源降低发送速度。
  在全双工方式下流控一般遵循IEEE 802.3X标准。采用一64字节的PAUSE的帧来控制,使用一个保留的组播地址:01-80-C2-00-00-01发送给正在发送的站,发送站接到该帧后,就会暂停或停止发送。这个地址的数据不会被网桥和交换机所转发,所以PAUSE帧不会产生附加信息量。
  PAUSE功能应用场合:
&  -&一对终端(简单的两点网络)
&  -&一个交换机和一个终端
  &-&交换机和交换机之间的链路
  PAUSE功能的增加主要是为了防止瞬时流量的过载导致的缓冲区溢出而造成以太网帧的丢弃。
  PAUSE功能不能解决下列问题:
&  -&稳定状态的网络拥塞
&  -&端到端流量控制
&  -&比简单“停—启”更复杂的机制
 以太网端口电口工作模式简单介绍
  1.以太网口的两端工作模式(10M半双工、10M全双工、100M半双工、100M全双工、自协商)必须设置一致。
  2.如果一端是固定模式(无论是10M、100M),另外一端是自协商模式,即便能够协商成功,自协商的那一端也将只能工作在半双工模式。&
  3.如果一端工作在全双工模式,另外一端工作在半双工模式(包括自协商出来的半双工,也一样处理),Ping是没有问题的,流量小的时候也没有任何问题,流量达到约15%以上时,就会出现冲突、错包,最终影响了工作性能!&&
4.对于两端工作模式都是自协商,最后协商成的结果是“两端都支持的工作模式中优先级最高的那一类”。&
5. 如果A端自协商,B端设置为100M全双工,A协商为100M半双工后,再强制将B改为10M全双工,A端也会马上向下协商到10M半双工;如果A端自协商,B端设置为10M全双工,A协商为10M半双工后,再强制将B改为100M全双工,会出现协商不成功,连接不上!这个时候,如果插拔一下网线,又会重新协商在100M半双工。&&
  以太网口的两端工作模式必须设置一致。 否则,就会出现流量一大速度变慢的问题。大多数设备以太网口的默认的出厂设置是自协商。如果两端都是自协商,协商成功了,但网络不通,此时请检查网线是否支持100M。如果两端都是自协商,协商成功并且运行在全双工,在没有Link
Down的前提下,将其中一端“立刻”设置为固定的“10M/100M全双工”,两端仍然能够工作在全双工。但是,万一将来插拔网线或者其他原因出现重新Link,就会重新协商为“一端全双工&一端半双工”的不稳定连接。因此,这种情况一定要避免!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:727752次
积分:7871
积分:7871
排名:第1849名
原创:130篇
转载:95篇
评论:251条
阅读:13393
阅读:32665
阅读:70744
(1)(1)(1)(3)(2)(1)(1)(1)(2)(2)(3)(2)(1)(1)(4)(2)(1)(1)(4)(5)(2)(6)(2)(7)(7)(3)(10)(1)(2)(7)(3)(1)(7)(13)(13)(6)(7)(9)(10)(13)(11)(12)(7)(8)(17)(2)1. 访问机制
CSMA/CA:& Carrier Sense Multiple Access with Collision Avoidance WiFi采用带冲突避免的载波监听多路访问机制来控制对传输媒介的访问
不同于以太网,WiFi没有明确的冲突碰撞检测机制
WiFi MAC层指定了如下规则来检测冲突碰撞
- 使用介质前,speaker必须指示将使用多久,通知其他潜在speakers在使用介质所需要等待的时间
- 直到前一个speaker指示的时间后,其他speaker才能使用介质
- 当收到肯定确认后,speaker才认为数据成功传输
- If two participants happen to start speaking at the same time, they are unaware they are speaking over each other.& & The speakers determine they are speaking over each other because they do not receive confirmation that their voices were heard.
- 当发送的数据没有收到肯定确认时,speaker会等待一个随机时间然后再次使用介质发送没有成功的数据
当没有收到肯定确认时,WiFi MAC层认为检测到了碰撞
2. MAC子层功能
MAC子层包括DCF和PCF
DCF: Distributed Coordination Function
PCF: Point Coordination Function
2.1 载波监听(Carrier Sense)
STA有两种方法来判断当前介质是否空闲
- 检查PHY层,是否有carrier存在 - 使用虚拟carrier-sense功能,NAV(Network Allocation Vector )
NAV是MAC层提供的一种定时器,保存了其他STA使用介质的持续时间
其他STA发送的数据中带有的Duration大于所保存的时间时,STA就更新自己的NAV
当NAV为0并且PHY层指示当前介质可用时,STA才能发送数据
DCF是基于CSMA/CA的接入方法,尽可能避免冲突,可以自动高效地共享介质
DCF提供基本模式和RTS/CTS模式两种介质访问方式
利用竞争窗口的二进制指数回退机制协调多个STA对共享链路的访问,避免出现因争抢介质而无法通信的情况
其核心思想是利用二进制指数回退机制减轻数据分组的碰撞以及实现发生碰撞后对分组的有限重传控制
STA发送数据帧时,首先检测介质的状态
如果介质空闲且持续一个DIFS时间(DCF InterFrame Space)后
- 在基本模式下立即发送数据帧
- 在RTS/CTS模式下,发送RTS帧
并同时检测有没有发生分组碰撞
如果发生碰撞,STA随机在[0,Wi]之间均匀选取一个值Random()
&OWi被称作竞争窗口,其大小依赖于数据分组重新传输次数
CWmin &CW&CWmax
并计算出backoff timer(=Random() * slot time)
随后,当STA探测到介质空闲时间等于一个slot time时,计数器减1
而当检测到介质忙时,计数器值保持不变
并在介质空闲时间等于DIFS时,重新激活延时计数器且STA继续监测介质
直到计数器值减到0时STA才发送MAC帧
另外,为了避免某STA长时间占用信道,STA在两次连续的数据帧发送之间也必须进行随机延迟。
2.3 应答帧
某些帧需要接收STA回应一个应答帧,称为ACK帧
ACK帧的传输不需要等待backoff timer
而是等待SIFS(Short Interframe Space)时间
SIFS通常比DIFS少2个slot time
2.4 隐藏节点问题和RTS/CTS
RTS: Request to send
CTS: Clear to send
由于信号的缘故(距离太远),某些STA之间无法直接通信,无法感知彼此的存在,
若此时同时给处于两者之间的STA发送帧,导致中间STA佷尴尬
因为只有中间STA知道发生了冲突
此时,需要使用RTS/CTS来解决该问题
STA发送RTS帧,预约介质的使用权和要求接收STA保持沉默
接收STA以CTS应答,CTS帧要求附近的STA保持沉默直到过程结束
然后开始帧的传输过程
RTS/CTS通常用在高用量的环境下以及传输竞争比较显著的场合
2.5 帧分片(Frame Fragmentation)
帧分片的作用在于提高无线介质中传输的可靠性
将一个完整帧分为几个更小的帧来分别传输,每个分片帧都需要ACK
这样当某个分片帧出现错误时,只需要重新传输该帧即可
然而这也可能增加MAC层过载问题(Overhead)
- 帧分片只发生在单播帧中
- 每个分片帧具有相同的帧序列号和递增的帧编号
PCF作为DCF的补充,是一种可选的介质访问机制
提供了不必通过竞争即可使用介质的服务,为了满足实时业务需求
用于Infrastructure模式网络架构中,由AP进行协调
PCF以周期的形式进行帧的传输
每个周期包括一个无竞争阶段和一个竞争阶段
- 无竞争阶段(CFP: Contention-Free Period)
- 竞争阶段(CP: Contention Period)
CFP阶段传输实时业务,PCF起作用
CP阶段传输非实时业务,DCF起作用
~~~好像使用较少,后续再补充
3. MAC帧格式
MAC帧基本格式如下图所示:
3.1& Frame Control字段
- Protocol Version: 目前为0
- Type: 帧类别,有下面三种,每个类别又有一些子类别(见Subtype)
00: 管理帧(Management Frame)
01: 控制帧(Control Frame)
10: 数据帧(Data Frame)
11: 保留未使用
- Subtype: 帧子类别,与Type共同来决定一个帧的类型,详细如下表所示
- To DS/From DS:& 指示帧目的地是否为DS(分布式系统),可以简单地理解为是否【发往/来自】AP
- More fragments: 指示是否还有分片(除去最后一个分片)
- Retry: 指示当前帧是否为重传帧,接收方收到后会删掉重复帧
- Power management: 指示STA的电源管理模式, 1表示STA在数据交换完成后进入省电(Power-Save)模式,对于AP恒为0
- More data: 指示AP为进入省电模式的STA进行帧缓存(来自DS)
- WEP: 指示frame body是否使用WEP加密
- Order: 指示将进行严格次序(StrictlyOrdered)传送
3.2 其他字段
- Duration/ID: 可以用在下面三个场景中
@1 Duration,第15位置0,用于设定NAV,数值代表预计使用介质的微秒数
@2 在CFP帧中,第14位置0,第15位置1,其他值为0,字段值为32768,让其他没有收到Beacon帧的STA公告无竞争周期
@3 在PS-Poll(省电-轮询)帧中,第14、15位同时置1,用于从省电模式醒来的STA发送AID(关联标识符)以取得在AP中的缓存帧
- Address : 有以下几种类型,由帧类型决定使用哪几个地址字段,通常有三个, SA、DA和BSSID
BSSID, 基本服务集标识符
DA, 目的地址
SA, 源地址
RA, 接收端地址
TA, 发送端地址
- Sequence Control: 包含两个子字段, 4位的分片编号(Fragment Number)和12位的顺序编号(Sequence Number)
顺序编号4096的模数,从0开始,每处理一个上层封包就加1
若上层封包分片处理,所有帧分片采用相同顺序编号
对于重传帧,顺序编号不变
- Frame Body: 帧主体也称数据字段(Data field),用于传递上层有效载荷(Payload),可为0
- FCS: 帧校验序列,采用循环冗余校验(CRC)码,计算范围包括MAC头中所有字段及帧主体
3.3 帧主体数据
不同于以太网,802.11的Frame Body以802.2的逻辑链路控制(LLC)来封装不同类型的网络协议
有两种封装方式: RFC H
下图是802.11里的IP封装
阅读(...) 评论()}

我要回帖

更多关于 以太网和802.3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信