第三章 数据链路层 复习总结
一、数据链路层概述
1. 数据链路层的作用
数据链路层负责的是:
节点 → 节点
之间的数据传输。
注意:
数据链路层不是端到端传输,而是相邻节点之间的传输。
物理层只负责传输比特流,例如:
0 和 1 的电信号
而数据链路层要解决的问题是:
- 如何组织比特
- 如何识别数据边界
- 如何检测传输错误
- 如何在共享信道中协调多个设备发送数据
可以理解为:
物理层负责“把比特送出去”
数据链路层负责“把比特组织成帧,并尽量保证相邻节点之间正确传输”
2. 链路与数据链路
链路
链路是指:
两个节点之间的物理线路
例如:
- 双绞线
- 光纤
- 无线信道
数据链路
数据链路是:
逻辑上的链路
它由:
- 硬件
- 软件
- 协议
共同实现。
可以记为:
链路 + 协议 = 数据链路
3. 帧
帧是:
数据链路层的协议数据单元,即 PDU
网络层传下来的数据报,在数据链路层会被封装成帧。
过程如下:
网络层数据报
↓
加帧首部和帧尾部
↓
形成帧
↓
交给物理层发送
二、两种信道类型
1. 点对点信道
点对点信道是:
一对一通信
例如:
- PPP
- 路由器之间的链路
特点:
- 通信双方固定
- 不存在多个设备争用信道的问题
- 不会发生冲突
- 不需要 CSMA/CD
2. 广播信道
广播信道是:
多个设备共享同一信道
例如:
- 传统总线型以太网
- Hub 网络
特点:
- 多个主机共享信道
- 可能多个设备同时发送数据
- 可能发生碰撞
- 需要媒体接入控制协议
三、数据链路层三个基本问题
数据链路层最重要的三个基本问题是:
封装成帧
透明传输
差错检测
1. 封装成帧
封装成帧就是在数据前后添加:
帧首部
帧尾部
从而形成完整的帧。
例如:
FLAG 数据 FLAG
这样接收方就能知道:
哪里是帧的开始
哪里是帧的结束
2. 透明传输
问题
如果数据内容中刚好出现了帧定界符,例如:
FLAG
接收方可能会误以为这是:
帧的边界
这样就会造成帧识别错误。
解决方法
透明传输常用两种方法:
字节填充
零比特填充
3. 差错检测
数据在传输过程中可能会因为噪声、干扰等原因出现比特错误。
数据链路层常用:
CRC 循环冗余校验
进行差错检测。
注意:
CRC 只能检错,不能纠错。
也就是说:
CRC ≠ 可靠传输
因为 CRC 没有:
- 确认机制
- 重传机制
- 纠错机制
真正的可靠传输一般由高层协议完成,例如 TCP。
四、字节填充与零比特填充
1. 字节填充
字节填充常用于:
PPP 的异步传输
PPP 中:
FLAG = 0x7E
ESC = 转义字符
填充规则:
ESC → ESC ESC
FLAG → ESC FLAG
例如,原数据为:
A B ESC FLAG D
填充后为:
A B ESC ESC ESC FLAG D
这样接收方就知道,数据中的 FLAG 不是真正的帧边界。
2. 零比特填充
零比特填充常用于:
同步传输
规则是:
连续 5 个 1 后插入 1 个 0
PPP 的 Flag 字段为:
01111110
即:
0x7E
其中包含连续 6 个 1。
为了避免数据中出现和 Flag 一样的比特序列,就规定:
只要数据中连续出现 5 个 1,就自动插入 1 个 0。
例如,原数据为:
01111110
填充后为:
011111010
接收方收到后,再把连续 5 个 1 后面的 0 删除,恢复原始数据。
五、CRC 循环冗余校验
1. CRC 的基本思想
CRC 的基本思想是:
发送方用数据除以生成多项式,得到余数。
然后把余数添加到数据后面一起发送。
这个余数就是:
FCS 帧检验序列
2. 模 2 运算
CRC 使用的是:
模 2 除法
模 2 运算本质上就是:
异或运算
基本规则:
1 ⊕ 1 = 0
1 ⊕ 0 = 1
0 ⊕ 1 = 1
0 ⊕ 0 = 0
特点:
不进位
不借位
3. CRC 计算步骤
第一步:数据后补 0
如果生成多项式最高次为 r,则在数据后面补:
r 个 0
第二步:模 2 除法
用补 0 后的数据除以生成多项式,得到:
r 位余数
第三步:添加余数
把余数添加到原数据后面,形成最终发送的帧。
原数据 + FCS
4. CRC 的考试重点
必须记住:
CRC 只能检错,不能纠错。
如果接收方检测出错误,通常会:
丢弃该帧
数据链路层本身不一定负责重传。
六、PPP 协议
1. PPP 协议含义
PPP 全称:
Point-to-Point Protocol
即:
点对点协议
PPP 主要用于:
点对点链路
例如:
- 用户拨号上网
- 路由器之间的链路
2. PPP 帧格式
PPP 帧格式为:
Flag | Address | Control | Data | FCS | Flag
3. PPP 的 Flag 字段
PPP 的 Flag 字段为:
01111110
也就是:
0x7E
作用:
表示帧的开始和结束
4. PPP 的特点
PPP 支持:
- 差错检测
- 身份认证
- 动态 IP 分配
- 多种网络层协议
PPP 不支持:
- 差错纠正
- 可靠传输
5. PPP 的工作过程
PPP 建立连接时,通常经历以下过程:
物理链路建立
↓
LCP 链路控制协议协商
↓
身份鉴别
↓
NCP 网络控制协议协商
↓
链路打开,开始传输数据
↓
NCP 释放网络层连接
↓
LCP 释放数据链路连接
↓
物理链路断开
6. LCP
LCP 全称:
Link Control Protocol
即:
链路控制协议
作用:
- 建立链路
- 配置链路
- 测试链路
- 释放链路
7. 鉴别
PPP 支持身份认证,例如:
- PAP
- CHAP
作用是:
验证用户是否合法
8. NCP
NCP 全称:
Network Control Protocol
即:
网络控制协议
作用是:
配置网络层参数
最典型的是:
给用户动态分配 IP 地址
七、局域网基础
1. 局域网特点
局域网的特点:
- 覆盖范围小
- 数据率高
- 误码率低
2. IEEE 802 标准
IEEE 802 是局域网和城域网标准。
常见标准:
IEEE 802.3 → 以太网
IEEE 802.11 → 无线局域网 WiFi
八、CSMA/CD 协议
1. 为什么需要 CSMA/CD?
在广播信道中,多个设备共享同一条信道。
如果多个设备同时发送数据,就会发生:
碰撞
因此需要 CSMA/CD 协议来协调发送。
2. CSMA/CD 的含义
CSMA/CD 全称:
Carrier Sense Multiple Access with Collision Detection
即:
载波监听多点接入 / 碰撞检测
3. CSMA/CD 的核心思想
1. 先听后发
发送前先监听信道。
如果信道空闲,就发送。
如果信道忙,就等待。
载波监听:先听后发
2. 边听边发
发送数据的同时继续监听信道,判断是否发生碰撞。
碰撞检测:边听边发
3. 冲突停止
如果检测到碰撞,立即停止发送。
同时发送:
强化碰撞信号
目的是让所有主机都知道发生了碰撞。
4. 延迟重发
发生碰撞后,不会立刻重发,而是采用:
截断二进制指数退避算法
等待一段随机时间后再重发。
九、争用期与最短帧长
1. 传播时延
传播时延是信号在链路上传播所需要的时间。
公式:
τ = 距离 / 传播速度
其中:
τ 表示单程传播时延
2. 发送时延
发送时延是把一帧数据全部发送到信道上所需要的时间。
公式:
T0 = L / C
其中:
T0:发送时延
L:帧长,单位 bit
C:数据率,单位 bit/s
3. 争用期
争用期定义为:
2τ
即:
往返传播时延
意义:
发送方必须在 2τ 内检测到碰撞。
4. 最短帧长条件
为了保证发送方在发送过程中能够检测到碰撞,必须满足:
T0 ≥ 2τ
也就是:
发送时延 ≥ 往返传播时延
如果帧太短,就可能出现:
帧已经发送完了
碰撞信号还没返回
这样发送方就无法知道发生了碰撞。
5. 最短帧长公式
由:
T0 = L / C
以及:
T0 ≥ 2τ
可得:
Lmin = 2τ × C
其中:
Lmin:最短帧长
τ:单程传播时延
C:数据率
6. 以太网最短帧长
以太网规定最短帧长为:
64B
即:
512bit
这个数字非常重要,考试高频。
十、退避算法
1. 基本退避时间
CSMA/CD 中的基本退避时间是:
2τ
也就是:
争用期
2. 随机退避
发生碰撞后,从以下范围随机选择一个整数 r:
r ∈ [0, 2^k – 1]
其中:
k = min(重传次数, 10)
3. 退避时间
退避时间公式:
退避时间 = r × 2τ
4. 最大重传次数
最多重传:
16 次
如果仍然失败,则:
丢弃该帧,并向高层报告
十一、信道利用率
1. 最大信道利用率
CSMA/CD 中,信道利用率最大值为:
Smax = T0 / (T0 + τ)
令:
a = τ / T0
则:
Smax = 1 / (1 + a)
2. 如何提高信道利用率?
要提高信道利用率,需要让:
a << 1
也就是:
τ / T0 很小
含义是:
- 帧不能太短
- 网络距离不能太长
- 传播时延不能太大
- 数据发送时间相对传播时间要足够长
十二、以太网基础
1. 以太网特点
以太网的特点:
- 无连接
- 不可靠
- 尽最大努力交付
- 使用曼彻斯特编码
- 传统共享式以太网使用 CSMA/CD
2. 以太网为什么不可靠?
以太网可以进行:
差错检测
但是如果检测出错误,只会:
丢弃该帧
不会进行:
- 确认
- 重传
- 纠错
所以以太网提供的是:
无连接、不可靠、尽最大努力交付
可靠传输通常由高层协议实现,例如 TCP。
十三、Hub 与 Switch
1. Hub 集线器
Hub 工作在:
物理层
特点:
- 共享信道
- 半双工
- 使用 CSMA/CD
- 所有端口属于同一个冲突域
- 不隔离广播域
2. Hub 的拓扑特点
Hub 物理上是:
星型拓扑
但逻辑上是:
总线拓扑
所以:
Hub 网络中仍然会发生冲突。
3. Switch 交换机
Switch 工作在:
数据链路层
特点:
- 点对点链路
- 通常全双工
- 不使用 CSMA/CD
- 每个端口是一个独立冲突域
- 默认不隔离广播域
4. Hub 和 Switch 对比
| 工作层次 | 物理层 | 数据链路层 |
| 通信方式 | 半双工 | 通常全双工 |
| 是否共享信道 | 是 | 否 |
| 是否使用 CSMA/CD | 是 | 通常不用 |
| 冲突域 | 所有端口一个冲突域 | 每端口一个冲突域 |
| 广播域 | 不隔离 | 默认不隔离 |
十四、冲突域与广播域
1. 冲突域
冲突域是:
可能发生碰撞的范围
Hub 的冲突域
整个 Hub 是一个冲突域
Switch 的冲突域
交换机每个端口是一个冲突域
所以交换机可以隔离冲突域。
2. 广播域
广播域是:
广播帧能够到达的范围
普通二层交换机
普通二层交换机默认:
不隔离广播域
VLAN 和路由器
VLAN 和路由器可以:
隔离广播域
十五、交换机自学习
1. MAC 地址表
交换机内部维护一张 MAC 地址表,记录:
MAC 地址 → 接口
例如:
A → 1号端口
B → 2号端口
2. 学习规则
交换机学习时看的是:
源 MAC 地址
例如:
交换机从 1 号端口收到 A 发来的帧
它就学习:
A → 1号端口
注意:
交换机根据源地址学习,根据目的地址转发。
3. 转发规则
情况一:目的地址已知
如果交换机知道目的 MAC 在哪个接口,就:
明确转发
只向对应接口发送。
情况二:目的地址未知
如果目的 MAC 不在交换表中,就:
泛洪
也就是:
除进入接口外,向所有其他接口转发
情况三:目的接口等于进入接口
如果查表发现目的接口和进入接口相同,说明目标主机和源主机在同一侧。
此时交换机:
直接丢弃该帧
4. 交换表老化
交换机表项不是永久保存的。
如果长时间没有收到某个 MAC 地址发来的帧,对应表项会自动删除。
原因:
- 主机可能移动位置
- 网卡可能更换
- 网络拓扑可能变化
十六、泛洪、广播、明确转发的区别
1. 明确转发
交换机知道目标 MAC 地址在哪个接口。
因此只向目标接口发送。
已知目的地址 → 明确转发
2. 泛洪
交换机不知道目标 MAC 地址在哪个接口。
于是向除进入接口外的所有接口发送。
未知单播帧 → 泛洪
3. 广播
广播是发送方本来就想发给所有主机。
广播 MAC 地址为:
FF-FF-FF-FF-FF-FF
交换机收到广播帧后,也会向除进入接口外的其他接口转发。
4. 泛洪不等于广播
两者区别:
广播:发送方主动发给所有主机
泛洪:交换机不知道目的 MAC,只能向其他端口都发送
十七、MAC 地址
1. MAC 地址特点
MAC 地址特点:
- 48 位
- 6 字节
- 全球唯一
- 属于数据链路层地址
2. MAC 地址存储位置
MAC 地址通常固化在:
网卡 ROM
3. 三种 MAC 帧
单播帧
一对一
广播帧
一对全体
广播 MAC 地址为:
FF-FF-FF-FF-FF-FF
多播帧
一对多
十八、以太网 MAC 帧格式
1. Ethernet V2 帧格式
Ethernet V2 帧格式为:
目的地址 | 源地址 | 类型 | 数据 | FCS
2. 字段长度
| 目的地址 | 6B | 接收方 MAC 地址 |
| 源地址 | 6B | 发送方 MAC 地址 |
| 类型 | 2B | 标识上层协议 |
| 数据 | 46~1500B | 上层数据 |
| FCS | 4B | CRC 差错检测 |
3. 类型字段
类型字段用于标识:
上一层使用的协议
例如:
- IP
- ARP
- IPv6
4. 数据字段长度
数据字段长度为:
46~1500B
如果数据不足 46B,需要进行填充。
原因是:
以太网帧最短必须是 64B
5. FCS 字段
FCS 字段长度为:
4B
作用是:
CRC 差错检测
6. 有效 MAC 帧长度
最小帧长:
6 + 6 + 2 + 46 + 4 = 64B
最大帧长:
6 + 6 + 2 + 1500 + 4 = 1518B
所以:
以太网有效 MAC 帧长度为 64B~1518B
十九、前同步码与帧开始定界符
以太网帧在物理层发送前,还会在前面加入 8 字节:
7B 前同步码 + 1B 帧开始定界符
1. 前同步码
作用:
实现比特同步
让接收方准备好接收后面的 MAC 帧。
2. 帧开始定界符
作用:
表示后面正式进入 MAC 帧
3. 注意
这 8 字节:
不计入 MAC 帧长度
所以:
MAC 帧有效长度仍然是 64B~1518B
二十、Ethernet V2 与 IEEE 802.3 的区别
Ethernet V2 格式:
目的地址 | 源地址 | 类型 | 数据 | FCS
IEEE 802.3 格式:
目的地址 | 源地址 | 长度/类型 | 数据 | FCS
主要区别在第三个字段。
判断规则:
字段值 > 0x0600 → 类型
字段值 < 0x0600 → 长度
现在最常用的是:
Ethernet V2
但很多时候也会笼统称为:
802.3 以太网帧
二十一、VLAN
1. VLAN 的作用
VLAN 用于:
逻辑划分局域网
2. VLAN 的核心作用
VLAN 最核心的作用是:
隔离广播域
3. 不同 VLAN 之间通信
不同 VLAN 之间不能直接通信。
必须经过:
路由器
三层交换机
进行转发。
4. VLAN 划分方式
1. 基于端口
最简单、最常见。
例如:
1~8号端口 → VLAN10
9~16号端口 → VLAN20
缺点:
用户换接口后,VLAN 可能变化
2. 基于 MAC 地址
根据主机网卡 MAC 地址划分 VLAN。
优点:
用户移动位置后,VLAN 不变
缺点:
需要维护大量 MAC 地址
3. 基于 IP 子网
根据 IP 地址所属网段划分 VLAN。
例如:
192.168.1.0/24 → VLAN10
192.168.2.0/24 → VLAN20
4. 基于协议类型
根据以太网帧中的类型字段划分。
例如:
IP → VLAN10
IPX → VLAN20
5. 基于应用或服务
根据高层应用划分。
例如:
FTP → VLAN10
TELNET → VLAN20
这种方式更灵活,但实现复杂。
二十二、高速以太网
1. 不同速率以太网为什么兼容?
因为以太网不同速率版本主要改变的是:
物理层
而:
MAC 层基本保持不变
所以不同速率以太网能够保持较好的兼容性。
2. 全双工为什么不使用 CSMA/CD?
全双工链路一般是:
点对点链路
发送和接收可以同时进行,不会发生碰撞。
所以:
全双工以太网不需要 CSMA/CD
3. 10GE 为什么距离远?
10GE 大量采用:
光纤
光纤特点:
- 衰减小
- 抗干扰强
- 带宽高
- 传输距离远
二十三、常见以太网标准
1. 10BASE5
10 → 10Mbps
BASE → 基带传输
5 → 最大段长 500m
2. 10BASE-T
10 → 10Mbps
BASE → 基带传输
T → 双绞线
3. 100BASE-T
100 → 100Mbps
BASE → 基带传输
T → 双绞线
4. 1000BASE-T
1000 → 1000Mbps,也就是 1Gbps
BASE → 基带传输
T → 双绞线
通常使用:
4 对 UTP
5. 1000BASE-SX
SX → 短波长光纤
6. 1000BASE-LX
LX → 长波长光纤
7. 1000BASE-CX
CX → 铜缆
二十四、本章重要公式汇总
1. 发送时延
T0 = L / C
其中:
T0:发送一帧所需时间
L:帧长,单位 bit
C:数据率,单位 bit/s
2. 传播时延
τ = 距离 / 传播速度
其中:
τ:单程传播时延
3. 争用期
争用期 = 2τ
含义:
往返传播时延
4. 最短帧长条件
T0 ≥ 2τ
含义:
发送方必须在发送过程中还能检测到碰撞
5. 最短帧长公式
Lmin = 2τ × C
其中:
Lmin:最短帧长
τ:单程传播时延
C:数据率
6. 退避时间
退避时间 = r × 2τ
其中:
r ∈ [0, 2^k – 1]
k = min(重传次数, 10)
7. 信道利用率最大值
Smax = T0 / (T0 + τ)
令:
a = τ / T0
则:
Smax = 1 / (1 + a)
要提高信道利用率,需要:
a << 1
即:
- 帧不能太短
- 网络距离不能太长
- 传播时延不能太大
二十五、本章重要数字汇总
PPP Flag:0x7E
PPP Flag 二进制:01111110
MAC 地址长度:48bit = 6B
以太网最短帧长:64B
以太网最大帧长:1518B
以太网数据字段:46~1500B
FCS 字段:4B
广播 MAC 地址:FF-FF-FF-FF-FF-FF
CSMA/CD 争用期:2τ
最大重传次数:16次
二十六、本章易错判断题
1. CRC 能保证可靠传输
错误。
原因:
CRC 只能检错,不能纠错,也不能重传。
2. PPP 只能传输 IP 数据报
错误。
原因:
PPP 可以支持多种网络层协议。
3. 普通二层交换机可以隔离广播域
错误。
原因:
普通二层交换机默认不隔离广播域。
能够隔离广播域的是:
VLAN
路由器
三层交换机
4. Hub 是星型拓扑,所以不会发生冲突
错误。
原因:
Hub 物理上是星型,逻辑上仍然是总线型。
所以 Hub 网络仍然会发生冲突。
5. 使用 CSMA/CD 的以太网可以全双工
错误。
原因:
CSMA/CD 用于半双工共享式以太网。
全双工以太网没有碰撞,不使用 CSMA/CD。
6. 交换式以太网使用 CSMA/CD
错误。
原因:
交换式以太网通常是全双工、点对点链路,不发生碰撞。
所以通常不使用 CSMA/CD。
7. 交换机根据目的地址学习
错误。
正确说法:
交换机根据源地址学习,根据目的地址转发。
8. 不同 VLAN 之间可以直接通信
错误。
原因:
不同 VLAN 属于不同广播域,不能直接通信。
必须经过:
路由器或三层交换机
9. 泛洪等于广播
不完全正确。
区别:
广播:发送方本来就要发给所有主机
泛洪:交换机不知道目的 MAC,只能向其他端口都转发
10. MAC 地址就是 IP 地址
错误。
原因:
MAC 地址属于数据链路层,长度 48 位。
IP 地址属于网络层。
二十七、本章考前速记
1. 数据链路层三个基本问题
封装成帧
透明传输
差错检测
2. PPP 必背
PPP 用于点对点链路
Flag = 0x7E = 01111110
PPP 支持差错检测,但不提供可靠传输
3. CRC 必背
CRC 只能检错,不能纠错
CRC 使用模 2 除法
模 2 运算本质是异或
4. CSMA/CD 必背
先听后发
边听边发
冲突停止
延迟重发
5. 最短帧长必背
T0 ≥ 2τ
Lmin = 2τ × C
以太网最短帧长 = 64B = 512bit
6. Hub 必背
物理层
共享信道
半双工
使用 CSMA/CD
所有端口一个冲突域
不隔离广播域
7. Switch 必背
数据链路层
全双工
不使用 CSMA/CD
每端口一个冲突域
默认不隔离广播域
8. VLAN 必背
VLAN 用于逻辑划分局域网
VLAN 的核心作用是隔离广播域
不同 VLAN 通信需要路由器或三层交换机
9. MAC 帧格式必背
目的地址 | 源地址 | 类型 | 数据 | FCS
字段长度:
目的地址:6B
源地址:6B
类型:2B
数据:46~1500B
FCS:4B
帧长:
最小:64B
最大:1518B
10. 交换机转发规则必背
看源地址学习
查目的地址转发
目的已知 → 明确转发
目的未知 → 泛洪
目的端口等于进入端口 → 丢弃


