第4章 MAC 子层
传统 LAN 基本概念
局域网 (LAN):在一个小区域范围内对各种数据通信设备提供了互连的信息网。
决定局域网特性的主要技术: - 传输媒体: 传输数据 - 拓扑结构:连接各种设备 - 媒体访问控制方法:共享资源
局域网的数据链路层: - 逻辑链路控制子层 (LLC) - 媒体访问控制子层 (MAC):用来确定多路访问信道下一个使用者的协议
LAN 的传输媒体: - 双绞线 - 同轴电缆 - 光纤 - 无线电波 - 红外
LAN 的拓扑结构: - 星型 - 环型 - 总线型 - 树型
多路访问协议
信道分配
信道分配问题:如何在竞争用户之间分配单个广播信道。
静态信道分配
采用多路复用技术,将信道容量拆开分给多个用户使用。
如传统的 FDM 或 TDM,对于 N 个用户,将带宽或时间分成 N
份,每个用户静态地占用一个。
缺点:不能有效地处理突发数据,有些用户停止通信时带宽或时间被浪费。
动态信道分配
异步时分多路复用。分为以下两种: -
随机访问:争用。只要有数据就直接发送,发生冲突后再采取措施解决冲突。
适用于负载轻的网络,负载重时效率低
- 控制访问:发送站点先获得发送的权利,再发送数据。
不会发生冲突,在负载重的网络中可获得很高的信道利用率。
主要有轮询和预约两种方式。
动态信道分配的5个关键假设: - 流量独立
由 N 个独立的站组成,每个站都有一个程序或用户产生要传输的帧。
单信道
所有用户都共享同一个信道,在该信道上发送/接收数据。冲突可观察
冲突:如果多个用户同时发送数据,多路信号在时间上叠加使接收端无法正常解码。
所有站都能够检测到冲突事件的发生,冲突的帧必须在以后再次被发送。时间连续或分槽
时间连续:任何时刻都可以开始传输帧。
时间分槽:将时间分为离散的间隔(称为时间槽),帧的传输只能从某个时间槽的起始点开始。载波侦听或不听
载波侦听:发送前先侦听信道,可以知道该信道当前是否正被使用。
ALOHA 协议
纯 ALOHA
当用户有数据需要发送时就传输。
每个站在给中央计算机发送帧之后,该计算机把该帧重新广播给所有站。
发送站侦听来自集线器的广播,以此确定它的帧是否发送成功。
如果帧被损坏了,则发送方等待一段随机时间后再次发送该帧。
分槽 ALOHA
将信道时间分为离散的时间槽,每个时间槽可以用来发送一个帧。
一个站点有数据发送时,必须等到下个时间槽的开始才可以发送。
与纯 ALOHA 相比,信道利用率提高一倍。
CSMA 协议
载波侦听多路访问 (CSMA) 协议:站监听信道,根据信道的状态来采取相应的动作,只有发现信道空闲时才能发送数据。
1-坚持式 CSMA
当一个站点要发送数据时,先监听信道,若信道忙则坚持监听;一旦发现信道空闲,立即发送数据(发送数据概率为
1)。
若发生冲突,等待一随机场时间,再重新开始监听信道。
两种发生冲突可能: - 信号传输延迟造成冲突 - 多个站点在监听到信道空闲时同时发送
该协议的性能高于 ALOHA 协议。
非坚持式 CSMA
当一个站点要发送数据时,先监听信道,若信道忙,随机等待一段时间后再开始监听信道(非坚持);一旦发现信道空闲,立即发送数据。
该协议的信道利用率高于 1-坚持式 CSMA 协议,但网络的延迟增大。
p-坚持式 CSMA
适用于分时间槽的信道。
当一个站点要发送数据时,先监听信道,若信道忙,则等到下个时间槽再监听信道;若信道空闲,则按照概率 p 发送数据,而以概率 q=1-p 将此次发送推迟到下一个时间槽。若下一个时间槽信道也是空闲的,则它还是以概率 p 发送数据,或者以概率 q 再次推迟发送;重复该过程直到帧被发送出去。
与前两种 CSMA 协议相比: - 概率 p:降低 1-坚持式协议中多个站点同时发送而造成冲突的概率。 - 坚持监听:克服非坚持式协议中造成的时间延迟。
p 的选择直接关系到协议的性能。
CSMA/CD
带冲突检测的 CSMA (CSMA/CD)
发送过程中仍然监听信道,通过检测回复信号的能量或脉冲宽度并将其与发送的信号作比较,可以判断是否发生冲突。
一旦发生冲突,立即取消发送,等待一随机时间后再尝试发送。
检测冲突的最小时间是将信号从一个站传播到另一个站所需要的时间。
CSMA/CA
带避免冲突的 CSMA,被 WLAN 采用。
- 通过侦听确定在很短的一个时间内(这段时间称为 DIFS)没有信号。
- 倒计数空闲时间槽,当有帧在发送时暂停该计数器。
- 当计数器递减到0时,该站发送自己的帧。
- 如果帧发送成功,目标站立即发送一个短确认。
- 如果该站没有收到确认,则说明传输过程中发生了错误,采用二进制指数后退算法重新发送。
二进制指数后退
如果发生冲突,等待一段随机时间后再重试。
一般地,在第 i 次冲突之后,从 \(0\) ~
\(2^i-1\)
之间随机选择一个数,然后等待这么多个时间槽。
在达到10次冲突之后,随机数的选择区间被固定在最大值1023,不再增加。
在16次冲突之后,控制器放弃努力,并给计算机返回一个失败报告,进一步的恢复工作由高层协议完成。
冲突避免多路访问 (MACA)
- A 向 B 发送一个 RTS (Request To Send) 短帧,包含了随后要发送的数据帧长度。
- B 向 A 回复一个 CTS (Clear To Send) 短帧,包含了从 RTS 中复制的数据帧长度。
- A 收到 CTS 后开始传输。
- 如果一个站侦听到了 RTS,则它保持足够长时间的沉默使 A
能在无冲突的情况下收到 CTS。
该站如果只侦听到了 RTS 没有侦听到 CTS,则在数据帧传送过程中可以自由发送信息。 - 如果一个站侦听到了 CTS,则它依据 CTS 中数据帧的长度,在数据传输过程中一直保持沉默。
以太网 (IEEE 802.3)
经典以太网:使用上述技术解决多路访问问题。
以太网的原始形式,运行速度从 3~10 Mbps 不等。
交换式以太网:使用交换机连接不同的计算机。
可以运行在 100、1000 和 10000 Mbps
的高速率,分别以快速以太网、千兆以太网和万兆以太网的形式呈现。
经典以太网
帧格式
前导码 (Preamble):8个字节,每个字节包含比特模式 10101010。IEEE 802.3 最后一个字节(帧起始定界符 SOF)的最后2位为11。
比特模式是由曼彻斯特编码产生的 10MHz 方波,每个波 6.4 微妙,以便接收方的时钟与发送方同步。目标地址:6个字节,MAC 地址,第一位是0表示是普通地址;如果是1,则表示组地址,该组中的所有站都要接收;全1的特殊地址用作广播,网络中的所有地址都要接收。
源地址:6个字节,MAC 地址,标识帧的发送方,具有全球唯一性。
地址字段的前3个字节用作该站所在的组织唯一标识符 (OUI),由 IEEE 统一分配,指明了网络设备制造商;后3个字节由制造商负责分配。类型/长度 (Type/Length):2个字节。以太网使用类型字段,指定了该把帧送给哪个进程处理。IEEE 802.3 使用长度字段,接收方通过数据内包含的另一个逻辑链路控制 (LLC) 协议头来确定如何处理入境帧。
任何值小于或等于 0x600 可解释为长度字段,任何大于 0x600 可解释为类型字段。数据 (Data):最多可包含 1500 字节。
填充 (Pad):最多 46 字节。以太网要求有效帧必须至少 64 字节长,从目标地址算起直到校验和,包括这两个字段本身在内。如果帧的数据部分小于 46 字节,则使用填充字段来填充该帧,使其达到最小长度要求。
限制最小帧长的原因:避免当一个短帧还没有到达电缆远端的发送方,该帧的传送就已经结束;这种情况下,当在电缆的远端发生冲突时,发送方的传送在突发噪声到达前就完成传送,发送方误以为刚才一帧已成功发送。
校验和:4个字节,采用 32位CRC。
MAC 子层协议
采用 1-坚持 CSMA/CD 算法,发生冲突时采用 二进制指数后退算法。
交换式以太网
当交换机端口接收到来自某个站的以太网帧,它检查该帧的以太网地址,确定该帧前往的目的地端口。
- 在集线器中,所有站位于同一个冲突域(不同站点同时发送数据可能产生碰撞的最大网段),必须使用 CSMA/CD 算法。
- 在交换机中,每个端口有独立的冲突域。
- 对于全双工电缆,冲突不可能发生。
- 对于半双工电缆,站和端口以通常的 CSMA/CD 方式竞争传输。
快速以太网 (Fast Ethernet)
IEEE 802.3u 工作组规范 (1995, 6)。
特点: - 采用 CSMA/CD 媒体访问控制方式和 802.3 帧格式; - 100 BASE-TX 采用两对5类双绞线; - 100 BASE-T4 采用四对3类双绞线; - 网络最大长度 250m (10 Mbps 的经典以太网是 2500m)。
千兆以太网 (Gigabit Ethernet)
IEEE 802.3z (1998) 和 802.3ab 工作组规范。
特性: - 载波扩充:让硬件在普通的帧后面增加一些填充位,将帧的长度扩充到 512 字节,使网络最大距离延长到 200m。 - 帧突发:允许发送方将多个待发送帧级联在一起,一次传输出去。最大突发长度为 8192 字节。如果级联起来的整个突发仍然小于 512 个字节,则硬件会再次对它进行填充。 - 全双工。
无线局域网 (802.11)
WLAN:无线局域网,是计算机网络和无线通信技术相结合的产物,是有线网络的无线化延伸。
Wi-Fi:是一个创建于 IEEE 802.11
标准上的无线局域网技术,可等同于 802.11 的同义词。
无线局域网的主要标准是 802.11。
体系结构
接入点 (AP):转发该 WLAN
上的所有帧,具备无线至有线的桥接功能。
工作站 (Station):具备 WLAN 接口,能接入 WLAN
的主机。
分布式系统 (DS):一种有线网络,是 802.11
的逻辑组件,负责连接多个 AP,或将
AP连接至骨干网(如目前已知的以太网)。
基本服务集 (BSS) - 独立基本服务集 (IBSS, independent BSS):工作站之间相互可以直接通信(不需要通过 AP 转发)。 - 基础结构型基本服务集 (infrastructure BSS):工作站需先与接入点建立关联,接入点负责转发工作站之间的通信。 - 每个 BSS 都有一个6字节的识别符 BSSID,相当于 AP 的 MAC 地址。
扩展服务集 (ESS):将几个 BSS 连接为 ESS。
MAC 子层协议
带有物理侦听和虚拟侦听的 CSMA/CA 是 802.11 协议的核心。
802.11 允许把帧拆分为更小的单元段 (fragment),每个段有自己的校验和。
带冲突避免的 CSMA
802.11 支持两种操作模式 - 点协调功能 (PCF):由 AP 周期性地(每秒10~100次)广播一个信标帧,邀请站点申请服务,集中控制。
分布式协调功能 (DCF):分布式控制,采用带有冲突避免的 CSMA (CSMA/CA)。
DCF 是必须的,PCF 是可选的。
与以太网相比,CSMA/CA 有两个主要区别: - 早期的后退有助于避免冲突; - 利用确认来推断是否发生冲突,因为冲突无法被检测出来。
物理侦听/虚拟侦听
由于 WLAN 中各个站点发出的信号范围有限,使用 CSMA 时存在两个问题: - 隐藏终端问题:由于竞争者距离太远而导致站无法检测到潜在的竞争者,误以为可以发送数据。 - 暴露终端问题:站点侦听到信道上有帧在传送,错误地认为自己不能发送数据。
为了解决上述问题,802.11 定义信道侦听包括物理侦听和虚拟侦听两部分。 - 物理侦听:检测信道是否存在有效信号。 - 虚拟侦听:让源站将它要占用信道的时间通知给所有其他站,使其他站不需要侦听就能知道信道何时可能转为空闲。
网络分配向量 (NAV):每个帧携带一个 NAV
字段,说明这个帧所属的一系列数据将传输多长时间。
当一个站检测到正在信道中传输的 MAC 帧首部的 NAV 字段时,就调整自己的
NAV。
可选的 RTS/CTS 机制
使用 NAV 来防止隐藏终端在同一时间发送,与 MACA 类似。
不同之处: - A 发送数据帧时启动一个 ACK 计时器; -
当正确的数据帧到达后,B 用一个 ACK 帧回复 A,完成此次交流; - 如果 A 的
ACK 计时器超时前,ACK
没有返回,则可视为发生了一个冲突,经过一次后退整个协议重新开始运行; -
听到 RTS/CTS 的站会更新自己的 NAV 记录表示信道正忙。
RTS/CTS 的引入带来了延时和信道资源的消耗,因此该机制只用于预约长数据帧的信道。实际中,每个无线站点可设置一个 RTS 门限,仅当数据长度超过门限时才使用该机制。
时间间隔
一帧发送出去后,需要保持一段特定时间的空闲以便检查信道不在被用,然后任何站才可以发送帧。
短帧间间隔 (SIFS):最短的间隔;允许一次对话的各方具有优先抓住信道的机会,可以发送控制帧(如 ACK、RTS、CTS)或下一个段。
DCF 帧间隔 (DIFS):常规的数据帧之间的间隔;任何站都可以在介质空闲 DIFS 后尝试抓取信道发送一个新帧,采用通常的竞争规则。
仲裁帧间空间 (AIFS):有两个不同的优先级。
- AIFS1:小于 DIFS 但长于 SIFS;被 AP 用来把语音或其他高优先级流量移到行头。
- AIFS4:长于 DIFS;用来发送可以延迟到常规流量之后发送的背景流量。
- 完善的服务质量机制定义了四种不同的优先级别,分别具有不同的后退参数和不同的空闲参数。
扩展帧间间隔 (EIFS):最长;仅用于一个站刚刚收到坏帧或未知帧后报告问题。
时间间隔长度与媒介有关,速率高的物理层会使用较短的间隔;同样,不同的物理层帧间间隔也有所不同。
帧格式
帧控制 (Frame Control):2 个字节,包含 11 个子字段。
- 协议版本 (Protocol Version):2 比特,00。
- 类型 (Type):2 比特,数据帧、控制帧或管理帧。
- 子类型 (Subtype):4 比特,比如 RTS 或 CTS。
- To DS:1 比特,表明发送到分布式系统。
- From DS:1 比特,表明来自分布式系统。
- 更多段 (More fragment):1比特,表明后面还有更多的段。
- 重传 (Retry):1比特,表明这是以前发送的某一帧的重传。
- 电源管理 (Power management):1 比特,指明发送方进入节能模式。
- 更多数据 (More data):1 比特,表明发送方还有更多的帧需要发送给接收方。
- 受保护的 (Protected Frame):1 比特,表明该帧的帧体已经被加密。
- 顺序 (Order):1 比特,告诉接收方高层希望严格按照顺序来处理帧序列。
持续时间 (Duration):2个字节。
通告本帧和其确认帧将会占用信道多长时间,按微妙计时。
该字段会出现在所有帧中,包括控制帧,其他站用该字段来管理各自的 NAV 机制。地址:共有三个地址字段,每个均有 6 个字节。
- 地址1:接收方地址。
- 地址2:发送方地址。
- 地址3:当帧在一个客户端和网络中的另一点传输时,AP 是一个中继点,地址3指明了这个远程端点。
- 当 To DS 和 From DS 都置1时,在序号字段后有 6 个字节的地址4。
序号 (Sequence):2 个字节。
帧的编号,用于重组帧片段以及丢弃重复帧。
有 4 位段序号和 12 位帧序号。相当于已传帧的计数器,计数器从0计数,每传输一帧序号+1,取 4096 的模数。数据 (Data):最多可有 2312 个字节。
有效荷载中前面部分字节的格式称为逻辑链路控制 (LLC),标识有效荷载应该递交给哪个高层协议处理(比如 IP)。帧校验序列 (Frame check sequence):4 个字节。
32 位 CRC。
RTS
共20字节:帧控制、持续时间、目的地址、源地址和检错字段。
CTS 和
ACK共14字节:帧控制、数据长度、目的地址和检错字段。
局域网互联设备
网桥
- 用于连接局域网的互连设备。
- 工作在数据链路层,通过检查数据链路层地址(MAC 地址)来转发帧,必要时进行帧格式转换。
- 能隔离以太网中的碰撞域,但不能隔离广播域。
- 丢弃出错帧。
- 包括透明网桥和源路由选择网桥,以下两种都是透明网桥。
学习网桥
为每个网桥配备一个大的哈希表,该表列出每个可能的目的地以及它们隶属的输出端口。
当网桥第一次接入网络时,所有哈希表都是空的,采用泛洪算法:
对于每个发向未知目标地址的入境帧,网桥将它输出到所有端口,除了它来的输入端口。
采用后向学习法:
通过检查每个端口发送的帧的源地址,网桥可以知道通过该端口可以访问到哪些机器,于是在哈希表上构造相应的一对地址和端口。
为了处理动态的拓扑结构:
构造出哈希表后,帧的到达时间也被记录在相应的表项中。
当一帧到达时,如果它的源地址已经在表中,那么对应表项中的时间值被更新为当前时间。
网桥中存在一个进程定期扫描哈希表,将时间值在几分钟之前的表项都清除掉。
对到达网桥的入境帧,整个转发过程如下:
- 如果去往目的地址的端口与源端口相同,则丢弃该帧; -
如果去往目的地址的端口与源端口不同,则转发该帧到目标端口; -
如果目标端口未知,则使用泛洪算法,将该帧转发到所有端口,除了它入境的哪一个。
网桥可看作链路层设备,一个具有 k 个端口的网桥将有 k 个 MAC 和物理层实例。
生成树网桥
为了提高可靠性,在网桥之间使用冗余链路,如在一对网桥之间并行设置两条链路。
为了解决拓扑环路问题:
让网桥之间相互通信,用一棵可以到达每个网桥的生成树覆盖实际的拓扑结构。
- 选择具有最低标识符的网桥为生成树的根。 -
构造从根到每个网桥的最短路径树,碰到平局时,选择一条经过更低标识符的网桥的路径。
- 网桥在被指消息中包括与根的距离,每个网桥记住它找到的到根的最短路径。 -
网桥关闭不属于最短路径一部分的端口。
存在的问题
在连接不同类型的局域网(如 802.3 和 802.11)时,网桥的转发存在以下主要问题。
帧格式不同。
需要重新组帧,某些域(如 802.11 帧的持续时间)需要丢弃或产生,还需要重新生成校验和。数据速率不同,802.11 速率较低。
网桥需要用缓冲区存储来不及传输的帧。最大帧的长度不同。
802 标准本身不提供把长帧分片的功能,对于太长的帧只能丢弃。安全性问题。
802.11 支持加密,802.3 不支持。服务质量问题。
802.11 采用 PCF 可以支持 QoS,802.3 不支持。
交换机
交换机源自于多端口网桥,采用存储-转发方式在各端口之间进行数据帧的交换。
交换机检测每个到达数据帧的帧头,根据数据帧的目的地址查找输出端口。
如果地址查找表中没有该表项,交换机就向所有端口(除了接收端口)转发。
地址查找表是通过帧的源地址与到达端口的对应关系建立的。
工作在数据链路层,能隔离碰撞域。
交换式局域网:采用星型拓扑结构,用交换机连接主机。
不同设备对比
帧(由数据链路层构造)包含: - 帧头 - 数据包头 - TCP 头 - 用户数据 - CRC
数据包(由网络层构造)包含其中的: - 数据包头 - TCP 头 - 用户数据
工作层次 | 设备 | 功能 |
---|---|---|
物理层 | 中继器 | 模拟设备,在物理层透明地复制比特流,以补偿信号的衰减。 |
物理层 | 集线器 | 将多条输入线路连接在一起,不隔离碰撞域,连接到同一个集线器上的所有线路必须以相同的速率运行。 |
数据链路层 | 网桥,交换机 | 可以隔离碰撞域,不能隔离广播域;在不同的 LAN 间存储转发帧,必要时进行链路层的协议转换。 |
网络层 | 路由器 | 在不同的网络间存储转发分组,必要时进行网络层的协议转换。可以隔离碰撞域和广播域。可连接不同类型的网络。 |
传输层 | 传输网关 | 对高层协议进行转换。将两台使用了不同面向连接传输协议的计算机连接起来。传输网关将数据包从一个连接复制到另一个连接上,并根据需要对数据包重新进行格式化。 |
应用层 | 应用网关 | 对高层协议进行转换。理解数据的格式和内容,将消息从一种格式转换为另一种格式。 |