1. 概述
在本篇文章中,我们将深入探讨 OSI 模型中数据链路层(Data Link Layer, DLL)的两个子层:LLC(逻辑链路控制)和 MAC(媒体访问控制)。我们将了解它们的职责、工作机制以及常见的协议类型,帮助你更深入地理解网络通信中这一关键环节。
2. 数据链路层简介
OSI 模型将网络通信划分为七层,其中 数据链路层(DLL)位于第二层,处于物理层(第一层)和网络层(第三层)之间。
DLL 的核心职责包括:
- 帧封装(Framing)
- 流量控制(Flow Control)
- 差错控制(Error Control)
- 拥塞控制(Congestion Control)
为了更好地组织功能和提供服务,DLL 被进一步划分为两个子层:
- LLC(Logical Link Control):逻辑链路控制
- MAC(Media Access Control):媒体访问控制
LLC 负责与通信链路类型无关的通用控制逻辑,而 MAC 则负责处理共享链路上的访问控制,尤其是在广播链路中。
3. 数据链路层中的链路类型
DLL 中的链路可以分为两种类型:
- 专用链路(Dedicated Link, DL):点对点连接,只使用链路的一部分带宽
- 广播链路(Broadcast Link, BL):多个节点共享整条链路带宽
LLC 子层适用于两种链路类型,而 MAC 子层主要处理广播链路中的访问控制问题。
3.1 数据链路层子层结构图
下图展示了数据链路层的典型子层结构:
4. LLC 子层(逻辑链路控制)
LLC 是 DLL 的上层子层,负责节点之间的通信控制,无论是点对点还是广播链路。
LLC 的三大核心功能是:
✅ 帧封装(Framing)
✅ 流量控制(Flow Control)
✅ 差错控制(Error Control)
4.1 帧封装(Framing)
帧封装是将数据打包成帧的过程,通过添加源地址(SA)和目的地址(DA)来标识帧的来源和去向。
帧可以分为:
- 固定长度帧(Fixed-size):无需帧边界标识
- 可变长度帧(Variable-size):使用分隔符(flag)标识帧边界
可变长度帧的两种协议:
- 字节导向协议(Byte-oriented):使用字节填充(Byte-stuffing)来避免标志字符出现在数据中
- 位导向协议(Bit-oriented):使用位填充(Bit-stuffing)来避免标志模式(如
0111110
)出现在数据中
4.2 流量控制(Flow Control)
流量控制用于平衡发送节点和接收节点之间的数据传输速率。常用方法是在发送和接收端设置缓冲区(Buffer)来暂存数据帧。
4.3 差错控制(Error Control)
LLC 层通过 CRC(循环冗余校验)机制来检测帧是否损坏。常见处理方式包括:
- 丢弃损坏帧
- 接收正确帧并选择性回传确认(ACK)
4.4 LLC 协议类型
LLC 子层支持两种通信模式:
- 无连接协议(Connectionless):帧之间无依赖,独立发送
- 面向连接协议(Connection-oriented):先建立逻辑连接,再传输数据,最后释放连接
4.5 LLC 子层协议分类
LLC 中常见的协议包括:
PAR(Positive Acknowledgment with Retransmission)
发送方等待确认,超时未收到则重传ARQ(Automatic Repeat Request)
分为:- Stop-and-Wait(停等协议)
- Pipeline(流水线协议)
- Go-Back-N:接收方必须按序接收
- Selective Retransmission(选择性重传):允许乱序接收
4.6 常见 LLC 协议标准
HDLC(High-Level Data Link Control)
位导向协议,支持 DL 和 BL,使用停等机制,定义三种帧类型:- 信息帧(Informational)
- 监控帧(Supervisory)
- 无编号帧(Unnumbered)
PPP(Point-to-Point Protocol)
用于点对点连接,支持多路复用不同数据载荷,实现连接导向服务和认证机制
5. MAC 子层(媒体访问控制)
MAC 子层主要负责 广播链路中的拥塞控制和访问协调。它接收来自 LLC 层的帧,添加物理地址(即 MAC 地址)后进行转发。
MAC 协议可分为三大类:
✅ 随机访问协议(Random Access Protocols, RAPs)
✅ 受控访问协议(Controlled Access Protocols, CAPs)
✅ 信道化协议(Channelization Protocols, CPs)
5.1 随机访问协议(RAPs)
也称争用协议,节点无需授权即可发送数据,常见协议包括:
- ALOHA:最早的随机访问协议
- CSMA(Carrier Sense Multiple Access):发送前监听信道
- CSMA/CD(冲突检测):检测到冲突后处理
- CSMA/CA(冲突避免):通过退避机制避免冲突(常用于无线网络)
5.2 受控访问协议(CAPs)
节点需协商授权后才能发送数据,常见方式包括:
- 预约(Reservation):时间划分为周期,每个周期内先预约后发送
- 轮询(Polling):主设备控制所有通信,次设备被动响应
- 令牌传递(Token Passing):令牌在节点间传递,持有者可发送数据
5.3 信道化协议(CPs)
通过时间、频率或编码划分共享带宽,常见协议包括:
- FDMA(频分多址):按频率划分带宽
- TDMA(时分多址):按时间片划分
- CDMA(码分多址):使用编码区分用户
- OFDMA(正交频分多址):结合 FDMA 和 TDMA,高效利用频谱资源
下图展示了 MAC 子层协议的完整分类:
6. 总结
本文详细介绍了数据链路层的两个子层:LLC 和 MAC。
- LLC 负责帧封装、流量控制和差错控制,适用于点对点和广播链路
- MAC 负责广播链路中的访问控制,防止冲突,确保高效通信
我们还分析了多个关键协议,包括 HDLC、PPP、CSMA/CD、CSMA/CA、FDMA、TDMA、CDMA 等,这些协议构成了现代网络通信的基础。
理解 DLL 子层的结构和功能,有助于你更好地掌握网络通信机制,尤其在设计或调试网络应用、协议栈实现、网络设备开发等场景中具有重要意义。