第 3 章 数据链路层
408 计算机网络第 3 章 数据链路层复习讲义,涵盖核心概念、重点考点与典型题型。
Last updated on
怎样把网络层交下来的分组,封装成帧,并可靠/高效地送过当前这一跳链路。
也就是说,数据链路层主要解决的是相邻节点之间的一跳通信,不是源主机到目的主机的端到端通信。
一、第 3 章整体框架与考研优先级
先建立地图,否则后面的 CRC、GBN、CSMA/CD、交换机很容易学成一堆孤立知识。
| 模块 | 核心问题 | 408重要程度 |
|---|---|---|
| 3.1 数据链路层功能 | 数据链路层到底干什么 | ★★★ |
| 3.2 组帧 | 一串比特怎么知道“一帧从哪开始、到哪结束” | ★★★ |
| 3.3 差错控制 | 怎么知道传输过程中比特错了 | ★★★★ |
| 3.4 可靠传输 | 丢帧、错帧、ACK 丢失怎么办 | ★★★★★ |
| 3.5 介质访问控制 | 多台机器共用信道时谁先发 | ★★★★★ |
| 3.6 局域网/以太网 | MAC 地址、以太网帧、Wi-Fi、VLAN | ★★★★★ |
| 3.7 广域网 PPP | 点到点链路怎么封装 | ★★★ |
| 3.8 交换机等设备 | MAC 表、自学习、冲突域、广播域 | ★★★★★ |
资料中的考点追踪也能看出重点:GBN、SR、滑动窗口连续多年出现;CSMA/CD 的最短帧长、退避算法也是反复考查;CRC、交换机、以太网和无线局域网同样属于典型考点。
建议你把这一章压缩成五个问题:
- 帧怎么划分?
- 帧错没错怎么判断?
- 丢了怎么重传?
- 多人共用链路时谁能发送?
- 交换机拿到一个帧后往哪里转?
这五个问题搞清楚,第 3 章基本就通了。
二、3.1 数据链路层到底在干什么
1. 物理层和数据链路层的区别
物理层只关心:
“0 和 1 怎么变成电信号、光信号、无线信号发出去?”
它看到的只是:
101101001011101...它不知道这些比特属于谁,也不知道哪里是一帧的开始。
数据链路层则要把比特组织成:
┌──────首部──────┬────数据────┬──尾部──┐
│ 地址/控制信息 │ 网络层分组 │ FCS │
└────────────────┴────────────┴────────┘这个整体叫帧 Frame。
因此:
网络层: IP 数据报/分组
↓
数据链路层: 帧 Frame
↓
物理层: 比特流 Bit2. 数据链路层主要解决什么
资料把它概括为封装成帧、透明传输、差错控制、流量控制和可靠传输等。
封装成帧
给网络层分组加上首部、尾部。
帧定界
接收端必须知道:
……10101 [这一帧开始] 101101... [这一帧结束] 010……透明传输
无论用户数据里面是什么比特组合,都应该能正常传输。
例如协议规定:
01111110表示帧边界。
但用户数据恰好包含:
01111110怎么办?
不能把它误认为帧结束,所以需要填充。
差错控制
发现:
发送:100101
收到:100001中间有比特发生了错误。
流量控制
如果:
发送方:10 Gb/s
接收方:1 Gb/s发送方一直狂发,接收方缓存迟早爆掉。
因此要控制发送速度。
可靠传输
处理:
- 数据帧丢失;
- 数据帧损坏;
- ACK 丢失;
- 重复帧;
- 帧失序。
这里就会引出本章最重要的:
- 停止-等待协议;
- GBN;
- SR。
三、3.2 组帧:怎么知道一帧的边界
资料总结了四种组帧方法:字符计数法、字节填充法、零比特填充法、违规编码法。
1. 字符计数法
帧开头直接写长度:
5 A B C D
4 E F G意思类似:
5:接下来这一帧一共长 5问题非常明显:
如果长度字段本身错了,例如:
5 → 被传成 7后面整个帧边界都可能错位。
所以理解思想即可。
四、字节填充法
假设:
FLAG表示帧边界。
正常:
FLAG 数据 FLAG可如果数据里面本身有:
FLAG就加一个转义字节 ESC:
原数据:
A FLAG B
发送:
FLAG A ESC FLAG B FLAG接收方知道:
ESC 后面的 FLAG 是普通数据,不是帧结束。
如果用户数据中本来就有 ESC,也要转义。
这就是字节填充。
后面讲 PPP 时还会遇到。
五、零比特填充法——很容易考
规定帧定界符:
01111110也就是连续六个 1 的特殊模式。
为了保证数据内部永远不会自然产生这个边界:
发送方每遇到连续 5 个 1,就自动插入一个 0。
例如原始数据:
01111110数据区发送时会变成:
011111010接收端则执行相反过程:
看见连续五个 1 后面的 0,就把这个 0 删除。
核心流程:
发送方:
连续5个1
↓
自动插0
↓
发送
接收方:
连续5个1后遇到0
↓
删除这个0
↓
恢复原数据这就是透明传输:
用户不需要避开任何特殊比特序列。
六、违规编码法
有些物理编码并没有用完所有信号状态。
于是可以故意使用:
“正常数据绝对不会出现的物理信号”
表示帧开始或结束。
优点是不需要额外进行数据填充。
重点理解思想即可:
正常编码不用的状态 → 拿来当帧边界。
七、3.3 差错控制
这一节要分清两个概念:
差错控制
├─ 检错:我知道它错了
└─ 纠错:我不仅知道错了,还知道哪一位错了并能修正典型方法:
| 方法 | 类型 |
|---|---|
| 奇偶校验 | 检错 |
| CRC | 检错 |
| 海明码 | 纠错 |
资料将 CRC 计算、码距列为明确的考查点。
八、码距:理解检错和纠错能力的根源
假设两个合法码字:
0000
0011不同的位置有两个,所以距离为 2。
一个编码系统中,任意两个合法码字之间的最小汉明距离,就是最小码距。
直觉:
两个合法码字距离越远,发生少量错误后越不容易“变成另一个合法码字”。
1. 检测 d 位错误
需要满足:
例如想保证检测 2 位错误:
2. 纠正 c 位错误
需要满足:
例如纠正 1 位:
3. 同时纠错和检错
资料给出的关系可整理成:
其中检测能力不小于纠错能力。
考研中最常用的仍然是前两条。
九、奇偶校验
假设数据:
1011001有 4 个 1。
偶校验
要求完整码字中 1 的个数为偶数。
现在已有 4 个,所以校验位为:
0奇校验
要求 1 的总数为奇数,因此加:
1奇偶校验的能力
它能检测:
所有奇数个位发生错误。
例如 1 位错、3 位错、5 位错……
但如果刚好 2 位都反转:
1→0
0→11 的奇偶性可能不变,因此检测不出来。
所以:
奇偶校验便宜,但是能力弱。
十、CRC——一定要真正会算
CRC 全名循环冗余校验。
408 中不要把它当成“背定义”,核心是:
模 2 除法。
资料明确强调:模 2 除法的减法不借位,本质就是 XOR。
1. CRC 整体流程
假设原始数据是:
双方事先约定生成多项式:
如果生成多项式最高次数为:
那么需要产生:
位 CRC。
过程:
原数据 D
↓
后面补 r 个 0
↓
用生成多项式进行模2除法
↓
得到 r 位余数 R
↓
把那 r 个 0 替换为 R
↓
发送接收方:
收到完整比特串
↓
除以同一个生成多项式
↓
余数?
┌─────┴─────┐
0 非0
↓ ↓
未检测到错 检测到错注意:
余数为 0 只能说 CRC 没有检测到差错,不能从逻辑上证明绝对没有任何差错。
CRC 本身也不负责重传。
十一、CRC 做题完整示例
下面这个是我为了说明计算流程自造的小例子,不是资料原题。
设数据:
生成多项式对应比特串:
生成多项式一共 5 位,所以最高次数:
第一步:数据末尾补 4 个 0
变成:
第二步:进行模 2 除法
除数:
这里最关键的操作:
最终得到 4 位余数:
第三步:形成发送码字
把原来的 4 个 0 替换为余数:
这就是发送出去的比特串。
CRC 做题口诀
可以固定成:
看生成式阶数 → 补 0 → XOR 除 → 取余数 → 替换 0。
接收端则:
直接除 → 余 0 通过,余非 0 判错。
十二、海明码
CRC 的思路:
“发现错了,然后让别人重传。”
海明码进一步做到:
“我直接定位哪一位错了。”
1. 校验位需要多少位
假设信息位:
校验位:
完整码字有:
位。
为了区分:
- 无错误;
- 第 1 位错误;
- 第 2 位错误;
- ……
- 第 位错误;
需要:
这是海明码最重要的公式之一。
例
假设有 4 个信息位:
试 :
而:
不够。
试 :
且:
所以需要:
个校验位。
2. 校验位放在哪里
海明码规定:
校验位放在 2 的幂次位置。
即:
例如 7 位海明码:
位置:1 2 3 4 5 6 7
P1 P2 D1 P4 D2 D3 D4其中:
P1 P2 P4:校验位
D1 D2 D3 D4:数据位3. 为什么这样就能定位错误
把位置编号写成二进制:
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111不同校验位负责检查位置编号中不同的二进制位。
当接收端重新检查:
P1检查结果
P2检查结果
P4检查结果组合起来恰好可以形成:
出错位置的二进制编号。
因此海明码的本质不是神奇公式,而是:
用多个校验位构成一个“错误位置编码器”。
资料的重点也放在校验位数量公式、校验位位置以及根据校验结果定位错误的思想上。
十三、3.4 流量控制与可靠传输——本章第一核心
这里是整个第 3 章最值得花时间的地方。
先理解为什么需要可靠传输。
假设发送:
F0可能出现四种典型情况:
① F0正常到达,ACK正常返回
② F0丢了
③ F0坏了
④ F0到达了,但ACK丢了其中第 4 种最麻烦。
发送方没收到 ACK,会认为:
“是不是 F0 没送到?”
于是超时后再次发:
F0接收方已经收到过一次了,于是:
必须能识别这是重复帧。
因此可靠传输至少要有:
序号 + ACK + 定时器 + 超时重传这就是 ARQ 的基本思想。
十四、流量控制和可靠传输不要混
流量控制
解决:
“你发得太快,我来不及收。”
可靠传输
解决:
“你发的数据到底有没有正确到达?”
两者有联系,但不是同一个概念。
资料还特别指出:
- 数据链路层:控制相邻节点之间流量;
- 传输层:控制端到端流量。
十五、滑动窗口到底是什么
这是很多人第一次学时最抽象的地方。
假设序号:
0 1 2 3 4 5 6 7发送窗口为:
[0 1 2 3] 4 5 6 7意味着:
在不等待进一步 ACK 的情况下,我现在允许发送 0、1、2、3。
收到 0 的确认后:
0 [1 2 3 4] 5 6 7窗口向右滑一格。
所以“滑动窗口”并不是一个真实的内存窗口,而是:
当前允许发送/接收的序号范围。
十六、三种 ARQ 必须放在一起比较
| 协议 | 发送窗口 | 接收窗口 | 能否连续发 | 失序帧 |
|---|---|---|---|---|
| 停止-等待 | 1 | 1 | 否 | 不涉及 |
| GBN | >1 | 1 | 是 | 丢弃 |
| SR | >1 | >1 | 是 | 缓存 |
可以把三者理解成不断升级:
停止-等待
↓
嫌等待时间太浪费
↓
GBN:先连续发很多
↓
嫌一帧错误导致后面全重发太浪费
↓
SR:只重传真正出错的帧十七、停止-等待协议
基本流程
发送方 接收方
F0 ───────────────────────────→
←──────────────────────── ACK0
F1 ───────────────────────────→
←──────────────────────── ACK1只有收到确认,才能发送下一帧。
1. 数据帧丢失
F0 ─────X接收方当然不会 ACK。
发送方:
等待
等待
超时
↓
重传F02. 数据帧出错
接收方检错发现错误,不正常交付。
发送方迟迟收不到有效确认,于是:
超时 → 重传3. ACK 丢失
F0 ─────────────────────→
←──── ACK0 ────X发送方:
超时
↓
再发F0此时接收方必须发现:
“这个 F0 我已经收过了!”
所以停止-等待需要序号。
因为最多只有前后两个状态,所以资料指出:
1 bit 序号就足够。
也就是:
0,1,0,1,0,1,...十八、停止-等待的信道利用率——高频计算
资料给出的形式为:
其中:
- :数据帧发送时延;
- :往返时间;
- :确认帧发送时延。
若确认帧发送时间忽略,且只有传播时延:
于是:
而:
其中:
- :数据帧长度;
- :链路数据率。
为什么传播时延大时效率特别差
例如:
发送一帧:1 ms
等来回传播:100 ms一个周期:
发送1ms
+
等100ms真正传数据的时间只有:
左右。
所以停止-等待最大问题就是:
发送方大量时间都在“干等 ACK”。
资料里的模拟与真题整理也集中出现了停止-等待信道利用率、最小帧长等计算。
十九、GBN:后退 N 帧协议——极高频
GBN = Go-Back-N。
它解决停止-等待低效率的方法很直接:
不要每发一帧就停下来,可以一口气连续发很多帧。
例如发送窗口大小 4:
F0 → F1 → F2 → F3 →即使 ACK0 还没有回来,也可以继续发送 F1、F2、F3。
二十、GBN 的接收规则是核心
GBN 接收窗口:
因此:
接收方只接受当前正期待的那一帧。
假设:
F0 正常
F1 正常
F2 丢失
F3 到达
F4 到达接收方:
F0:收
F1:收
F2:没来
F3:丢
F4:丢为什么 F3、F4 明明正确还要扔?
因为:
GBN 不缓存失序帧。
二十一、GBN 的累计确认——必会
假设接收方依次正确收到:
0
1
2
3它不一定每一个都单独确认。
可以发送:
ACK3它意味着:
0、1、2、3 我全都正确收到了。
所以:
ACK n确认的是:
≤ n 的所有连续正确帧这叫累计确认。
资料将 GBN 累计确认列为 2017 年考点。
二十二、GBN 出错后为什么叫“后退 N 帧”
例如已经发送:
0 1 2 3 4 5其中:
2 丢了3、4、5 即使传到接收方,也因为失序被丢掉。
等 2 超时:
重传:
2 3 4 5所以叫:
从出错位置往回退,后面的未确认帧一起重传。
代价:
一个帧错了,可能把很多正确传过去的帧重新传一遍。
二十三、GBN 窗口大小——非常重要
若帧序号字段有 bit:
序号空间:
GBN 最大发送窗口:
为什么不能等于:
?
这是经典理解题。
假设 2 bit 序号:
0 1 2 3如果发送窗口恰好是 4,发送方把:
0 1 2 3全发了。
接收方全收到了,但所有 ACK 都丢了。
发送方超时后重新发:
0而接收方此时已经完成一轮,下一帧本来恰好又应该是:
0于是接收方无法判断:
这是上一轮旧0的重传?
还是下一轮新的0?所以必须留出至少一个序号状态来避免歧义:
这比死背公式重要得多。
二十四、SR:选择重传协议——极高频
SR = Selective Repeat。
GBN 最大缺点:
一个错误 → 一大片帧重传。
SR 改进为:
谁错重传谁。
例子
F0 → 正确
F1 → 正确
F2 → 丢失
F3 → 正确
F4 → 正确SR 接收方:
F0:收
F1:收
F2:缺
F3:先缓存
F4:先缓存等 F2 重传成功:
F2
+
缓存的F3
+
缓存的F4再按序交给上层。
资料明确指出 SR 会缓存失序但正确且处于接收窗口内的数据帧。
二十五、SR 和 GBN 最大区别
GBN
2丢
3到 → 丢
4到 → 丢
5到 → 丢
最后:
重传 2 3 4 5SR
2丢
3到 → 缓存
4到 → 缓存
5到 → 缓存
最后:
只重传2因此:
| 特征 | GBN | SR |
|---|---|---|
| 接收窗口 | 1 | >1 |
| 失序帧 | 丢弃 | 缓存 |
| ACK | 累计确认 | 独立确认 |
| 重传 | 一批 | 单帧 |
| 缓存要求 | 低 | 高 |
| 实现复杂度 | 低 | 高 |
二十六、SR 窗口为什么不能太大
若序号字段有 bit:
序号总数:
SR 要满足:
资料进一步给出:
因此:
常见最大利用方式:
为什么通常只能占一半序号空间
假设 3 bit 序号:
共:
个。
如果发送窗口和接收窗口都取:
则:
旧窗口:0 1 2 3
新窗口:4 5 6 7能够清楚区分。
如果窗口太大,窗口滑动之后:
旧帧的重传序号可能重新进入:
新帧的合法接收范围接收方就分不清:
这是旧帧,还是新帧?
所以本质依然是:
防止序号循环后新旧帧混淆。
二十七、三种协议做题时怎么判断
遇到时序图,先不要算,先回答四个问题:
第一步:是什么协议?
停止等待 / GBN / SR第二步:接收窗口多大?
GBN:
SR:
第三步:ACK 什么含义?
GBN:
累计确认。
SR:
独立确认。
第四步:某帧丢失后,后续正确帧怎么办?
GBN:
丢。
SR:
缓存。
绝大多数滑动窗口题做到这里,时序就不会乱。
二十八、3.5 介质访问控制 MAC——第二大核心
前面的 ARQ 解决的是:
“两端之间怎样可靠传?”
MAC 解决另一个问题:
“很多节点共享一根介质,到底谁能发?”
例如:
A ─┐
B ─┼──共享信道
C ─┤
D ─┘如果 A、B、C 同时发,就可能冲突。
MAC 方法分三大类:
介质访问控制
├─ 信道划分
├─ 随机访问
└─ 轮询访问二十九、信道划分
思路:
与其大家争,不如提前切开。
| 方法 | 划分的东西 |
|---|---|
| FDM | 频率 |
| TDM | 时间 |
| STDM | 动态分配时隙 |
| WDM | 光波波长 |
| CDM | 码片 |
三十、CDMA——计算题要会
CDMA 的奇特之处是:
多个用户可以在同一时间、同一频带发送。
靠什么区分?
每个用户拥有不同的码片序列。
而不同站点的码片序列彼此正交。
1. 表示方法
通常:
1 → +1
0 → -1设站点 A 的码片为:
站点 B 的码片为:
要求正交:
2. 自己和自己做内积
3. 自己和反码
所以接收方拿总信号和某用户的码片做规格化内积:
表示:
该用户发送 1。
表示:
该用户发送 0。
表示:
这个用户没发。
这是 CDMA 计算题的全部核心。资料中也把 CDMA 数据恢复列为真题考点。
三十一、随机访问协议的发展逻辑
这一串名称不要孤立地背。
真正的演进是:
ALOHA:
管它空不空,直接发
↓
冲突太多
CSMA:
发之前先听
↓
仍可能因为传播时延冲突
CSMA/CD:
不仅发前听,发的过程中继续检测
↓
适合有线
CSMA/CA:
无线没法很好地边发边检测
↓
改成提前避免冲突这样记就很自然。
三十二、ALOHA
纯 ALOHA
有数据:
直接发。
发生冲突:
随机等一会再发。
时隙 ALOHA
把时间切成一格一格:
| slot | slot | slot | slot |只允许在时隙起点发送。
这样减少“任何时刻都可能撞”的情况。
这部分通常理解思想即可。
三十三、CSMA 三种坚持策略
CSMA:
Carrier Sense Multiple Access,载波监听多路访问。
一句话:
先听再发。
1-坚持 CSMA
听到空闲:
马上发。
听到忙:
一直监听。
一旦空闲:
马上抢。
优点:利用及时。
缺点:
如果有很多节点都等着:
A:等
B:等
C:等信道刚空:
A B C 同时冲出去又撞了。
非坚持 CSMA
听到空闲:
发。
听到忙:
不一直守着,随机等一段时间再回来监听。
优点:
降低一窝蜂抢信道的概率。
缺点:
信道已经空闲了,它可能还在等,利用率可能下降。
p-坚持 CSMA
适合时隙信道。
信道空闲时:
以概率:
发送;
以概率:
等待下一个时隙再决定。
三十四、CSMA/CD——408 高频中的高频
CSMA/CD 用于传统共享式、半双工以太网。
资料将其总结得很好:
先听后发、边听边发、冲突停发、随机重发。
逐句解释。
先听后发
发送前:
信道忙 → 等
信道空闲 → 发边听边发
发送过程中也继续监听。
冲突停发
检测到碰撞:
立即停止正常帧发送。
随机重发
不能所有碰撞站点立刻同时重传,所以随机等待。
三十五、为什么“听到空闲”还会冲突?
非常关键。
假设 A 和 B 在一根很长的电缆两端:
A ---------------------------- BA 开始发送。
信号需要传播时间:
才能到 B。
就在 A 已发但信号还没到 B 时,B 监听:
“咦,信道是空闲的。”
于是 B 也开始发送。
然后:
A的信号 →
× 冲突
← B的信号所以:
传播时延是 CSMA 仍然可能冲突的根本原因。
三十六、争用期为什么是
最坏情况:
- A 的信号几乎走到最远的 B;
- B 恰好在信号到达前开始发送;
- 冲突信息还要从 B 附近传播回 A。
因此 A 最晚需要等待:
才能确定:
“刚才这帧到底有没有在最远端发生碰撞。”
所以争用期为:
三十七、最短帧长——超级高频公式
如果发送方在发送完整个帧之后才有冲突信息回来:
帧都发完了
↓
网卡认为发送成功
↓
冲突消息才回来那就无法正常执行 CSMA/CD。
因此必须保证:
最短帧还没发送完,最坏情况下的冲突就能传回来。
所以:
而:
因此:
得到:
其中:
- :最大单向传播时延;
- :数据传输速率。
三十八、以太网为什么恰好最短 64 B
传统 10 Mb/s 以太网争用期:
于是:
换成字节:
所以标准以太网最小 MAC 帧:
资料也明确把这一结果和 CSMA/CD 的碰撞检测原理联系起来。
因此你不要只背:
“以太网最小 64B”。
真正应该记:
64 B 只是特定标准参数下的结果。
三十九、二进制指数退避算法——必须会计算
发生冲突以后,不能马上重发。
第 次冲突:
从:
中随机选择整数:
等待:
后重新发送。
例:第 4 次发生冲突
那么:
最长等待:
如果争用期为:
最长:
这正是资料中的 2023 年同类真题考法。
为什么叫“指数”退避
第一次冲突:
种等待选择。
第二次:
第三次:
……
竞争越严重:
可随机选择的等待范围越大。
这样让大家逐渐散开。
重传 16 次仍失败则放弃。
四十、CSMA/CA——无线局域网重点
无线局域网使用:
CSMA/CA
而不是:
CSMA/CD。
核心原因不是“无线没有碰撞”,恰恰相反,无线也会碰撞。
而是:
无线设备很难在自己发射强信号的同时准确监听很弱的其他无线信号,因此难以可靠地边发送边检测碰撞。
所以:
CD = Collision Detection
碰撞检测
CA = Collision Avoidance
碰撞避免四十一、CSMA/CA 基本过程
资料要求理解的典型机制包括:
监听信道
↓
等待 DIFS
↓
随机退避
↓
发送数据
↓
接收方等待 SIFS
↓
发送 ACK为什么必须 ACK?
因为发送方不能像 CSMA/CD 一样在发送过程中明确检测碰撞。
所以:
没收到 ACK → 推断本次传输可能失败。
四十二、隐藏站问题
例如:
A ------ AP ------ BA 能听到 AP。
B 能听到 AP。
但:
A 听不到 B
B 听不到 AA 监听:
空闲。
B 监听:
也空闲。
A 和 B 同时向 AP 发送:
A → AP ← B
×冲突。
这就是隐藏站。
四十三、RTS/CTS
为缓解隐藏站:
A 先发送:
RTS
Request To SendAP 返回:
CTS
Clear To Send其他站点听见 CTS 后知道:
“这段时间信道已经被预约了,我先别发。”
资料中的真题整理显示 RTS/CTS 信道预约就是无线局域网的典型考点。
所以:
CSMA/CD
→ 发生了碰撞,再检测
CSMA/CA
→ 尽量提前避开碰撞一定要分开。
四十四、3.6 局域网
现代局域网最核心的实际上就是:
以太网 + 交换机
IEEE 802 把数据链路层进一步分成:
LLC
MAC其中:
| 子层 | 主要作用 |
|---|---|
| LLC | 向网络层提供统一接口 |
| MAC | MAC 地址、介质访问、帧格式等 |
实际 408 更重视 MAC。
四十五、MAC 地址——必须熟悉
以太网 MAC 地址:
即:
例如:
A4-5E-60-12-34-56广播 MAC:
FF-FF-FF-FF-FF-FF也就是 48 个 1。
四十六、以太网帧格式——高频
资料中的以太网帧核心字段:
| 字段 | 长度 |
|---|---|
| 目的 MAC 地址 | 6 B |
| 源 MAC 地址 | 6 B |
| 类型 | 2 B |
| 数据 | 46~1500 B |
| FCS | 4 B |
最小长度
最大常规 MAC 帧
原因:
为什么数据至少 46B
除了数据字段:
为了让整个帧至少:
数据至少:
如果 IP 数据报太短:
补齐。
所以这里又回到了前面 CSMA/CD 的最短帧理论。
可以发现这一章知识并不是分散的:
CSMA/CD
↓
要求能检测冲突
↓
要求最短帧
↓
以太网最短64B
↓
数据字段至少46B四十七、一个极容易错的点:以太网本身可靠不可靠?
资料明确:
以太网提供无连接、不可靠的服务。
它:
- 不给数据帧编号;
- 普通以太网不逐帧确认;
- 不负责重传;
- FCS 发现错误帧后通常直接丢弃。
所以:
有 CRC ≠ 可靠传输。
这是很重要的选择题陷阱。
CRC 只能:
“发现一部分传输错误”。
可靠传输还需要:
编号
ACK
超时
重传等机制。
四十八、无线局域网 IEEE 802.11
这一部分主要抓三个点。
第一:用 CSMA/CA
不是 CSMA/CD。
第二:通常存在 AP
手机/电脑 ←→ AP ←→ 有线网络第三:MAC 帧地址字段比普通以太网复杂
因为帧可能涉及:
- 无线站点;
- AP;
- 分布式系统;
- 最终目的主机。
资料明确提示:考试重点通常不是死记整个复杂 802.11 帧,而是理解 AP、ACK、退避机制和 RTS/CTS。
四十九、VLAN——理解“广播域”
VLAN:
Virtual LAN,虚拟局域网。
核心:
在同一套物理交换网络上,从逻辑上划分出多个独立广播域。
例如:
一台交换机
端口1 ─ 财务部 VLAN10
端口2 ─ 财务部 VLAN10
端口3 ─ 教务处 VLAN20
端口4 ─ 教务处 VLAN20虽然都插在一台交换机上:
VLAN10的二层广播不会直接进入:
VLAN20所以:
这是资料中的直接考点。
不同 VLAN 能不能通信?
不是“永远不能”。
准确说:
不能直接进行二层通信。
需要:
- 路由器;
- 三层交换机;
执行三层转发。
VLAN 能不能跨交换机?
可以。
借助交换机间链路和 VLAN 标签,同一个 VLAN 可以跨多台交换机。
所以这几个判断要牢记:
一个VLAN = 一个广播域 ✓
一个VLAN = 一个冲突域 ✗
一个VLAN只能在一台交换机上 ✗
不同VLAN永远不能通信 ✗五十、3.7 广域网与 PPP
这一节当前复习重点主要放在 PPP。
PPP:
Point-to-Point Protocol。
就是点到点链路数据链路层协议。
常见场景:
用户 —— ISP或者:
路由器 —— 专线 —— 路由器五十一、PPP 三大组成部分
资料总结:
LCP
Link Control Protocol。
负责:
建立、配置、测试链路。
NCP
Network Control Protocol。
负责:
配置具体网络层协议。
PPP 可以承载多种网络层协议。
封装方法
规定如何把 IP 数据报等封装进 PPP 帧。
五十二、PPP 帧
主要字段:
Flag | Address | Control | Protocol | Information | FCS | Flag其中:
Flag
固定:
01111110也就是:
0x7EAddress
通常:
0xFFControl
通常:
0x03Protocol
标识信息字段装的是什么上层协议。
Information
通常最大:
FCS
CRC 差错检测。
五十三、PPP 的透明传输——易错
资料明确区分:
异步传输
使用:
字节填充。
同步传输
使用:
零比特填充。
模拟题中就专门用“同步/异步填充方式互换”设过陷阱。
五十四、PPP 也不是可靠传输协议
PPP:
- 有 FCS;
- 能检错;
但:
- 不给普通数据帧编号;
- 不进行数据帧 ACK;
- 不负责超时重传。
所以:
再次看到:
检错 ≠ 可靠。
五十五、3.8 数据链路层设备——非常容易综合出题
这里最重要的是:
集线器
交换机
路由器一起比较。
五十六、集线器 Hub
Hub 本质:
多端口中继器。
工作在:
物理层。
它不知道 MAC 地址。
A 发一段比特进去:
┌──B
A──Hub─┼──C
└──DHub 基本就是把信号复制给其他端口。
所以:
- 所有人共享带宽;
- 所有人在同一个冲突域;
- 所有人在同一个广播域;
- 半双工;
- 需要 CSMA/CD。
五十七、交换机 Switch
交换机:
工作在数据链路层,根据 MAC 地址转发帧。
它内部维护:
MAC 地址表 / 转发表。
例如:
| MAC | 端口 |
|---|---|
| A | 1 |
| B | 3 |
| C | 5 |
五十八、交换机自学习算法——必须熟练到能手推
假设交换机收到:
源MAC=A
目的MAC=B
入端口=1第一件事不是看 B。
而是:
学习源地址 A。
于是记录:
A → 端口1这是关键:
然后查目的 MAC
分四种情况。
情况 1:目的 MAC 已知,而且对应另一个端口
例如:
B → 端口3就只:
端口3转发情况 2:目的 MAC 已知,但目的端口就是入端口
例如从端口 1 收到帧,查表发现目的主机也在端口 1 那一侧。
说明:
帧没必要穿过交换机。
因此:
过滤/丢弃。
情况 3:未知单播
表中没有 B:
B → ?交换机不知道在哪,只能:
除入端口外全部泛洪。
情况 4:广播帧
目的:
FF-FF-FF-FF-FF-FF同样:
除入端口外泛洪。
这些正是资料总结的交换机基本转发规则。
五十九、交换机做题固定流程
看到拓扑图就严格执行:
① 收帧
↓
② 根据源MAC更新MAC表
↓
③ 查目的MAC
↓
④ 已知?
├─ 是 → 定向转发/过滤
└─ 否 → 泛洪不要凭直觉数机器。
六十、为什么 MAC 表需要老化
假设主机 A 原来:
A → port1后来它被拔掉,接到了:
port5如果旧记录永远不删:
A → port1就会一直错误。
所以交换表项有:
老化时间。
过期后重新学习。
六十一、冲突域与广播域——选择题常客
先理解两个词。
冲突域
在这个区域中:
两个设备同时发送可能产生物理碰撞。
广播域
一台主机发送二层广播:
FF-FF-FF-FF-FF-FF能够传播到的范围。
六十二、三个设备必须背熟
| 设备 | 隔离冲突域 | 隔离广播域 |
|---|---|---|
| 集线器 | × | × |
| 交换机 | ✓ | 通常 × |
| 路由器 | ✓ | ✓ |
资料把该点列为 2020、2022 等年份的设备综合考点。
为什么交换机能隔离冲突域?
交换机每一个端口都可以形成独立链路。
例如:
A──port1
B──port2
C──port3A-B 通信和 C-D 通信可以同时进行,不像 Hub 那样所有站点共享一根逻辑总线。
为什么普通交换机不隔离广播域?
广播帧来到交换机:
FF-FF-FF-FF-FF-FF交换机:
泛洪。
所以广播还能过去。
除非使用:
VLAN
把广播域逻辑切开。
这也正好把 VLAN 和交换机知识串起来。
六十三、交换式以太网为什么通常不用 CSMA/CD
传统 Hub:
多人共享介质
↓
可能发生碰撞
↓
需要 CSMA/CD交换机全双工链路:
主机 ←→ 交换机端口发送和接收各有独立通路,没有共享介质竞争,因此:
全双工交换式以太网不需要 CSMA/CD。
资料对共享式和交换式以太网的总结为:
| 类型 | 工作层次 | 通信 | 带宽 |
|---|---|---|---|
| 共享式 | 物理层 | 半双工 | 共享 |
| 交换式 | 数据链路层 | 全双工为主 | 端口独占 |
六十四、为什么交换机网络还会有“广播风暴”
如果多个交换机之间存在环路:
S1 ───── S2
│ │
└───S3────┘一个广播帧可能:
S1→S2→S3→S1→S2→……因为以太网帧本身没有像 IP TTL 那样天然限制这种二层环路。
于是不断复制:
广播风暴。
资料提到可使用 STP:
生成树协议
逻辑上阻塞部分冗余链路,形成无环拓扑。
这部分通常理解即可。
六十五、把整章真正串起来
现在可以从“一台电脑发一个 IP 数据报”重新看整个第 3 章。
假设电脑 A 要把 IP 数据报交给当前链路上的下一跳。
第一步:网络层交给数据链路层
IP数据报第二步:封装成帧
加:
目的MAC
源MAC
类型
FCS形成:
以太网帧第三步:保证帧有边界
协议必须能知道:
从哪开始,到哪结束。
需要:
- 定界;
- 填充;
- 透明传输。
第四步:检查错误
例如:
CRC/FCS。
第五步:如果共享信道,要解决谁能发送
传统共享有线:
CSMA/CD。
无线:
CSMA/CA。
第六步:交换机收到帧
先:
学习源 MAC。
再:
根据目的 MAC 决定定向转发、过滤或泛洪。
第七步:到达下一跳
这一跳的数据链路层任务结束。
如果后面还要经过路由器:
旧数据链路层帧被拆掉
↓
IP数据报继续由网络层处理
↓
进入下一条链路
↓
重新封装成新的链路层帧所以特别重要:
MAC 地址服务的是“当前这一跳”,IP 地址解决的是跨网络的端到端寻址。
这一点到第 4 章网络层会越来越重要。
六十六、这一章最常见的十类坑
1. CRC 正确就代表可靠传输
错。
CRC:
检错。
可靠传输:
ACK + 序号 + 重传等。
2. GBN 收到失序帧会缓存
错。
GBN:
失序帧:
丢弃。
3. SR 也是累计确认
错。
SR 主要:
独立确认各帧。
4. GBN 序号 n bit,发送窗口最大
错。
5. SR 发送、接收窗口都能达到
错。
要满足:
常取:
6. CSMA/CD 只要先监听,就不会冲突
错。
有传播时延,所以两个远端节点都可能误以为信道空闲。
7. 以太网 64 B 是随便规定的
错。
根源:
8. Wi-Fi 用 CSMA/CD
错。
Wi-Fi 主要:
CSMA/CA。
9. 交换机从目的 MAC 学习
错。
它从:
源 MAC
学习。
10. 交换机隔离广播域
普通交换机:
不隔离广播域。
VLAN:
可以逻辑划分广播域。
路由器:
隔离广播域。
六十七、考前必须会写出来的公式
CRC
若生成多项式最高次数为 :
然后模 2 除求 位余数。
海明码检验位数
检 d 位错误
纠 c 位错误
停止-等待利用率
若 ACK 发送时间可忽略:
GBN
若使用 bit 序号:
SR
常见最大对称窗口:
CSMA/CD 争用期
CSMA/CD 最短帧
二进制指数退避
CDMA
与目标站码片做规格化内积:
六十八、最后给你一个 408 第 3 章复习顺序
如果目标是尽快把这一章做到能做题,不建议按照教材页码平均用力。
第一轮先彻底拿下:
停止等待
→ GBN
→ SR
→ 窗口大小
→ ACK/超时/重传时序图这是本章第一核心。资料中的真题追踪也显示 GBN、SR、滑动窗口在多个年份反复出现。
第二轮拿下:
CSMA/CD
→ 为什么会碰撞
→ 2τ
→ 最短帧
→ 二进制指数退避一定不要只记公式,要能从“最远端冲突返回需要 ”自己推导最短帧公式。资料列出的相关真题年份覆盖 2009、2016、2019、2022,退避算法又在 2023 出现。
第三轮拿下:
交换机自学习
→ 已知单播
→ 未知单播
→ 广播
→ 冲突域
→ 广播域
→ VLAN交换机题通常和 ARP、广播、Hub、VLAN 综合出现。
第四轮熟练计算:
CRC
海明码位数
CDMA内积
停止等待利用率CRC 和码距在资料中也有明确的近年考点追踪。
最后再记忆理解:
四种组帧
LLC/MAC
以太网帧
802.11
PPP
轮询/ALOHA其中 PPP 最重要的四句话就是:
点对点、FCS 检错、异步字节填充/同步零比特填充、不编号不确认不重传。
如果把第 3 章进一步压缩成一句“考场思维链”,就是:
帧怎么划分 → 怎么检错 → 错了怎么重传 → 多人怎么抢信道 → 交换机怎么根据 MAC 转发。
把这条主线真正理解之后,第 3 章会比单纯背几十个协议名称容易很多。