目录
一、网络链路
二、广播信道要解决问题
三、多路访问协议
1、基本介绍
2、多路访问协议的类型(3)
四、信道划分协议
1、时分多路访问 TDMA
2、频分多路访问 FDMA
3、码分多路访问 CDMA(略)
五、随机访问协议
1、纯 ALOHA
2、时隙 ALOHA
3、CSMA 载波侦听多路访问
4、CSMA/CD 带冲突检测的
六、轮流协议
1、轮询(polling)
2、令牌传递(token passing)
一、网络链路
两种网络链路:
- 点对点链路:链路两端各一个节点,一个发送和一个接收。
- 广播链路:多个发送节点和接收节点连接到一个共享的广播信道。
广播:当任何一个节点传输一帧时,信号在信道上广播,其它节点都可以收到一个拷贝。
广播常用于局域网 LAN 中,如早期的以太网和无线局域网,即以太网和无线局域网使用的是广播链路层技术。本节主要学习广播链路的信道共享技术。
二、广播信道要解决问题
① 传统的广播电视:是单向的广播,一个固定的节点向许多接收节点发送。
② 计算机网络:广播信道上的所有节点都能够发送和接收。
- 类似于许多人聚集在一起交谈,此时空气是广播信道;
- 解决 “谁在什么时候获得说话权力” 问题,即谁有权向信道发送。
③ 多路访问问题:如何协调多个发送节点和接收节点对共享广播信道的访问。
④ 多路访问协议:用于解决多路访问问题的相关技术。
三、多路访问协议
1、基本介绍
① 目的:协调多个节点在共享广播信道上的传输。
避免多个节点同时使用信道,发生冲突,从而产生互相干扰。
② 冲突(collide):两个或两个以上的节点同时传输帧,使接收方收不到正确的帧。
所有冲突的帧都因受损而被丢失,从而造成广播信道时间的浪费。
③ 多路访问协议可以用于许多不同的网络环境,如有线和无线局域网、卫星网等。
④ 理想的多址访问协议:对于一个速率为 R bps 的广播信道,
- 当一个节点有数据发送时,它能以 R bps 的速率发送;
- 当有 M 个节点要发送数据,每个节点的平均发送速率为 R/M bps;
- 完全分散:不需要一个主节点来协调传输;不需要时钟、时隙同步
- 简单
需要时钟、时隙同步指的是将在后面介绍的时隙 ALOHA 。ALOHA 协议和 CSMA 协议只有第一个特性,而没有第二个特性。
2、多路访问协议的类型(3)
① 信道划分协议
- 把信道划分为小片,即时隙
- 给每个节点分配专用的小片
② 随机访问协议
- 不划分信道,允许产生冲突
- 但是必须能够从冲突中恢复
③ 轮流协议
- 通过轮流访问信道的方式避免冲突
- 要发送的节点越多轮流的时间越长
四、信道划分协议
主要有TDMA、FDMA、CDMA三种。
设信道支持 N 个节点,传输速率是 R b/s。
1、时分多路访问 TDMA
time division multiple access
TDMA:将时间划分为时间帧(time frame),每个时间帧再划分为 N 个时隙(slot),时隙的长度保证能发送一个分组,分别分配给 N 个节点。每个节点只能在固定分配的时隙中传输。
这里的分组就是指的链路层的帧!原书为了避免将其和时间帧混淆,所以改叫分组。
例:具有 6 个节点的 LAN,时隙 1、3、4 有分组,时隙 2、5、6 空闲。
TDMA 的特点
- 避免了冲突、公平:每个节点专用速率 R/N bps;
- 节点速率有限:R/N bps;
- 效率不高:节点必须等待它的传输时隙;
- 资源浪费:信道可能处于空闲状态。
2、频分多路访问 FDMA
frequency division multiple access
FDMA:将总信道带宽 R bps 划分为 N 个较小信道,即划分为 N 个带宽为 R/N 的频段,分别分配给 N 个节点。
例:具有 6 个节点的 LAN,频段 1、3、4 有分组,频段 2、5、6 空闲。
FDMA 特点
- 避免了冲突、公平:每个节点专用速率 R/N bps;
- 节点带宽有限、效率不高:节点带宽为 R/N bps。
3、码分多路访问 CDMA(略)
frequency division multiple access
- 每个节点分配一个唯一的编码
- 每个节点用它唯一的编码来对它发送的数据进行编码
- 允许多个节点共存,信号可叠加,即可以同时传输数据而无冲突
如果编码是正交化的,则可以同时传输数据而无冲突。
五、随机访问协议
基本思想:
- 发送节点以信道的全部速率 R bps 发送;
- 发生冲突时,冲突中的每个节点分别等待一个随机时间;
- 等待一个随机时间后再重发,直到帧/分组发送成功;
- 节点间没有协调者。
典型随机访问协议:
- ALOHA 协议(纯 ALOHA、时隙 ALOHA)
- 载波监听多路访问协议 CSMA
- 带冲突检测的载波监听多路访问协议 CSMA/CD
- 带冲突避免的载波监听多路访问协议 CSMA/CA
1、纯 ALOHA
又称非时隙 ALOHA,实现简单,不需要时隙同步。
基本操作:帧一旦到达,节点立即进行传输。
冲突处理:如果与其它帧产生冲突,则在该冲突帧传完之后以概率 p 立即重传该帧;或等待一个帧的传输时间,再以概率 p 传输该帧,或者以概率 1-p 等待另一个帧的时间。
rand(0, 1); // 规定随机数大于p则不传,否则则传
以概率 p 立即重传就是等待一个随机时间,在计算机中实现就是产生一个随机数,若该随机数大于某值则继续产生随机数,否则立即重传。
冲突概率
为什么这里链路层的帧都是一样长?因为假设了所有帧大小相同。
2、时隙 ALOHA
做出以下假设:
- 所有帧大小相同
- 时间被划分为相同大小的时隙,一个时隙等于传送一帧的时间
- 节点只在一个时隙的开始传输帧
- 节点是同步的,每个节点都知道时隙何时开始
- 所有节点都能在时隙结束之前检测到冲突
时隙 ALOHA 的实现
当节点要发送新帧时,它需要等到下一时隙开始时才能传送,
- 如果没有冲突,则节点可以在下一时隙开始时发送新帧;
- 如果有冲突,则节点在随后的时隙以概率 p 重传该帧,直到成功为止。
时隙 ALOHA 的优点
- 单个活跃节点可以持续以满速率传送帧
- 具有高分散性:只需节点的时隙同步
- 实现简单
时隙 ALOHA 的缺点
- 因为允许冲突,所以会浪费时隙
- 存在空闲时隙
- 节点只有在传输数据包时才能检测到冲突
时隙 ALOHA 的效率
- 效率:是指当有很多节点,且每个节点有很多帧要发送时,成功时隙所占百分比。
- 最佳情况:信道有 37% 的有效传输。
3、CSMA 载波侦听多路访问
载波侦听:某个节点在发送之前,先监听信道。
- 信道忙:该节点随机等待/回退一段时间,然后再侦听信道。
- 信道空:该节点开始传输整个数据帧。
人类类比:在自己说话之前,先听一下有没有其他人正在说话,不要打断他人说话!
CSMA 的特点:
- 节点在发送之前进行监听,可以减少冲突。
- 由于存在传播时延,因此仍有可能出现冲突,从而造成信道浪费。
传播时延:信号从一个节点传播到另一个节点所花费的时间。该传播时延越长,载波侦听节点不能侦听到网络中另一个节点已经开始传输的机会就越大。
CSMA 发送冲突举例
请忽略图中左侧文字,这是后面 CSMA/CD 的功能。
带来问题:信道浪费。
注意:距离与传播时延对碰撞概率的影响。
节点没有进行冲突检测,即使发生了冲突,节点仍继续传输它们的帧。但该帧已经被破坏,是无用的帧,因此信道传输时间被浪费。
4、CSMA/CD 带冲突检测的
具有 “载波侦听” 和 “冲突检测” 这两个功能。
载波侦听:传送前侦听
- 信道忙:延迟传送
- 信道闲:传送整个帧
冲突检测:发送的过程中一旦检测到冲突就立即停止传输,尽快重发。
- 目的:缩短无效传送时间,提高信道的利用率。
以太网 CSMA/CD 的运行机制
① 适配器从网络层得到分组,创建链路层帧。
② 适配器进行载波侦听:
- 信道闲,则开始传送帧。
- 信道忙,则等到信道闲时再传送帧。
③ 当信道闲时适配器开始传送帧:
- 若适配器在整个发送中都没有检测到其它传送,则完成该帧的传送。
- 若适配器在发送中检测到其它传送,则放弃传送并发送一个拥塞信号。
前者已经不需要接收方回复确认信息了,因为适配器一直在侦听,并且没有发现冲突。
⑤ 适配器放弃传送后进入 指数回退阶段:
注意选择范围是连续的一串整数,中间没有跳过任何一个整数。
以太网 CSMA/CD 的运行机制讨论
拥塞信号:长为 48 比特,确保所有传送者知道冲突发生。
比特时间:是指发送 1 比特所用的时间。
- 对于 10 Mbps Ethernet 为 0.1 微秒
- 当 K=1023 时,等待时间大约为 52 毫秒
指数回退算法
目标:适配器依据当前负载情况重传,负载越重等待时间越长。
- 第一次冲突: 在 {0, 1} 中选 K 值,延迟 Kx512 比特时间传送;
- 第二次冲突: 在 {0, 1, 2, 3} 中选 K 值,延迟 Kx512 比特时间传送;
- 10 次以后,在 {0, 1, 2, 3, 4, …, 1023} 中选 K 值;
- 冲突超过 16 次,则放弃重传!
K 值是等概率选择的。
六、轮流协议
1、轮询(polling)
轮询解决了冲突和时隙空闲的问题。
主节点邀请从节点依次传送:
由主节点通知从节点 “它可以传输” ,并且规定了每个从节点每次能发送的时间。
主节点采用轮询的方式,依次给各个从节点分配时间,保证了一个节点开始发送后不会再有其它节点开始发送。该从节点发送完毕后将会通知主节点,主节点再去轮询,去给下一个需要发送的从节点分配时间。
轮询 1:你要发吗?我要发。那好你发吧,但只能发 xx 时间哦,发完了告诉我。我发完了。
轮询 2:你要发吗?我暂时不发。
轮询 3:你要发吗?我要发。那好你发吧,但只能发 xx 时间哦,发完了告诉我。我发完了。
轮询的问题:
- 轮询的开销:通知一个节点 “它可以传输” 所需的时间
- 单点故障:一旦主节点寄了,其它从节点都因为没有通知而没办法发
2、令牌传递(token passing)
控制令牌按顺序从一个节点传递到下一个节点,并且规定只能持有令牌 xx 时间。令牌和帧都采用同方向且单方向传输,因为如果数据采用双向传输,那么它自己都会和自己产生冲突。
PC1 发送完毕将令牌传递给 PC2,PC2 因为不需要发送,所以直接把令牌传递给 PC3,PC3 拿到令牌后开始发送帧。
令牌传递的问题:
- 令牌开销:令牌就是数据
- 单点失效(token):令牌出错则视为丢失,谁都发不了
假设令牌持有时间为 2 秒,则上图 PC 最多等待 6 秒。若等待时间大于 6 秒,则发现令牌丢失,从而 PC 们会争相产生新的令牌。