226 lines
9.0 KiB
Markdown
226 lines
9.0 KiB
Markdown
## 数据链路层
|
||
|
||
### 1. 数据链路层功能
|
||
|
||
| 功能 | 说明 |
|
||
|------|------|
|
||
| 组帧 | 将网络层数据包封装成帧,添加首部和尾部 |
|
||
| 差错控制 | 检测或纠正传输中的比特错误 |
|
||
| 流量控制 | 协调收发双方速率,防止接收方溢出 |
|
||
| 介质访问控制 | 控制多个节点共享信道时的有序访问(MAC 子层) |
|
||
| 链路管理 | 建立、维护、释放数据链路连接 |
|
||
|
||
> **服务访问点(SAP)**:网络层与数据链路层的接口,帧中通过类型字段(EtherType)标识上层协议。
|
||
|
||
### 2. 组帧(Framing)
|
||
|
||
#### 2.1 字符计数法
|
||
|
||
- 帧首部用计数字段标识帧长
|
||
- 计数字段出错则无法同步,现已很少使用
|
||
|
||
#### 2.2 字符填充法
|
||
|
||
- 用特殊标志字符界定帧的起止(如 `DLE STX` / `DLE ETX`)
|
||
- 数据中出现标志字符时在其前插入转义字符 `DLE`
|
||
|
||
#### 2.3 零比特填充法(HDLC)
|
||
|
||
- 以 `01111110` 作为帧边界
|
||
- 数据中每出现连续的 5 个 `1` 后自动插入一个 `0`(透明传输)
|
||
- 接收端检测到 `01111110` 即帧边界,自动删除数据中的填充 `0`
|
||
|
||
#### 2.4 物理层编码违例法
|
||
|
||
- 利用物理层编码的冗余信号表示帧边界(如曼彻斯特编码的高-高/低-低)
|
||
|
||
### 3. 差错控制
|
||
|
||
#### 3.1 检错编码
|
||
|
||
| 编码 | 原理 | 特点 |
|
||
|------|------|------|
|
||
| 奇偶校验 | 添加一位使 `1` 个数为奇/偶 | 只能检出奇数位错误,检错率低 |
|
||
| 循环冗余校验(CRC) | 数据多项式除以生成多项式,余数作为 FCS | 检错能力强,硬件实现简单 |
|
||
|
||
**CRC 步骤**:
|
||
|
||
1. 选定生成多项式 $G(x)$,阶数为 $r$
|
||
2. 数据后补 $r$ 个 0,模 2 除以 $G(x)$(异或运算)
|
||
3. 余数($r$ 位)即为帧检验序列(FCS),替换补的 0
|
||
4. 接收端用同一 $G(x)$ 除整个帧,余数为 0 则无错
|
||
|
||
> **CRC 是检错码,不是纠错码**,发现错误后要求重传。
|
||
|
||
#### 3.2 纠错编码(海明码)
|
||
|
||
**海明不等式**:$2^k \ge n + k + 1$,其中 $n$ 为有效数据的位数,$k$ 为校验位的位数。
|
||
|
||
**校验位位置**:放在 $2^{i}$ 位置($i = 0,1,2,\dots$),即第 $1,2,4,8,\dots$ 位。
|
||
|
||
**检错与纠错**:每个校验位负责一组数据位,出错时多个校验位联合定位错误位,可纠正 1 位错误。
|
||
|
||
| 能力 | 说明 |
|
||
|------|------|
|
||
| 检 2 位错 + 纠 1 位错 | 增加一位全局奇偶校验位实现 |
|
||
| 仅纠 1 位错 | 标准海明码 |
|
||
|
||
### 4. 流量控制与可靠传输机制
|
||
|
||
#### 4.1 停止-等待协议(Stop-and-Wait)
|
||
|
||
- 发送方每发一帧,等待 ACK 后再发下一帧
|
||
- 超时未收到 ACK 则重传(需编号区分重复帧)
|
||
- **信道利用率**很低:$U = \dfrac{T_D}{T_D + RTT + T_A}$
|
||
|
||
> 在卫星链路等高延迟信道中效率极低,仅适用于低带宽或简单场景。
|
||
|
||
#### 4.2 后退 N 帧协议(GBN)
|
||
|
||
- 发送窗口 $W_T > 1$,接收窗口 $W_R = 1$
|
||
- 发送方可连续发多帧,接收方只按序接收
|
||
- 某帧出错 → 丢弃该帧及之后所有帧,发送方超时后从出错帧开始全部重发
|
||
- 信道利用率高于停等,但大量重传浪费带宽
|
||
|
||
#### 4.3 选择重传协议(SR)
|
||
|
||
- 发送窗口 $W_T > 1$,接收窗口 $W_R > 1$
|
||
- 接收方缓存乱序到达的正确帧,仅要求重传出错帧
|
||
- 窗口大小限制:$W_{\max} = 2^{n-1}$($n$ 为帧序号位数)
|
||
- 信道利用率最高,但实现复杂
|
||
|
||
**三个协议对比**:
|
||
|
||
| 协议 | 发送窗口 | 接收窗口 | 重传策略 | 利用率 |
|
||
|:----|:-------:|:-------:|---------|:-----:|
|
||
| 停等 | 1 | 1 | 出错帧超时重发 | 最低 |
|
||
| GBN | $>1$ | 1 | 从出错帧起全部重传 | 中等 |
|
||
| SR | $>1$ | $>1$ | 仅重传出错帧 | 最高 |
|
||
|
||
> **滑动窗口机制**:帧序号位数 $n$ 决定可用序号空间 $[0, 2^n-1]$,窗口大小不得超过序号空间的一半或总数(SR 要求 $W_T + W_R \le 2^n$)。
|
||
|
||
### 5. 介质访问控制(MAC)
|
||
|
||
#### 5.1 信道划分介质访问控制
|
||
|
||
基于**复用技术**,各节点共享信道而互不干扰:
|
||
|
||
| 方式 | 原理 | 典型应用 |
|
||
|:----|------|---------|
|
||
| 频分多路复用(FDMA) | 各节点占用不同频率 | 广播电视、ADSL |
|
||
| 时分多路复用(TDMA) | 各节点占用不同时隙 | 2G GSM |
|
||
| 码分多路复用(CDMA) | 各节点使用正交码序列 | 3G 移动通信 |
|
||
| 波分多路复用(WDMA) | 各节点使用不同波长 | 光纤通信 |
|
||
|
||
#### 5.2 随机访问介质访问控制
|
||
|
||
| 协议 | 核心思想 | 特点 |
|
||
|:----|---------|------|
|
||
| ALOHA | 有数据直接发,冲突后随机等待重发 | 纯 ALOHA 利用率 $1/2e$,时隙 ALOHA $1/e$ |
|
||
| CSMA | 发前先听信道,忙则等待 | 非坚持/1-坚持/p-坚持三种策略 |
|
||
| CSMA/CD | 边发边听,检测到冲突立即停止(有线) | 用于以太网,最小帧长确保冲突检测 |
|
||
| CSMA/CA | 发前先预约信道(无线) | 用于 802.11 WLAN,避免隐蔽站问题 |
|
||
|
||
**CSMA/CD 要点**:
|
||
|
||
- 争用期(碰撞窗口)= $2\tau$($\tau$ 为单程传播时延)
|
||
- 最小帧长 = 争用期 × 数据传输速率
|
||
- 二进制指数退避算法:第 $i$ 次冲突后从 $[0, 2^i-1]$ 随机选退避时间
|
||
|
||
#### 5.3 轮询访问介质访问控制
|
||
|
||
| 方式 | 原理 | 特点 |
|
||
|:----|------|------|
|
||
| 轮询(Polling) | 主节点依次询问从节点 | 无冲突,但有轮询开销和等待延迟 |
|
||
| 令牌传递(Token Passing) | 持有令牌的节点才能发送 | 用于令牌环网和令牌总线 |
|
||
|
||
### 6. 局域网
|
||
|
||
#### 6.1 以太网(Ethernet,IEEE 802.3)
|
||
|
||
**MAC 地址**:48 位全球唯一地址,前 24 位为 OUI(厂商代码),后 24 位为序列号。
|
||
|
||
**以太网帧格式**:
|
||
| 字段 | 前导码 | 定界符 | MAC 目的地址 | MAC 源地址 | 长度/类型 | 数据 | 填充 | FCS(CRC) |
|
||
|:----|:-----:|:-----:|:----------:|:--------:|:--------:|:---:|:---:|:--------:|
|
||
| 长度(B) | 7 | 1 | 6 | 6 | 2 | 46-1500 | 可变 | 4 |
|
||
|
||
> **最小帧长 64B**:保证在检测到冲突前帧尚未发送完毕(CSMA/CD 要求)。数据不足 46B 时需填充。
|
||
|
||
**以太网速率演进**:
|
||
| 标准 | 速率 | 介质 |
|
||
|:----|:---:|------|
|
||
| 10BASE-T | 10 Mbps | 双绞线 |
|
||
| 100BASE-T(快速以太网) | 100 Mbps | 双绞线 |
|
||
| 1000BASE-T(千兆以太网) | 1 Gbps | 双绞线/光纤 |
|
||
| 10GBASE-T(万兆以太网) | 10 Gbps | 光纤/双绞线 |
|
||
|
||
#### 6.2 虚拟局域网(VLAN)
|
||
|
||
- 基于交换机端口/MAC 地址/协议/IP 子网等划分逻辑工作组
|
||
- **IEEE 802.1Q 帧标记**:在标准以太网帧中插入 4B VLAN 标记(VID 12 位),最大 4096 个 VLAN
|
||
- 隔离广播域,提高安全性和灵活性
|
||
|
||
#### 6.3 无线局域网(WLAN,IEEE 802.11)
|
||
|
||
**CSMA/CA**:发送前先等待 DIFS,然后退避随机时间;接收方回复 ACK 前等待 SIFS。
|
||
|
||
**帧类型**:
|
||
| 类型 | 用途 |
|
||
|:----|------|
|
||
| 管理帧 | 关联、认证、信标(Beacon) |
|
||
| 控制帧 | RTS/CTS、ACK |
|
||
| 数据帧 | 传输上层数据 |
|
||
|
||
> **隐蔽站问题**:站 A 和 C 分别位于 AP 两侧,彼此无法感知对方发送,使用 RTS/CTS(请求发送/允许发送)解决。
|
||
|
||
### 7. 广域网
|
||
|
||
#### 7.1 PPP 协议(点对点协议)
|
||
|
||
- 提供**点对点**链路上的数据封装
|
||
- 三个组件:HDLC 封装、LCP(链路控制协议)、NCP(网络控制协议)
|
||
- **透明传输**:异步链路用字符填充法,同步链路用零比特填充法
|
||
- 无需流量控制和纠错(只做检错)
|
||
|
||
> PPP 常用于拨号上网、PPPoE(以太网上的 PPP,宽带接入)。
|
||
|
||
#### 7.2 HDLC 协议(高级数据链路控制)
|
||
|
||
- 面向比特的同步链路控制协议
|
||
- 三种站:主站(命令)、从站(响应)、复合站
|
||
- 三种帧:**信息帧(I)**、**监控帧(S)**、**无编号帧(U)**
|
||
- 使用零比特填充法透明传输
|
||
|
||
**PPP vs HDLC**:
|
||
| 特性 | PPP | HDLC |
|
||
|:----|:---:|:----:|
|
||
| 面向方式 | 字节 | 比特 |
|
||
| 透明传输 | 字符填充/零比特填充 | 零比特填充 |
|
||
| ACK | 不需要 | 需要 |
|
||
| 差错控制 | 只检错 | 检错 + 重传 |
|
||
| 流量控制 | 不支持 | 滑动窗口 |
|
||
|
||
### 8. 数据链路层设备
|
||
|
||
| 设备 | 层级 | 转发依据 | 功能 |
|
||
|:----|:---:|---------|------|
|
||
| 网桥 | 2 | MAC 地址 | 隔离冲突域(不隔离广播域),连接两个网段 |
|
||
| 交换机 | 2 | MAC 地址 | 多端口的网桥,全双工,每个端口独立带宽 |
|
||
|
||
> **冲突域**:同一时刻只能有一台设备发送数据的区域(交换机每个端口独立冲突域)。
|
||
> **广播域**:广播帧能到达的范围(交换机不隔离广播域,VLAN 可隔离)。
|
||
|
||
**自学习算法**(交换机/网桥地址表建立):
|
||
1. 收到帧时记录源 MAC 地址及入端口
|
||
2. 目的 MAC 在表中 → 只转发到对应端口
|
||
3. 目的 MAC 不在表中 → 从所有端口广播(洪泛)
|
||
4. 地址表条目有老化时间
|
||
|
||
**交换机三种交换方式**:
|
||
| 方式 | 转发时机 | 延迟 | 错误检测 |
|
||
|:----|---------|:---:|:-------:|
|
||
| 直通交换 | 只查目的 MAC 地址即转发 | 低 | 无 |
|
||
| 存储转发 | 完整接收一帧,查 FCS 无误后转发 | 高 | 完整检测 |
|
||
| 无碎片交换 | 接收前 64B(最小帧长)后转发 | 中 | 可滤除冲突碎片 |
|