返回顶部

介质访问控制子层-Medium Access Control Sublayer:多路访问协议、以太网、无线局域网

第四章 介质访问控制子层-Medium Access Control Sub-layer

4.1介质访问控制子层概述

MAC子层没有出现在之前提到的OSI或TCP/IP架构之中,这也是为什么这一层被称作了子层(sub-layer)。事实上,MAC子层位于数据链路层与物理层之间,处于数据链路层的底部。(MAC还是属于链路层的)

同时这一章也存在一些十分鲜明的特点,导致我们将不再沿用上一章的介绍顺序。这一章讨论的重点将会是广播网络极其协议。在广播网络中,由于信道是共享的,存在一些复杂的协议来决定哪一台机器可以接入链路进行下一次传输。我们将依次介绍5种经典多路访问协议,以及重点介绍两个实际例子(无线局域网的MAC层与以太网的MAC层)。

4.2信道分配问题

  • 1.静态信道分配:把信道容量拆分给多个用户使用。缺点:不适应突发性的流量变化。
  • 2.动态信道分配:是当前的主要方法,一共有5个预先假设(流量独立、单信道、冲突可观察、时间连续或分槽、载波侦听或不听)。

4.3多路访问协议(5)

广播信道有时也被成为多路访问信道或者随机访问信道
各位读者请注意,由于这部分内容相似度大容易记混,常常是考试的重点

4.3.1ALOHA协议

叫做ALOHA协议,是因为这一系列的协议最早源于一个连接夏威夷各个岛屿的尝试。下文将介绍两种ALOHA协议。

原理 优劣
纯ALOHA 用户只要有需求,就会直接发送数据
如果检测到了冲突,则等待随机时间后再试
在低负荷情况下高效、低延迟
低负荷情况下高效、低延迟
分槽ALOHA(Slotted Aloha) 按照时间,分成离散的间隔(就像时间表一样)
当检测到发送需求后,会等待到下一个时间槽发送
整体上更加高效

下图是两种ALOHA协议的吞吐量对比

image-20201122115924349

4.3.2 载波侦听多路访问协议(Carrier Sense Multiple Access)

CSMA协议基于ALOHA协议改进而来,最主要的区别在于,CSMA会对信道是否占用进行监听(即所谓的载波监听)。侦听是很小的一个变化,但是却对信道吞吐量产生了极大的改变。因为,假如发送数据的站可以预先知道信道正在被占用,就可以主动采取退避的方式,保证正在发送的数据不被干扰。但尽管如此,使用CSMA的信道上仍然会产生冲突(考虑两个站同时监听信道发现空闲,又同时发送数据的情况),因此也有一套应对冲突的规则。

下图:CSMA系列的吞吐效率要好于ALOHA

image-20201122120352083

坚持与非坚持CSMA

所谓坚持与非坚持,指的是根据对信道占用情况下的处理,分成以下三种。

1-Persistent CSMA(1-坚持CSMA) 发现信道空闲时,传输概率位1 如果信道忙,那么在信道空闲之后立刻(p=1)发送
Non-persistent CSMA(非坚持CSMA) 信道空闲,立刻发送数据 如果信道忙,等待随机时间后再试
p-persistent CSMA(p-坚持CSMA)(适用于分槽的信道) 若信道空闲,有存在p的概率立刻发送数据。或有(1-p)的概率下个时间槽再试 如果信道忙,等待下一个时间槽再试

带冲突检测的CSMA:CSMA/CD(Conflict Detect )

CSMACD的特点在于加入了检测冲突的功能(对于之前的协议来说,检测信道是否占用与发送数据并没有同时进行。可能会出现这样的情况:某条数据在刚刚开始发送就被另一个数据站的数据干扰了,尽管数据已经无效,必须重新发送,但这个站只有等到发送结束才能察觉到这一点。这种情况下,数据站浪费了很多时间发送一条坏帧)。而由于可以进行冲突检测,CSMACD可以及时停止发送消息,减少浪费。

CSMA/CD:每个站快速检测到发生冲突后立刻停止传输帧,等待随机延迟后再发试。

CSMACD是以太网的基础。它解决了两个用户同时开始传输,但距离太远(或者因为数据帧太短),冲突无法立刻检测的问题。
请各位牢记CSMA/CD的使用场合以及特点,因为之后还会有相似的协议出现

4.3.3 无冲突协议

下面介绍两种无冲突协议。之所以称作无冲突,是因为这两种协议从规则上就避免了竞争期内冲突的发生。然而,这样的协议最终并没有使用于主流的系统内。

位图协议bitmap

image-20201122152442147

假如链路中一共存在N个站,那么N位图协议就会构造一个含有N个槽的位图(每个槽1位)。位图会在各个站间传递,有发送数据意愿的站会将自己的槽位置1,这样N个槽都经过后,每个站都知道了哪些站要发送数据,并且知道了他们间的发送顺序(按照位图),这样永远都不会有冲突。然而,假如一个站在自己对应的槽位经过后才准备发送数据,那么它就必须等待新的位图到来。地位的平均等待周期为N/2+N;而高位的平均周期是N/2。因此,在低负载情况下,其高位的效率可能高于低位。

令牌环-token ring

image-20201122152342954
每个站收到令牌后开始传递消息,传输完毕后把令牌传给下一位,如此反复。当然,真实情况下并没有一个物理环来决定令牌归属和传递。这种协议需要由一条令牌总线控制。

相比起上一种位图协议来说,令牌环的设计更加公平,每个站使用信道的机会是相同的

4.3.4 有限竞争协议

4.3.5 无线局域网协议

在这一部分中,我们将先讨论无线局域网遇到的两个问题:隐藏终端和暴露终端问题;在之后的会再次介绍802.11的其它协议。请读者考虑下图的问题:

image-20201122215846418

图中,A、B、C、D是四个相距较远的站:临近节点之间的距离恰好是无线局域网的广播范围。四个站之间可能会相互通信,占用信道。

image-20201122220039014
我们考虑第一种情况,A站和C站同时开始发送向B信号,由于A和C距离较远,他们彼此并不知道对方的存在,因此发现信道空闲之后,都开始发送信息。但是当他们的信号到达B点,会在B处产生冲突,导致此次发送失败。上图中的这种问题被称作隐藏终端问题。
image-20201122220434031
在第二种情况下,当B站想要向A发送信号,而C站希望向D发送信号。根据无线电传输范围我们可知,这两次传输并不会彼此干扰。然而当C首先发送信号后,B站会检测到信道占用不能发送消息,尽管实际上并不受影响。这种问题称为暴露终端问题。

4.4 以太网

在这一部分中,我们将开始讨论一个经典的应用--802.3以太网,并研究之前讨论的多路访问协议是如何应用于以太网的框架之下的。

4.4.1 经典以太网MAC子层协议

以太网帧格式

image-20201122223801298

观察帧头格式,我们需要重点关注其中的填充(pad)字段。如果帧的数据部分少于46字节,MAC层则会使用pad字段填充整个帧,使其到达最小长度。而之所以使用填充字段并设定一个最小长度,是为了避免这样的情况:

image-20201122223039641

如上图:当一个短帧还没有到达电缆的发送方,这个该帧的传输就已经结束。同时在电缆的远端,该帧可能会与另外一帧发生冲突。问题在于,由于发送方已经顺利的发送完成了数据,没有检测到冲突,可能会产生已经发送成功这样的错误结论。不论是在CSMA/CD还是以太网中,接收方都不再提供确认,因此对于这两个算法来说,在数据包发送时就侦f听到碰撞的发生是十分必要的。假如碰撞发生在了上图中的这种情况中,发送端没有办法得知数据是否完整的发送,只能留给CRC检测和高层的一些协议进行修复。

顺便说句题外话,之所以以太网下不提供确认的操作,是因为以太网的传输介质(有线电缆、光纤)相对稳定,出错率比较低。因此提供确认是有些多余的。但是对于无线信道来说(马上要学习的第二个重要应用),还是需要提供确认。

二进制指数后退的CSMA/CD

之前讲过,以太网采用了略加改进的CSMA/CD算法。这种算法被称作二进制指数后退的CSMA/CD。区别在于,二进制指数后退的CSMA/CD规定了在冲突发生后每次后退的时间范围,呈2的指数级增长(之前只是后退随机时间)。

CSMA/CD:当站有数据要发送时需要侦听介质,一旦空闲便立刻发送,并在发送同时检测信道上是否产生了冲突。一旦发生冲突,便立刻终止发送,发出一个段冲突加强信号,在0到2^i-1中随机一个时间重新发送。等待时间的最大值呈指数增长,在达到第10次冲突后,这个退避范围的最大值固定在1023,并在16次尝试之后直接放弃努力。

4.4.2 交换式以太网

随着以太网发展,人们需要一种设备将多跟电缆连接在一起,并且保证通信。这里介绍集线器(hub)与交换机(switch)两种设备,他们之间存在一些很明显的差距。

集线器与交换机

集线器 连接所有线路,组成一个CSMA/CD冲突域。意味着所有数据包都在同一个CSMA/CD冲突域中。这时,集线器不会考虑数据包应该向哪里发送,只是单纯的转发并广播每一个数据包
交换机 每个端口都有自己独立的冲突域
只把帧输出到它想要去的端口,因此交换机需要知道端口的对应MAC层地址
交换机有更高的吞吐量
交换机更加安全,因为流量只发至对应的端口,不会广播。

4.5 无线局域网(802.11)

下面开始介绍第二个重点应用。无线局域网的主要标准是802.11。

4.5.1 体系结构

这里介绍无线局域网的两种体系结构。一种为有架构模式(也称有基础设施模式);另一种叫自组织模式

image-20201124173415140

有架构模式下,不同的用户都与一个接入点(access point)关联,客户端收发数据包都需要通过AP进行。几个接入点通过分布式系统的网线连接在一起,就构成了一个扩展的802.11网络;而自组织模式则没有接入点。自组织模式的一个经典应用便是车载自组织网络。

4.5.2 802.11 MAC子层协议

之前讨论了802.3下的MAC子层协议,下面来重点介绍一下802.11在MAC子层中的一些重要协议,我们将按顺序介绍CSMA/CA,802.11中的RTS/CTS机制以及802.11的服务质量问题。这部分是本章的重点之一

在正式介绍之前,需要首先说明无线信道下的一些特殊特点。正是这些特点,使得无线局域网采用了一些比较特殊的算法和协议。

首先,无线电几乎都是半双工的,如果发生碰撞或者出现其他的信号,这些消息可能比发射信号弱几百万倍,这意味着它不能在一个频率上传输信号的同时又监听信道上的噪声,这样一来就没办法使用CSMA/CD算法了。同时,无线信道出错率比较高,而发生错误的代价又比较高昂,这意味着接收方需要发送确认消息来保证数据的可靠性。

CSMA/CA算法

由于以上的原因,802.11采取了带有冲突避免的CSMA算法,或称CSMA/CA(collisiion Avoidance)。CSMA/CA多了一个计时器,当计时器数到0,就会尝试发送信号。

CSMA/CA:需要发送数据帧的站以随机后退开始(除非是第一次使用且信道空闲),后退的时间槽数在0到15个时间槽之间。在这期间,如果有帧发送,那么CSMA/CA会暂停自己的计时器,一直到计时器结束,该站立刻发送数据。如果发送成功,站会收到一个由接收方发来的短确认,而如果没有收到,那么默认传输失败(不论是由于数据包碰撞、或者是其他的什么原因),发送方加倍后退选择的时间操数,尝试重新发送。如此反复,直到到达尝试的最大次数上限。

image-20201124163028718

和以太网相比,两个主要区别是:1,早期的后退有助于避免冲突(所以叫collisiion Avoidance);2,需要使用确认的方法来推断是否发生了冲突。

这种操作模式称为分布式协调功能(DCF),因为每个站都独立行事,没有一种中央控制机制。与之相对的则称为点协调功能(PCF)

RTS/CTS机制与NAV(网络分配向量)

现在我们重新审视隐藏终端和暴露终端的问题。RTS/CTS机制与NAV给出了一个解决隐藏终端问题的方法(但对于暴露终端依旧无能为力)。具体的实现方法如下:

802.11把侦听信道分为物理侦听(查看介质)和虚拟侦听两部分。其中,虚拟侦听使得每个站保留一个关于信道何时要使用的逻辑记录,以此来避免冲突。考虑下图:

image-20201124170149982

A、B、C、D分别对应四个站。其中A希望对B发送,C在A范围内,D在B范围内且不再A范围内。当A站希望向B站发送数据时,A会首先发送一个RTS帧,请求对方允许发送。一旦B收到RTS,就会发送一个CTS作为应答。CTS与RTS帧(以及之后会发送的数据帧)中都包含一个NAV字段(NAV:网络分配向量,Network Allocation Vector),该字段表达了所属帧的一系列数据会发送多长时间。在A收到CTS之后便开始发送数据,正确的数据帧到达后,B会发送一个ACK帧作为确认。A还会在本地维护一个计时器,如果时间内没有收到确认,就当作冲突,整个协议重新运行。

在A、B交互的同时,A、B范围内的所有占都可以有意或无意间听到两个站的部分对话。通过其中的NAV字段,C、D站即可推断出数据发送时间,并调整自己的策略。

C在A的范围内,因此它可以收到A发送的RTS帧。因此它可以意识到有人要发送数据,并推算出数据序列的发送时间,因此停止传输任何东西直至A、B传输完成。对于D来说,尽管它无法听到RTS,但通过CTS也可以更新自己的NAV。NAV信号是不传输的,它只供站内部使用,提醒自己保持一定时间的安静。

服务质量

在上文中我们留下了一些伏笔。比如,短确认、RTS等短帧似乎比起数据帧要特殊一些。下面这一部分将更深入的描述这种机制的实现原理。

无线局域网提升服务质量的主要方法只有一个,就是:允许不同的帧具有不同的优先度。下图给出了五种不同优先级的帧,横轴表示时间

image-20201124124354113

首先介绍DIFS,也称DCF帧间隔,任何站都可以在介质空闲DIFS后尝试抓取信道发送一个新帧。采用常规的竞争规则,即如果发生冲突进行二进制指数后退。

SIFS:短帧间间隔,允许正在进行对话的双发具有优先抓住信道的机会。例如想要发送ACK、RTS、CTS这样的数据帧,发送方等待SIFS之后就可以发送下一段,这样可以防止一次数据交流中被其它站横插一脚。

之后是两个AIFS:仲裁帧空间。短的时间间隔AIFS1位于DIFS与SIFS之间,用来把语音或者其它高优先级流量移至行头,使得语音流量能在常规流量之前发送;较长的AIFS4比DIFS大,一般用来发送可以延迟到常规流量之后发送的背景流量。

最后是EIFS:扩展帧间隔,用于当一个站收到坏帧或者位置帧之后报告问题。延迟发送就不会打断正在进行的对话。

通过不同的帧间隔,802.11提供了不同的优先级,保证了服务质量。

4.5.3 802.11帧结构

802.11的帧结构如下图:

注意观察其中的第二个字段:持续时间(Duration)该字段告知了通信+ACK的时间,实现了各站管理自己的NAV机制

4.6数据链路层交换

连接多个局域网的时候,我们可以使用网桥。网桥工作在链路层,通过MAC地址来转发帧。

网桥使用后向学习法:当发现了由a端口x站发出的数据帧之后,网桥会构造一个哈希表项来储存这一信息,当之后遇到发往x站的数据帧之后,就会直接发至a端口。

4.8常见问题Faq

1坚持CSMA,非坚持CSMA,p坚持CSMA,CSMA/CD,二进制指数后退的CSMA/CD,CSMA/CA到底有什么区别??

我在这篇博文中用表格很直观的比较了这几个协议的区别。可以点击>这里<直接访问。简单来说,前4个属于比较经典的模型,后两个是实际应用的例子。

集线器、中继器、网桥、交换机、路由器 这些东西又有什么区别?

主要的区别在于他们位于不同的层次。集线器、中继器处于物理层。用于简单的连接多条链路(中继器用于延长网络传输范围);网桥和交换机都位于链路层,但交换机一般能提供更多端口,传输效率也更高;而路由器处于网络层,在下一章会介绍。


至此数据链路层的全部协议已经描述完毕,请读者移步下一章:>第五章 网络层(上)<
主贴连接:>点击这里<

posted @ 2020-12-09 22:28  猫猫子  阅读(1615)  评论(0编辑  收藏  举报