第三章-数据链路层
4.1 信道分配问题
网络链路分为两大类:点到点连接(WAN)和广播信道(LAN) 广播信道的节点共用一条信道进行通信,那么就存在着信道竞争的问题。
广播信道有时也称为多路访问信道(multiaccess channel)或者随机访问信道(random access channel)
两种解决信道分配问题的方案:信道静态分配、信道动态分配
4.1.1 静态信道分配
这种信道分配方式,相当于把一条马路中间用护栏隔开,车辆不能换道。以前讨论的多路复用技术就是这种方式,如 频分多路 FDM。 网络流量是具有突发性的,变化很大,空闲时这种方案就浪费了信道;繁忙时,就会造成堵塞。
。。。数学论证待补充。。。
4.1.2 动态信道分配方案
构建模型的 5 个假设:
- 流量独立:有 N 台流量恒定独立的计算机;
- 单信道:N 台计算机使用共享的信道;
- 冲突可观察:冲突可以被计算机侦察到,并重新发送;
- 时间连续或分槽:在一段连续的时间内,任意时段都可发送;或者将时间分成一段段的时间槽,只能在时间槽的开始时发送;
- 载波侦听或不侦听:用户可以侦听信道是否有信息在传输(载波);不侦听就是不能侦听;
第一个假设表示流量的产生符合泊松分布,方便我们建立模型分析,尽管这不符合显示流量的流动方式; 单信道是我们分析的核心,冲突可观察是保证传输可靠的必要条件; 后面的讨论我们能知道,时间槽和载波侦听能够提高最大传输率;
4.2 多路访问协议
4.2.1 ALOHA
ALOHA 是夏威夷大学研究员为了解决偏远岛屿和远程计算机连接而设计的协议,这个原始的协议采用了一种简单而巧妙的方式解决了信道分配的问题,虽然该协议本身使用的是地面无线电广播通信,但它的基本思路同样适用其他的单信道竞争系统;
下面讨论两个版本的 ALOHA
纯 ALOHA
这种 ALOHA 协议十分简单,节点在任意时候,有需要就发送;如果产生了冲突,就等待一个随机时间后,重发; 冲突检测机制为:远程计算机收到数据之后,将其广播回节点中,节点收到数据后,对比发送的,如果不同就说明发生了冲突。 (后检测的机制,其实冲突在发生时,就应该被节点检测到,然后停止发送。这样的机制浪费了冲突发生后的带宽以及时间;)
。。。数学说明待补充。。。
通过建模分析得到,该协议最好情况下,信道利用率为 18%。
分槽 ALOHA
在前一种协议的基础上,增加了时间槽。信道利用率提高了一倍,36%。 前一种方式,每个发送出去的帧都要占用两个帧时作为高冲突区,而增加时间槽后,强行将帧限制到时间槽的开头开始发送,高冲突区变成了一个帧时
。。。数学说明待补充。。。
4.2.2 载波侦听多路访问协议
1-坚持 CSMA、p-坚持 CSMA、非坚持 CSMA
- 1-坚持 CSMA:计算机侦听信道,一空闲马上发,若冲突,等待随机时间后,重复上述过程;
- p-坚持 CSMA:计算机侦听信道,若空闲,以概率 p 发送(可能发,可能不发),以概率 1-p 推迟发送;这个过程一直重复,直到数据发送了,或者别人占了信道;若别人占了信道,则和冲突使用同样的方式处理;
- 非坚持 CSMA:计算机侦听信道,若空闲,就发送,若忙碌,则放弃侦听,等一个随机时间后,再看看是否空闲,以便发送;
很显然,贪婪的 1-坚持 CSMA 在 2 台以上的计算机竞争时,大家都很急躁争抢信道,冲突会频繁发生; 稍微没那么贪婪的 p-坚持 CSMA 表现良好,IEEE 802.11 是对这种方式的改良; 非坚持的 CSMA,很佛系,提高了高竞争系统的信道利用率,但是这种方式的延迟更大了(每次遇到冲突,都等一个随机时间,这个随机时间很可能有能够发送出去的机会,但错失了);
带有冲突检测的 CSMA
CSMA/CD 协议工作流程:当空闲时,多个计算机都要发送,冲突就会发生。如果一个站检测到冲突,就会停止发送,并发送一个冲突加强信号,通知网络上各个站点已经发生冲突,所有计算机都等待一段随机时间再发送;
用下图模型描述,我们可以看到,CSMA/CD 模型将会交替出现竞争期、传输期、空闲期;

冲突检测机制:考虑一个极端情况,网络中距离最远的两台计算机,计算机 A 在 时刻发送一个帧,在 时刻(该帧几乎到达另一台计算机 B 时),另一台计算机 B 刚好发送了一个帧,这时冲突了,计算机 B 立刻检测到了,马上停止发送,而计算机 A 要等到,冲突信号回传才能知道冲突了,即 时刻。 通过以上极端情况讨论,我们得到了一个结论,当计算机发送的数据,经过 时长之后没有收到冲突信号,那么就可以认为,数据安全的发送出去了。那么我们可以试着按照 将时间分成时间槽,这时的 CSMA/CD 协议就很像是带时间槽的 ALOHA 协议了。差异在于, 往往比时间槽的长度(帧时)短,这个差距越大,带来的性能提升就越高。