计算机网络——数据链路层(2)
介质访问控制(Medium Access Control,MAC)
[定义]介质访问控制子层,是属于数据链路层的一个子层。任务是协调活动结点的传输,用来让使用介质的每一个结点能够隔离同一信道中其他结点的信号。常见的控制方法有:信道划分介质访问控制、随机访问介质访问控制和轮询访问介质访问控制:
信道划分介质访问控制
将每一个设备与统一信道其他设备的通信,彼此隔离开。把时域和频域资源(信号的两个属性,简单理解就是时间和频段)合理地分配给网络上的设备。
多路复用。
- 概念:当传输介质的带宽超过单一信号需要的带宽时,可以通过利用一条介质携带多个传输信号的方法来提高传输系统的利用率。
- 实质:通过分时、分频、分码等方法把原来的一条广播信道,逻辑上分为几条用于两个结点之间通信的互不干扰的子信道,实际上就是把广播信道转变为点对
点信道。 - 分类:频分多路复用(FDM)、时分多路复用(TDM)、波分多路复用(WDM)、码分多路复用(CDM)
频分多路复用(FDM)
- 将多路基带信号调频到不同频率载波上,再进行叠加形成复合信号的技术;
- 物理信道的带宽分割成若干个子信道,每个子信道传输一种信号;
- 每个子信道带宽没必要完全相同,但总和必须不超过总带宽;而且为了防止子信道之间的干扰,相邻信道间需要加入“保护频带”
- 优点:充分利用了带宽,技术较成熟。
时分多路复用(TDM)
- 将一条物理信道,按照时间非诚若干个时间片,轮流分配给多个信号使用,每个时间片由一个信号占用;
- 微观的并发、宏观的并行。
- 但由于计算机数据的突发性,一个用户对已经分配到的子信道的利用率不高。采用统计时分多路复用(STDM)进行改进优化。
- 统计时分多路复用(STDM):采用STDM帧,不是固定分配时隙,而是按需动态地分配时隙,当终端有数据要传输时才会分配到时间片,提高了线路的利用率。
波分多路复用(WDM)
- 利用光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来;
- 光波处于高频段,有很高的带宽,可以实现很多路的波分复用。
码分多路复用(CDM)
- 既共享信道的频率,又共享信道的时间,是靠不同的编码来区分各路原始信号的一种复用方式。
- 推荐阅读:CDM(码分多路复用技术)总结
- 优点:频谱利用率高、抗干扰能力强、保密性强、语音质量好;可以减少投资和降低运行成本,主要用于无线通信系统,特别是移动通信系统。
随机访问介质访问控制
- 每个信号独占时间和频率,但需要抢夺,用户发送消息是随机的,不用规定次序。但为了解决碰撞的问题,用户需要按照一定的规则反复地重传它的帧,直到该帧无碰撞的通过。
- 核心思想:胜利者通过争用获得信道,从而获得信息的发送权。
- 实质:一种将广播信道转化为点到点信道的行为。
- 协议有:ALOHA协议、CSMA协议、CSMA/CD协议、CSMA/CA协议等。
ALOHA协议
- Additive Link On-line HAwaii system;
- 分为纯ALOHA协议和时隙ALOHA两种;
- 纯ALOHA协议:每一个站均自由地发送数据帧,如果一段时间内没有收到确认,站点认为发生了冲突,然后会等待一段时间后再发送数据(冲突双方都会等待一段随机的时间),直至发送成功。ALOHA网络吞吐量很低,所以用时隙ALOHA协议来优化。
- 时隙ALOHA协议:将各站的时间同步起来(不再自由了,发件时间受限,但仍然不用理会其他站点),将时间划分为一段段等长的时隙Slot,规定只能在每个时隙开始时才能发送一个帧。时隙长度一般比帧传递时间略长。一旦发生碰撞,处理方式与纯ALOHA协议的相同,但时隙ALOHA协议的网络吞吐量比纯LOHA协议大了1倍。
CSMA协议
- 载波监听多路访问,Carrier Sense Multiple Access
- 发送前监听一下共用的信道,发现信道空闲后再发送。
- 在ALOHA协议基础上,增加了一个载波侦听装置。
- 根据侦听方式和侦听到忙道后处理方式的不同,分为三种不同的CSMA协议
- 1-坚持CSMA。1指监听到闲,一定立即发送数据。效果受传播延迟影响较大。
- 非坚持CSMA。减少了多个信道等待空闲后同时发送数据导致冲突的概率,但也使得网络中的平均延时增加了。
- p-坚持CSMA。是前两种的折中方案。
- 三者比较如下:
信道状态 | 1-坚持型 | 非坚持型 | p-坚持型 |
---|---|---|---|
空闲 | 立即发送数据 | 立即发送数据 | 以概率p发送数据,以概率1-p推迟到下一个时隙 |
忙 | 继续坚持监听信道 | 放弃监听,等待一个随机的时间后再监听 | 放弃监听,等待一个随机的时间后再监听 |
CSMA/CD协议
- 载波监听多路访问/碰撞检测,Carrier Sense Multiple Access with Collision Detection
- 在CSMA的基础上(依旧是发送前先监听),扩展了边发边侦听,以便判断自己在发送数据时其他站点是否也在发送数据(通过检测信道上信号电压的变化情况);
- 工作流程概括:“先听后发、边听边发、冲突停发、随机重发”;
- 与CSMA不同之处:
- 传输过程中,适配器(即网卡)检测来自其他适配器的信号能量的出现。如果在帧的整个传输过程中,都没有检测到其他信号能量,则顺利完成帧的传输;如果检测到了,那么适配器立即停止该帧的传输,取而代之一个48比特的拥塞信号;
- 在中止之后,适配器采用二进制指数退避算法(没必要了解太仔细,一个随机数而已)来等待一段随机时间后继续监听空闲。
- 二进制指数退避算法:基本退避时间为2τ(下一段会解释),参数n(重传10次以下时,n表示重传次数;次数超过10后,n只能取10),退避时间是[0~2^n-1]中随机一个数k和2τ的乘积,即2kτ。重传超过16次后若仍不能成功,会认为此帧永远无法传输,向高层报告出错。
- 使用此算法,可使重传需要推迟的平均时间随重传次数的增大而增大,实现动态退避,减小发生碰撞的概率。
- 发送点在最多经过2τ时间(τ为端到端单程传播时延)就会知道是否发生碰撞,2τ称为争用期(或冲突窗口、碰撞窗口)。
- 为了确保发送站在发送数据的同时能检测到可能存在的冲突,单帧的传输时延(搬货上车的耗时)至少两倍于信号在总线中的传播时延(轮子真正跑路的耗时)。
- 因此单帧的长度不能低于一个最小值(比它短的当作无效帧处理,比如因冲撞而终止的帧),最小帧长=总线传播时延×数据传输速率×2。
- 以太网规定51.2μs为争用期的长度。对于10Mb/s以太网,争用期内可发送512bit(即64B)。如果前64B没有发生冲突,则信道被成功抢占,之后也不会发生冲突,此64B即最小帧长。
- 如果要发送一个正常帧,但帧长小于64B,MAC子层会在data区后面加一个整数字节的填充字段,使长度不低于64B。
- 只能用在半双工通信,不可能进行全双工通信
- 总线的传播时延对CSMA/CD影响很大
CSMA/CA协议
- CA:Collision Avoidance,碰撞避免
- CSMA/CD协议很好地应用在有线连接的局域网,但在无线局域网环境下很难实现,有两个问题:① 接收信号的强度远小于发送信号的强度,要实现碰撞检测硬件花费过大;② 无线下,并非所有的站点都能够听见对方,即“隐蔽站”的问题。由此引入CA协议,尽量减少碰撞发生的概率。
- 基本思想:发送数据前先广播告知其他结点,在某一段时间内不要发送数据,以免出现碰撞。
- 机制:预约信道、ACK帧、RTS/CTS帧:
- 预约信道:必须实现。发送方向其他站点通知自己传输数据需要的时间长度,以便让其他站点在这段时间不发送数据;
- ACK帧:必须实现。所有站点在正确接收到发给自己的数据帧(除了广播帧和组播帧)后,都需要响应一个ACK帧,若发送方未在一段时间内收到ACK帧,将进行帧的重发。
- RTS/CTS帧:可选实现,主要解决“隐蔽站”问题。
- 流程:
- 送出数据前,监听媒体状态,等没有人使用媒体,维持一段时间后,再等待一段随机的时间后依然没有人使用,才送出数据。由于每个设备采用的随机时间不同,所以可以减少冲突的机会。
- 送出数据前,先送一段小小的请求传送报文(RTS : Request to Send)给目标端,等待目标端回应 CTS: Clear to Send 报文后,才开始传送。 利用RTS-CTS握手(handshake)程序,确保接下来传送资料时,不会被碰撞。 同时由于RTS-CTS封包都很小,让传送的无效开销变小。
- CSMA/CA通过这两种方式来提供无线的共享访问,这种显式的ACK机制在处理无线问题时非常有效。然而不管是对于802.11还是802.3来说,这种方式都增加了额外的负担,所以802.11网络和类似的Ethernet网比较总是在性能上稍逊一筹。
轮询访问介质访问控制:令牌传递协议
- 轮询访问中,用户不能随机发送消息,需要通过一个集中控制的监控站,以循环的方式轮询每个节点,再决定信道的分配(没被分配到信道的结点不能发消息)。
- 主要协议是令牌传递协议,主要使用在令牌环局域网中。
- 希望发送数据帧的结点,需要等待令牌,一旦收到令牌就可以开始发送;一直到发送结束后,该结点释放令牌,以便让其他结点使用。
- 数据帧需要包含目的结点的地址,但帧在环上传递时所有结点都进行帧的转发,直到发送结点收到自己的帧后,才可以撤销发送该帧(帧经过目的结点时,会被附上“响应比特”)。
- 令牌在设备间的传递通路在逻辑上必须是一个环。
- 轮询介质访问控制非常适合负载很高的广播信道(大概率出现多个结点在同时刻发送数据的信道)。