本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。
媒介访问控制子层(MAC):决定了谁能在信道上继续执行
注意:多路访问控制协议都无法保证传输的可靠性
相关背景知识及概念
- 网络连接分为两类,一类是端到端连接(在物理层一章详细介绍了,我后面再整理),一类是通过广播信道,其中的一个关键问题是当存在竞争时,谁能获得信道的使用权。
本文中提到的一些协议用于解决该问题。
- 广播信道的访问方式也分两种。一种是随机访问,一种是多路访问(存在竞争)。MAC属于多路访问的范畴。
- 局域网(LAN)是一个广播信道,因此MAC层显得很重要;而在广域网(WAN)中,除卫星通信外多用端到端连接。
信道分配问题
信道是什么?
信道是一个抽象的逻辑概念,它实际的物理介质可以有多种形式。比如:无线频谱、有线网络里面的单根线、光纤等等。
静态信道分配
- FDM(frequency division multiplexing)
按照使用者的数量N将带宽均分为N份
缺点:
- 当用户量变大时,每个用户能分到的带宽很小;
- 当用户数量超过最大能分的数量时,有的用户会被挤出去(拒绝访问)
- 用户不用时这部分资源也被独占,无法释放,造成浪费。
- 用途:比如telephone trunk
(其实关于这一点我是有切身体会的,我个人觉得真不仅是电话线,从某一个时段来看,这种思想依然是成立的。比如社团有人拉了宽带,少人连接的时候每个人都用得很流畅,多人用的时候速度真的一言难尽;再比如,我经常无法连接学校的校园网,属于是被挤掉的那个)
有如下公式:
$T=1/(μC-λ)$
其中,T表示平均延迟时间,C是信道容量,1/μ是帧的平均长度,服务率就是大除以小,即μC,设平均到达率为λ。
如果将单一信道分为N份,套用加对以上公式进行变形,即可得到:
$T(N)=NT$
动态信道分配
前提是假设满足如下条件:
- 交通独立。有N个独立的基站,并且对于单个基站而言,在一帧被成功传输前它不会发送新的帧。
- 所有基站都在使用同一个信道(核心)。(各个基站理论上是可以均分信道资源的,不过在具体协议中会有所调整)
- 冲突是可以被检测的。(基础)
时间是持续的或者插槽式的
- 时间是连续的:任意一个时刻都可以开始帧的发送
- 时间片也可以被分为多个独立的整体,称为插槽(slot),在这种情况下,帧的传输必须在插槽开始的位置。
(这需要所有基站进行同步)
- 插槽含有的帧数为0,说明是空槽;1,说明成功传输;多帧,说明存在冲突
- 分是否含载波监听两种情况。
(载波监听机制也会有自己的问题,后续会详细说)
ALOHA(世界最早的无线电计算机通信网)(了解即可)
分纯正的和带插槽的两种。前者时间是连续的,后者时间被划分为一块块插槽。
带插槽的信道利用率最多可达$1/e$
Carrier Sense Multiple Access Protocols(载波监听与多路访问)
目前以太网使用的是:CSMA/CD(多了个collision detection,冲突监测)
按照检测信道是否空闲的报文持续发送的程度(persistent),可将CSMA大致分成以下几种类型(实际上还不止,详见原书图4-4,只是这几种最有代表性)
- persistent CSMA(一直等)
- non-persistent CSMA(不总是等)
- p-persistent CSMA(按概率来等)
以下将以小明等公交以及坐公交为例,详细解释这三种情况以及后续的CD模型。
- persistent CSMA:小明一直在车站等公交,一直抬头张望(监听信道是否空闲);要是等到了就上车,等不到就继续等。
- non-persistent CSMA:小明等公交并不是特别着急,如果能等到就上,等不到就去隔壁小卖部先坐会儿吹吹水(时长不定),过会儿再去看看车来了没有。
- p-persistent CSMA:小明比较任性,在有了去隔壁小卖部吹水的习惯的前提下,他手握一枚硬币,即使公交来了他也不着急上车,而是先抛抛硬币,只有是正面(概率为p)他才上车。
- with Collision Detection:小明终于上了车,只有稳稳坐在座位上他才能更好地敲代码完成老板的任务,但是车上座位只有一个(别质疑,先相信),如果有人也想坐这个位子,他会先站起来等一等,发现没人坐再坐回去。
不过这种情况下会存在问题,比如小军想坐这个位子,他也想着先等一会儿,没人了他再坐,如果他们两个同时开始等待又同时结束等待的话,实际上相当于中间那段时间信道处于空闲状态、而之后又产生新的冲突。
参考书籍
- 《Computer Networks (the fifth edition) 》