计算机网络 · 2027 考研计算机 408

第 3 章 数据链路层(框架、检错、可靠传输与以太网)

目标院校:四川大学 / 电子科技大学 | 建议用时:概念 5 小时 + 例题练习 6 小时

本章地位:数据链路层是 408 计算机网络部分分值最重的大章之一(网络 25 分中常占 6~10 分,选择题 + 大题双线出击):滑动窗口 / 信道利用率是网络部分最可能出综合大题的考点,CRC、海明码是计算题的另一个稳定来源,CSMA/CD 最小帧长、以太网帧格式、交换机自学习、碰撞域与广播域则是选择题的常驻嘉宾。主线只有一句话:帧怎么造(封装成帧)→ 帧错了怎么办(差错控制)→ 发得太快怎么办(流量控制与可靠传输)→ 大家抢信道怎么办(介质访问控制)→ 两大真实网络(以太网局域网、PPP 广域网)→ 链路层设备怎么转发(网桥与交换机)。本章所有计算(CRC 竖式、信道利用率、最小帧长、CDM 内积)均给出逐步推导并代入数值验证,按「列公式 → 代数值 → 核对量纲」三步走。

考点常考题型热度本章位置
组帧四法(字符计数 / 字节填充 / 比特填充 / 违规编码)选择★★★3.1
CRC 循环冗余码(模 2 除法求 FCS、检错能力)计算 / 选择★★★★★3.2
海明码(校验位数 2^r ≥ m+r+1、纠错能力、码距)计算 / 选择★★★★3.2
滑动窗口与信道利用率(停等 / GBN / SR)综合大题(最热)★★★★★3.3
序号位数与窗口大小(GBN ≤ 2ⁿ−1、SR ≤ 2ⁿ⁻¹)大题一问 / 选择★★★★★3.3
CSMA/CD:争用期、最小帧长、二进制指数退避计算 / 选择★★★★★3.4
码分复用 CDM 正交码(内积 S·T = 0)计算 / 选择★★★★3.4
以太网 MAC 帧格式(64~1518 B)与最短帧长推导选择 / 计算★★★★3.5
802.11(CSMA/CA、RTS/CTS)与 VLAN(802.1Q)选择★★★3.5
PPP 协议(帧格式、字节填充、LCP/NCP)选择★★★★3.6
交换机自学习、碰撞域 vs 广播域选择(高频)★★★★★3.6

3.1 数据链路层的功能与封装成帧

3.1.1 基本功能与提供的服务

链路 vs 数据链路链路(物理链路):相邻两个结点之间的物理线路(中间没有任何其他交换结点)。数据链路(逻辑链路):物理链路 + 实现通信协议的硬件和软件——即「把物理线路管起来的那一整套规则」。适配器(网卡)就是执行这些协议的典型软硬结合体,本章讨论的正是数据链路层,它把物理层的原始比特流加工成有结构、可校验、可控制的帧。
五大功能
  1. 封装成帧:给网络层下发的分组加上首部(和尾部)组装成帧,确定帧边界(3.1.2);
  2. 透明传输:无论数据出现什么比特组合,都能原样通过数据链路层而不被误认为控制信息;
  3. 差错控制:检测并处理传输差错(3.2);
  4. 流量控制:协调收发双方速率,防止淹没接收方(3.3);
  5. 链路管理:数据链路的建立、维持、释放(面向连接时)。
为网络层提供的三种服务① 无确认无连接服务:源结点直接发帧,不建连接、不等确认——适用于误码率低、实时性要求高的链路(以太网采用);② 有确认无连接服务:不建连接但要求确认,帧丢了要重发——适用于无线通信等高误码率场景;③ 有确认面向连接服务:建链 → 传帧(逐帧确认)→ 释链,最可靠。判断口诀:「面向连接的服务一定有确认;无连接可以有确认也可以无确认」。
易错① 数据链路层的「寻址」按 MAC 地址(物理地址)进行,是逐跳(相邻结点间)的;网络层 IP 寻址才是端到端的——别说成「链路层保证端到端交付」;
② 「透明传输」指数据内容对链路层透明(什么内容都能传、且不引起误解),不是「看不见」;
③ 可靠传输(确认 + 重传)并不是数据链路层的必需功能——以太网就不做,把可靠性交给上层 TCP,这一点在 3.6 节 PPP 还会考。

3.1.2 组帧四法与帧定界

组帧(封装成帧)就是在一段数据的前后分别添加首部和尾部(尾部尤其重要——它是帧定界的主要载体),构成一个帧。帧定界的核心矛盾:接收方如何从连续的比特流中准确切出一帧的开始和结束,且不受数据内容干扰。四种经典解法:
  1. 字符计数法:帧首部设一个计数字段,标明帧的总长度(含计数字段自身)。致命缺点:计数字段一旦出错,连后面所有帧的边界都找不回来——一错全错。
  2. 字节填充法(字符填充):用控制字符 SOH(帧开始)、EOT(帧结束)定界;数据中若出现 SOH / EOT / ESC,发送端在其前面插入转义字符 ESC(字节填充),接收端再把 ESC 删掉还原——实现透明传输。
  3. 比特填充法:用标志 01111110 定界;发送端对数据扫描,每遇到 5 个连续的 1 立即插入一个 0,保证数据中不出现 6 个连续 1(也就不会伪造出定界符),接收端每收到 5 个连续 1 就删除其后的 0。HDLC、PPP 同步链路采用,易于硬件实现、与字符编码无关。
  4. 违规编码法:借用物理层编码中「不会出现」的组合作定界。如曼彻斯特编码中每个比特中间必有跳变,「高-高」「低-低」(中间不跳变)即违规序列,可放心用作帧边界而不会与数据混淆(IEEE 802.5 令牌环采用)。不需要额外填充,但依赖特定编码方式。
① 字符计数法 计数字段 = 6 数据(总长由计数字段给出) 计数字段一旦传错 → 其后所有帧的边界全部丢失(一错全错) ② 字节填充法 SOH 数据… 数据中出现 SOH→ 改发 ESC SOH 数据… EOT 接收端删掉转义用 ESC,还原出原始数据 → 透明传输 ③ 比特填充法 01111110 数据逢 5 个连续 1 立即插 0如数据 0111111 → 实发 01111101 01111110 ④ 违规编码法 正常曼彻斯特编码:每位中间必跳变 违规序列「高-高 / 低-低」(位中间不跳变)→ 用作帧定界 不填充任何多余比特,但依赖物理层编码方式(802.5 令牌环采用)
图 3-1 组帧四法对比:字符计数靠「数长度」、字节填充靠「转义字符」、比特填充靠「插 0 防伪定界」、违规编码靠「物理层非法电平」——后三种都能实现透明传输,第一种不能
一图速记计数法是唯一不用添加额外比特 / 字节的「隐式边界」(也因此一错全错);字节填充与比特填充都是「转义 / 插入」显式处理;违规编码借用编码冗余零开销。看到题目出现「01111110」「逢 5 个 1 插 0」→ 比特填充(HDLC);「ESC 转义」→ 字节填充(PPP 异步链路);「曼彻斯特违规」→ 违规编码(802.5)。
例 1 真题风格 比特填充计算

数据链路采用比特填充法组帧,定界符为 01111110。发送方的数据部分为 011111111,则实际发送的帧的数据部分(不含定界符)为( )
A. 011111111 B. 0111110111 C. 0111111011 D. 0111111101

查看解答

规则:发送端每遇到 5 个连续的 1,立即插入一个 0。

数据 011111111:从左向右扫,第 2~6 位是 5 个连续 1 → 在其后插 0,得 0111110;剩下的 111 不够 5 个,原样保留。

实际发送:0111110111,选 B。

核对(接收端视角):收到 0111110111,发现前 5 个连续 1 后跟 0 → 删除该 0,其余照抄 → 还原 011111111 ✓。这样数据中永远不会出现 6 个连续 1,定界符 01111110 不会被数据伪造。

易错:C、D 是把 0 插在别处;A 是忘记填充。口诀「五一插零」,插完再从头扫一遍确认没有 6 连 1。

练习 1

判断下列说法的正误:(1) 字符计数法中,计数字段出错只影响当前一帧的接收;(2) 字节填充法中,若数据里出现转义字符 ESC 本身,需要再插入一个 ESC;(3) 比特填充法与数据的具体字符编码无关,便于硬件实现;(4) 违规编码法需要在数据中插入额外的比特。

查看答案

(1) 错:计数出错后帧边界丢失,接收方无法定位下一帧的起点,其后所有帧都会受牵连——这正是它被淘汰的原因;

(2) 对:ESC 也要被转义(ESC ESC),否则接收端分不清「转义符」和「数据恰好等于 ESC」;

(3) 对:比特填充面向比特流工作,与字符编码无关,HDLC 用硬件实现;

(4) 错:违规编码借用编码中的非法组合定界,零额外开销,这正是它的优点。

3.2 差错控制:检错码与纠错码 高频考点

物理层把比特送出门,噪声却一路捣乱。数据链路层的对策是冗余编码:在数据后面附加一些由数据「算出来」的冗余位,接收端用同样规则再算一遍、对一对,就能发现(甚至纠正)差错。只在收端发现错误的叫检错码(奇偶校验、CRC),收端能定位并改正错误的叫纠错码(海明码)。408 在这里出两类题:CRC 模 2 除法、海明码校验位数与纠错。

3.2.1 奇偶校验与 CRC 循环冗余码

奇偶校验在 \(n\) 位数据后加 1 位校验位,使整个码字中 1 的个数为奇数(奇校验)或偶数(偶校验)。检错能力:所有奇数个比特错能检出;所有偶数个比特错检不出。开销小但漏检率高,只用于低速场合。它是「检 1 位错需要码距至少 2」的最直观例子。
CRC 计算四步(必背)设生成多项式 \(G(x)\) 的最高次数为 \(r\),待发数据为 \(k\) 位:
① 在 \(k\) 位数据后补 \(r\) 个 0,作为被除数;
② 用 \(G(x)\) 的系数(\(r{+}1\) 位二进制串)对被除数做模 2 除法(除法中的减法 = 异或,不借位、不看大小);
③ 所得 \(r\) 位余数即 FCS(帧检验序列),用它替换掉补的 \(r\) 个 0:发送码字 = 数据 + 余数;
④ 接收端用同一 \(G(x)\) 除收到的整个码字,余数为 0 判定无错(≠0 则丢弃,不纠错)。
数学依据:发送码字对应的多项式能被 \(G(x)\) 整除——\(\underbrace{x^{r}D(x)}_{\text{补0后被除数}} \oplus R(x)\) 恰是 \(G(x)\) 的倍式。
检错能力精心选取 \(G(x)\) 后,CRC 可检出:所有奇数个比特错、所有双比特错、所有长度 \(\le r\) 的突发错(以及绝大多数更长突发错)。CRC 只检错不纠错,错帧直接丢弃,配合重传机制(3.3 节)实现可靠传输。
模 2 除法口诀「首位是 1 商 1 减除数,首位是 0 商 0 减全零;减法即异或,绝不借位」。做竖式时把每一步的 4 位窗口盯清楚,商是多少根本不用管——只要余数。余数必须凑满 \(r\) 位,前面是 0 也要写全(如余数为 011 不能写成 11)。
例 2 高频考点 CRC 模 2 除法(完整竖式)

已知要发送的数据为 101110,采用 CRC 循环冗余码,生成多项式 \(G(x)=x^{3}+1\)。(1) 写出除数与被除数;(2) 用模 2 除法求余数(逐步写出窗口);(3) 写出实际发送的码字;(4) 验证接收端除法余数为 0。

查看解答

(1) \(G(x)=x^{3}+1\) 的系数为 \(x^{3}+0x^{2}+0x+1\) → 除数 = 1001(4 位,\(r=3\))。被除数 = 数据后补 3 个 0:101110 000(9 位)。

(2) 模 2 除法逐窗口推进(减法即异或):

步骤当前窗口(4 位)首位动作异或结果
①1011(取被除数前 4 位)1商 1,⊕ 10010010
②落下下一位 1 → 01010商 0,不动0101
③落下 0 → 10101商 1,⊕ 10010011
④落下 0 → 01100商 0,不动0110
⑤落下 0 → 11001商 1,⊕ 10010101
⑥落下最后 1 位 0 → 10101商 1,⊕ 10010011

位数用尽,余数 = 末 3 位 = 011(前面的 0 必须保留,凑满 3 位)。

(3) 用余数替换补的 0:发送码字 = 101110 011 = 101110011。

(4) 接收端验证 101110011 ÷ 1001:1011⊕1001=0010 → 0101(首位 0 不动)→ 1010⊕1001=0011 → 0110 → 1101⊕1001=0100 → 1001⊕1001=0000,余数为 0,判定无错 ✓。

套路总结:CRC 四步——「补 0 → 模 2 除 → 取余 → 拼码字」。窗口首位是 1 才异或除数;余数必须写满 \(r\) 位;最后必做一次「接收端除回 0」的验算。

练习 2 方法

要发送的数据为 110011,生成多项式 \(G(x)=x^{2}+x+1\)。求 FCS 与实际发送的码字,并自行验证。

查看答案

除数 = 111(3 位,\(r=2\));被除数 = 110011 00。

逐窗口:110⊕111=001 → 落 0 得 010(首位 0 不动)→ 落 1 得 101⊕111=010 → 落 1 得 101⊕111=010 → 落 0 得 100⊕111=011 → 落 0 得 110⊕111=001。

余数 = 01(2 位),发送码字 = 110011 01 = 11001101。

验证:11001101 ÷ 111:110⊕111=001 → 010 → 101⊕111=010 → 101⊕111=010 → 100⊕111=011 → 111⊕111=000,余 0 ✓。

3.2.2 海明码、码距与纠错能力

码距(海明距离)两个等长码字之间对应位不同的位数称为它们的码距;一个码集中任意两码字码距的最小值称为该码集的最小码距 \(d_{\min}\)。\(d_{\min}\) 决定编码的检错 / 纠错本领——冗余位加得越多,码字之间「离得越远」,抗错能力越强。
纠错能力与码距的关系(必背) ① 检出 \(e\) 位错:\(d_{\min}\ge e+1\);
② 纠正 \(t\) 位错:\(d_{\min}\ge 2t+1\);
③ 同时纠 \(t\) 位、检 \(e\) 位错(\(e>t\)):\(d_{\min}\ge t+e+1\)。
直观理解:要「认出错」,出错码字不能落入另一个合法码字的「势力范围」;要「纠得回」,各码字半径为 \(t\) 的球必须互不重叠——所以是 \(2t+1\)。
海明码(汉明码)能纠 1 位错的纠错码(\(d_{\min}=3\),也可用于检 2 位错,但两者不可兼得)。核心设计:在 \(2\) 的幂次位置(1、2、4、8…)放校验位,其余位置顺序放数据位;每个校验位 \(P_{j}\)(位号 \(2^{j-1}\))负责校验「位号的二进制展开中含 \(2^{j-1}\)」的那些位(偶校验)。校验位位数 \(r\) 由下式确定: \[ 2^{r}\ \ge\ m+r+1\qquad(m\ \text{为数据位数}) \] 接收端对各组重新做偶校验得 \(S_{j}\),把 \(S_{j}\) 按 \(S_{4}S_{2}S_{1}\) 拼成二进制数——这个数恰好就是出错位的位号,将该位取反即完成纠错。
r 速查表\(m=2\sim4\to r=3\);\(m=5\sim11\to r=4\);\(m=12\sim26\to r=5\);\(m=1000\to r=10\)(\(2^{10}=1024\ge1011\))。做法永远是代入 \(2^{r}\ge m+r+1\) 从小往大试。
例 3 真题风格 海明码编码 + 纠错全流程

信息位为 1011,采用海明码传输(偶校验)。(1) 需要多少校验位?(2) 写出完整码字;(3) 若接收方收到 0110001,判断哪一位出错并纠正。

查看解答

(1) \(2^{r}\ge m+r+1=4+r+1\):\(r=3\) 时 \(2^{3}=8\ge8\) ✓,需 3 位校验位,码字共 7 位。

(2) 位号 1~7:校验位放 1、2、4(即 \(P_{1},P_{2},P_{4}\)),数据位 1011 依次放 3、5、6、7:\(b_{3}=1,\ b_{5}=0,\ b_{6}=1,\ b_{7}=1\)。

\(P_{1}\) 管位号含 \(2^{0}\) 的位(1、3、5、7):令 \(P_{1}\oplus b_{3}\oplus b_{5}\oplus b_{7}=0\Rightarrow P_{1}=1\oplus0\oplus1=0\);
\(P_{2}\) 管 2、3、6、7:\(P_{2}=1\oplus1\oplus1=1\);
\(P_{4}\) 管 4、5、6、7:\(P_{4}=0\oplus1\oplus1=0\)。

码字(位 1→7):0110011。

(3) 对 0110001 重新分组校验:

\(S_{1}=b_{1}\oplus b_{3}\oplus b_{5}\oplus b_{7}=0\oplus1\oplus0\oplus1=0\);
\(S_{2}=b_{2}\oplus b_{3}\oplus b_{6}\oplus b_{7}=1\oplus1\oplus0\oplus1=1\);
\(S_{4}=b_{4}\oplus b_{5}\oplus b_{6}\oplus b_{7}=0\oplus0\oplus0\oplus1=1\)。

拼出 \(S_{4}S_{2}S_{1}=110_{2}=6\) → 第 6 位出错,取反得 0110011 → 纠正为 0110011(与 (2) 一致 ✓),取出数据位(3、5、6、7)= 1011。

套路总结:海明码三步——「定 r → 按 2 的幂定位逐组配平 → 收端算 S 拼位号」。校验式列对,剩下的只是异或运算。

例 4 码距与纠错能力互推

(1) 码集 \(\{00000,\ 01011,\ 10101,\ 11110\}\) 的最小码距是多少?能纠几位错、检几位错?
(2) 若要求检出 3 位错,最小码距至少为多少?若要求纠 2 位错呢?

查看解答

(1) 逐一数不同位:\(d(00000,01011)=3\),\(d(00000,10101)=3\),\(d(00000,11110)=4\),\(d(01011,10101)=4\),\(d(01011,11110)=3\),\(d(10101,11110)=3\)。\(d_{\min}=3\):由 \(2t+1\le3\) 得 纠 1 位;由 \(e+1\le3\) 得 检 2 位(二选一)。

(2) 检 3 位:\(d_{\min}\ge e+1=4\);纠 2 位:\(d_{\min}\ge 2t+1=5\)。

易错:检错是 \(e+1\),纠错是 \(2t+1\),「纠 1 检 1 同时」也要 \(d_{\min}\ge t+e+1=3\)——别把三种公式用串。

易错① CRC 只检错不纠错,海明码能纠 1 位错(但 2 位同错时反而会「纠错」纠到好位上——海明码只能检错 / 纠错二选一);
② CRC 余数位数为 \(G(x)\) 最高次数 \(r\),与数据位数无关;补 0 个数也是 \(r\) 个;
③ 「海明码能纠正任意位错误」——错,基本海明码只能纠 1 位;
④ 奇偶校验检不出偶数个错,CRC(配合好的 \(G(x)\))却能检出所有双比特错——这也是链路层选 CRC 不选奇偶的原因。

3.3 流量控制与可靠传输:滑动窗口 大题最热

流量控制解决「发得太快、接收方来不及收」;可靠传输解决「帧丢了 / 错了怎么办」。两者在数据链路层由同一套机制实现——滑动窗口 + 确认 + 超时重传(ARQ 自动重传请求)。按窗口大小分三档:停等协议(发 1 等 1)、后退 N 帧 GBN(连续发、错则回退重来)、选择重传 SR(连续发、谁丢补谁)。序号位数与窗口大小的关系、信道利用率的计算,是 408 网络部分综合大题的头号考点。

3.3.1 停等、后退 N 帧与选择重传

滑动窗口机制发送方维持发送窗口 \(W_{T}\):窗口内的序号才允许发送(已发送未确认 + 尚未发送);收到确认后窗口向前滑动。接收方维持接收窗口 \(W_{R}\):只有落入窗口且序号正确的帧才被接收。三档协议:
  1. 停等协议 SW:\(W_{T}=1,\ W_{R}=1\)。发一帧 → 停下等确认(ACK)→ 确认到了再发下一帧;超时未收到确认就重发。只需 1 bit 序号(0/1 交替)、1 个定时器,最简单但信道利用率极低(见 3.3.2)。
  2. 后退 N 帧协议 GBN:\(W_{T}>1,\ W_{R}=1\)。发送方连续发满窗口;接收方只按顺序收,乱序帧一律丢弃,采用累积确认(收到 ACK\(n\) 表示 \(n\) 及之前的帧全部确认,偶而「捎带确认」);某帧超时后,从该帧起连同后续已发的全部重传(回退 N 帧)。只需 1 个定时器。信道质量差时「回退」浪费严重。
  3. 选择重传协议 SR:\(W_{T}>1,\ W_{R}>1\)。接收方缓存乱序到达的正确帧,逐帧单独确认;发送方只重传真正丢失 / 超时的那一帧,其余不动。每帧一个定时器,实现最复杂、带宽利用最充分。
发送方 A 接收方 B 时间 发送帧 0(同时启动定时器) 正确接收,回 ACK 0 ACK 0(确认帧 0)→ 发送窗口前滑,发送帧 1 × 帧 1 丢失 / 出错 → B 直接丢弃,不回任何确认 A:超时未收到 ACK 1 定时器到点 → 重传 重传帧 1 正确接收,回 ACK 1 ACK 1 停等 = 窗口 1 的特例:任何时刻链路上最多只有 1 帧在途,帧与确认交替占用信道
图 3-2 停等协议的发送—确认—超时重传时序:每帧都要「一个来回」才发下一帧;帧出错时接收方不确认,发送方超时后重传。数据帧和确认帧都可能丢,超时重传是兜底手段(这也是「停止等待」效率低的根源)
GBN 三条铁律① 接收方只按序接收:期望帧号是 \(n\),来了 \(n{+}1\) → 丢弃(不缓存),并重发 ACK\(n{-}1\)(或重复确认期望帧号);② 累积确认:ACK\(n\) = 「\(0\sim n\) 全收到」,即使中间的确认丢了,后面的确认也能「补救」;③ 超时只挂一个总定时器(最早未确认帧的),一旦超时,从最早未确认帧起全部重传——「后退 N 帧」由此得名。例如发 2、3、4、5,其中 3 丢了:接收方收 4、5 全丢,超时后 3、4、5 一起重发。
SR 三条铁律① 接收窗口缓存乱序帧:缺 3 来了 4、5 → 先存着,等 3 补上后一起按序上交;② 逐帧单独确认(非累积):谁收到了就单独回谁的 ACK;③ 哪帧超时重传哪帧,每帧独立定时器。代价是收发两端都要缓冲区与更复杂的状态管理;收益是重传带宽最小。
GBN:发送窗口 W_T = 5(3 位序号 0~7) 0 1 2 3 4 5 6 7 已确认 已发送未确认 可发送(窗口内) 窗口外 发送窗口 = 5 若帧 4 丢失:接收窗口 = 1,5、6 到达也只能丢弃;超时后 4、5、6 全部重传(回退 3 帧) SR:发送窗口 W_T = 4(3 位序号,最大 4) 0 1 2 3 4 5 6 7 已确认 2 丢失,仅重传 2 已单独确认 可发送(窗口内) 窗口外 发送窗口 = 4 接收窗口 = 4:乱序的 3 已被缓存并单独确认;补齐 2 后按序上交,谁丢只补谁
图 3-3 GBN 与 SR 发送窗口对比(3 位序号):同样传 2、3、4,GBN 中 4 丢失要连累 5、6 回退重传;SR 只重传真正丢失的帧,代价是接收方必须开辟缓存窗口
对比项停等 SW后退 N 帧 GBN选择重传 SR
发送窗口 / 接收窗口1 / 1\(>1\) / 1\(>1\) / \(>1\)
确认方式逐帧确认累积确认单独确认
乱序帧处理—直接丢弃缓存等待补齐
定时器个数11(最老未确认帧)每帧 1 个
超时重传范围该帧从最老未确认帧起全部只重传超时帧
窗口上限(\(n\) 位序号)1(\(n\ge1\))\(W_T\le 2^{n}-1\)\(W_T=W_R\le 2^{n-1}\)
一句话评价简单但信道利用率最低流水线发送、重传浪费大带宽利用最优、实现最复杂
序号位数与窗口上限(408 最高频结论)设帧序号字段为 \(n\) 位(可用序号 \(2^{n}\) 个,循环使用):
① GBN:\(W_{T}\le 2^{n}-1\)(接收窗口为 1,需给「新帧」与「旧帧重传」留出区分余地);
② SR:\(W_{T}=W_{R}\le 2^{n-1}\)(一般取 \(W_{T}+W_{R}\le 2^{n}\),408 默认两边对半分)。
③ 停等只需 \(n\ge1\)(0/1 交替)。
反向问法:要支撑窗口 \(W\),GBN 需 \(2^{n}\ge W+1\),SR 需 \(2^{n}\ge 2W\)。SR 的窗口上限只有 GBN 的一半——这是「缓存乱序帧」换来的另一面代价。
易错① GBN 的 ACK\(n\) 是累积确认:表示「\(n\) 及之前全部正确收到」,不是「只确认 \(n\)」;
② 「GBN 接收方收到乱序帧后缓存起来」——错,GBN 接收窗口为 1,一律丢弃;只有 SR 才缓存;
③ SR 不能用累积确认(否则分不清单帧丢失),必须逐帧确认;
④ 「窗口越大越好」——错,超过 \(2^{n}-1\)(或 \(2^{n-1}\))会造成新旧帧序号混淆,接收方无法判断是重传还是新帧。

3.3.2 信道利用率与序号位数(大题模板)

信道利用率公式记:\(t_{f}\) = 单个数据帧的发送时延(帧长 ÷ 数据率),\(t_{p}\) = 单程传播时延,\(t_{a}\) = 确认帧发送时延(通常忽略),往返时延 \(\mathrm{RTT}=2t_{p}\)。一个「发送—确认」周期为 \[ T=t_{f}+\mathrm{RTT}+t_{a}\ \approx\ t_{f}+2t_{p} \] 停等协议:一个周期只发出 1 帧有效数据: \[ U_{\text{停等}}=\frac{t_{f}}{t_{f}+2t_{p}}=\frac{1}{1+2a},\qquad a=\frac{t_{p}}{t_{f}} \] 连续 ARQ(GBN / SR,窗口 \(W\)):一个周期能发 \(W\) 帧,但最多打满信道: \[ U=\frac{\min(W\,t_{f},\ T)}{T}\qquad\Longrightarrow\qquad W\ge\frac{T}{t_{f}}=1+2a\ \text{时}\ U=100\% \]
五步解题模板① 算 \(t_{f}\)=帧长/带宽;② 算 \(t_{p}\)=距离/传播速率,得 \(\mathrm{RTT}\);③ 算周期 \(T=t_{f}+\mathrm{RTT}\)(确认帧时延按题意决定是否加);④ 停等直接 \(U=t_{f}/T\);有窗口则比较 \(W t_{f}\) 与 \(T\) 取小再除以 \(T\);⑤ 若再问序号位数:先由「打满信道」求出所需 \(W^{*}=\lceil T/t_{f}\rceil\),再按 GBN \(2^{n}-1\ge W^{*}\)、SR \(2^{n-1}\ge W^{*}\) 定 \(n\)。所有时间统一换算成同一单位(ms 最方便)。
例 5 高频考点 停等协议信道利用率

主机经一条长 4000 km 的链路向路由器发送帧,传播速率 \(2\times10^{8}\,\text{m/s}\),发送速率 1 Mb/s,数据帧长 1000 B,忽略确认帧的发送时延和处理时延。(1) 求单帧发送时延与往返时延;(2) 采用停等协议时的信道利用率;(3) 此时的有效数据率。

查看解答

(1) \(t_{f}=\dfrac{1000\times8\ \text{bit}}{10^{6}\ \text{b/s}}=8\ \text{ms}\);\(\ t_{p}=\dfrac{4\times10^{6}\ \text{m}}{2\times10^{8}\ \text{m/s}}=20\ \text{ms}\),\(\mathrm{RTT}=40\ \text{ms}\)。

(2) 周期 \(T=t_{f}+\mathrm{RTT}=8+40=48\) ms,期间只发 1 帧有效数据: \[ U=\frac{t_{f}}{T}=\frac{8}{48}=\frac{1}{6}\approx16.7\% \]

(3) 有效数据率 \(=1\ \text{Mb/s}\times\tfrac16\approx167\ \text{kbps}\)——96% 以上的时间都在「等确认」,长距离链路上停等协议几乎不可用。

套路总结:单位先统一(km 与 m/s、B 与 b、ms 与 s),\(t_{f}\) 与 \(t_{p}\) 各算各的,最后再组合。

例 6 真题风格 窗口大小、序号位数与利用率联动

仍用例 5 的链路(\(t_{f}=8\) ms,\(\mathrm{RTT}=40\) ms,\(T=48\) ms)。(1) GBN 取 \(W=5\),信道利用率是多少?(2) 要让信道利用率达到 100%,发送窗口至少多大?(3) 若序号字段为 3 位,GBN 与 SR 各能达到的最大信道利用率是多少?(4) 若要求两种协议都能打满信道,各至少需要几位序号?

查看解答

(1) \(W t_{f}=5\times8=40<48\) → 窗口不够大,\(U=\dfrac{40}{48}=\dfrac56\approx83.3\%\)。

(2) 令 \(W t_{f}\ge T\):\(W\ge\dfrac{T}{t_{f}}=\dfrac{48}{8}=6\),至少 \(W=6\)(这正是公式 \(W^{*}=1+2a\),其中 \(a=t_{p}/t_{f}=20/8=2.5\),\(1+2\times2.5=6\) ✓)。

(3) 3 位序号:GBN \(W\le2^{3}-1=7\ge6\) → 窗口可取 6,U = 100%;SR \(W\le2^{3-1}=4<6\) → \(U=\dfrac{4\times8}{48}=\dfrac{2}{3}\approx66.7\%\)——同样的序号位数,SR 反而打不满。

(4) 需要 \(W\ge6\):GBN 要求 \(2^{n}-1\ge6\) → \(n=3\)(\(7\ge6\));SR 要求 \(2^{n-1}\ge6\) → \(n=4\)(\(2^{3}=8\ge6\))。

易错:第 (3) 问若直接套「GBN 窗口 7、SR 窗口 4」而忘记与「打满所需 6」取交集,就会把 SR 算成 4/6 之外的结果。窗口上限和信道需求,两个约束都要满足。

例 7 高频考点 综合大题全流程

主机 A 通过链路向主机 B 发送数据,链路长 1000 km,信号传播速率 \(2\times10^{8}\) m/s,数据率 10 Mb/s,帧长 1250 B,忽略确认帧时延。(1) 从发送一帧开始到收到该帧确认,至少经过多长时间?(2) 停等协议的信道利用率;(3) 若采用 GBN 且希望利用率达 100%,发送窗口和序号位数如何取?(4) 若序号固定为 4 位,改用 SR,最大信道利用率是多少?

查看解答

(1) \(t_{f}=\dfrac{1250\times8}{10^{7}}=1\) ms;\(t_{p}=\dfrac{10^{6}}{2\times10^{8}}=5\) ms,\(\mathrm{RTT}=10\) ms。收到确认至少 \(t_{f}+\mathrm{RTT}=1+10=11\) ms。

(2) \(U=\dfrac{1}{11}\approx9.1\%\)。

(3) 打满需要 \(W\ge\dfrac{T}{t_{f}}=\dfrac{11}{1}=11\);GBN 要求 \(2^{n}-1\ge11\) → \(n=4\)(\(15\ge11\))。取 \(W=11\)、序号 4 位(W 取 11~15 均可打满,不超过 15 即可)。

(4) 4 位序号 SR:\(W\le2^{4-1}=8\),\(8\times1=8<11\) → \(U=\dfrac{8}{11}\approx72.7\%\)。

套路总结:这就是 408 大题的标准骨架——「传播时延 → 发送时延 → 周期 → 利用率 → 临界窗口 → 序号位数」,五问环环相扣,前一步算错步步错,务必先列公式再代数。

练习 3 方法

链路长 2400 km,传播速率 \(2\times10^{8}\) m/s,数据率 1 Mb/s,帧长 2000 B,忽略确认时延。(1) 求停等协议的信道利用率;(2) 采用 2 位序号的 GBN(\(W=3\))利用率是多少?(3) 采用 2 位序号的 SR(\(W=2\))呢?

查看答案

\(t_{f}=\dfrac{2000\times8}{10^{6}}=16\) ms;\(t_{p}=\dfrac{2.4\times10^{6}}{2\times10^{8}}=12\) ms,\(\mathrm{RTT}=24\) ms;周期 \(T=16+24=40\) ms。

(1) \(U=\dfrac{16}{40}=40\%\)。

(2) \(W t_{f}=3\times16=48>40\) → 打满,\(U=100\%\)(恰用满 2 位序号的上限 \(2^{2}-1=3\),临界达标)。

(3) \(W\le2^{2-1}=2\),\(2\times16=32<40\) → \(U=\dfrac{32}{40}=80\%\)。

核对:打满所需 \(W^{*}=T/t_{f}=2.5\),向上取整为 3——GBN 的 3 恰好够、SR 的 2 差一点,结论自洽。

3.4 介质访问控制

点对点链路(如 PPP)两端独享信道,不存在争抢;但广播信道(总线、无线、早期的集线器以太网)上所有站点共享同一介质——谁都想发就会互相碰撞。介质访问控制(MAC)就是要回答「多路信号如何共享一根信道」。两大路线:静态划分信道(信道划分复用,提前分好、互不干扰,适合用户少且固定)与动态分配(随机访问——想发就抢、撞了再处理;轮询 / 令牌——轮流发言,适合负载重的网络)。

3.4.1 信道划分:FDM / TDM / STDM / WDM / CDM

四种复用
  1. FDM 频分复用:所有用户同时占用不同频带(各路信号频谱搬移到不同频段)。分好后长期占用,频带互不重叠;系统简单但不适合突发性的计算机通信(不发的用户也占着频带)。
  2. TDM 时分复用:用户轮流占用不同时隙,每一周期(TDM 帧)内各占一个固定时隙。同样可能浪费——某用户没数据时其时隙空转。
  3. STDM 统计时分复用(异步 TDM):按需动态分配时隙,集中器把各路数据集中起来只把时隙分给确实有数据的用户,并附上地址信息。可明显提高利用率(一条线路复接更多用户)。
  4. WDM 波分复用:光的频分复用——一根光纤同时传多束不同波长的光,频率极高、互不干扰。
  5. CDM 码分复用(码分多址 CDMA):各用户在同一时间、同一频段用不同的码片序列(chip sequence)区分,靠编码正交性互不干扰——既共享时间又共享频率。
CDM 的数学骨架:正交码给每个站分配一个 \(m\) 位码片向量(取 \(\pm1\),0 比特映射为 \(-1\)),任意两个不同站的码片向量规格化内积为 0: \[ S\cdot T=\frac{1}{m}\sum_{i=1}^{m}S_{i}\,T_{i}=0\qquad(S\ne T),\qquad S\cdot S=1 \] 发送规则:站要发 1 就发原码片,要发 0 就发反码(全部取反),不发不发。多个站的信号线性叠加成合成向量。接收方把合成向量与目标站的码片做内积:得 +1 → 该站发了 1;得 −1 → 发了 0;得 0 → 该站没发。
例 8 高频考点 CDM 正交码:内积解调

共 4 个码片的 CDMA 系统,A、B、C 三站码片分别为 \(A=(1,1,1,1)\)、\(B=(1,-1,1,-1)\)、\(C=(1,1,-1,-1)\)。(1) 验证两两正交;(2) 若 A 发送 1、C 发送 0、B 静默,求信道上的合成向量;(3) 接收方如何分别解出 A、B、C 的发送情况。

查看解答

(1) 逐项相乘再相加:\(A\cdot B=1-1+1-1=0\);\(A\cdot C=1+1-1-1=0\);\(B\cdot C=1-1-1+1=0\)。两两内积均为 0,正交 ✓(各自与自身内积都为 4,规格化后为 1)。

(2) A 发 1 → 发 \(A=(1,1,1,1)\);C 发 0 → 发反码 \(-C=(-1,-1,1,1)\);B 不发。线性叠加: \[ S=A+(-C)=(1-1,\ 1-1,\ 1+1,\ 1+1)=(0,\ 0,\ 2,\ 2) \]

(3) 分别与三站码片做内积(除以 4 规格化):

\(S\cdot A=\dfrac{0+0+2+2}{4}=+1\) → A 发了 1;
\(S\cdot B=\dfrac{0-0+2-2}{4}=0\) → B 没有发送;
\(S\cdot C=\dfrac{0+0-2-2}{4}=-1\) → C 发了 0。

套路总结:三步——「发 0 取反码 → 线性叠加 → 除以 \(m\) 求内积判 +1/−1/0」。内积是 0 说明该站信号在合成向量中完全抵消(没参与)。

易错① CDM 中「0 比特」的表示:数据比特 0 用码片反码发送,不是「不发送」——「不发送」的内积结果才是 0;
② 码片序列两两正交是 CDMA 的前提,考试给出一组码片常要先验算内积是否为 0;
③ FDM / TDM 是「分资源」,CDM 是「加编码」——三者中只有 CDM 允许各用户同时刻、同频段发送。

3.4.2 随机访问:ALOHA 与 CSMA

纯 ALOHA 与时隙 ALOHA纯 ALOHA:思想最简单——想发就发,发生冲突(听不到对方,靠反馈或超时发现)后等一段随机时间再重发。吞吐量极限:\(S=G\,e^{-2G}\),在流量强度 \(G=0.5\) 时取得最大值 \(S_{\max}=\dfrac{0.5}{e}\approx18.4\%\)。
时隙 ALOHA:把时间划分为时隙,规定只能在时隙开始时刻发送——把「碰撞窗口」从 2 个帧长时间压缩到 1 个,吞吐量 \(S=G\,e^{-G}\),\(G=1\) 时 \(S_{\max}=\dfrac1e\approx36.8\%\),恰好翻倍。代价:需要全网时隙同步,且帧必须在时隙开始前就绪(等一个时隙的延迟)。
两个 18.4% / 36.8%纯 ALOHA 极限 18.4%、时隙 ALOHA 极限 36.8%,两者差一倍常考选择。记忆:碰撞窗口减半(2 帧长 → 1 帧长),吞吐翻倍。
CSMA 载波侦听多路访问发前先「听」信道(载波侦听),按「忙时怎么办、闲时怎么办」分三种坚持类型:
  1. 1-坚持 CSMA:侦听到忙就持续侦听,一旦空闲立即(概率 1)发送。信道利用率不错、延迟小,但多个站同时等空闲会同时发 → 必撞(以太网用)。
  2. 非坚持 CSMA:侦听到忙就放弃侦听,等一个随机时间再来听。冲突少、信道利用率高,但随机等待引入额外延迟,且信道空闲后可能没人立刻用(利用率反而下降的细节别与上一条混淆)。
  3. p-坚持 CSMA:用于时隙信道。空闲时以概率 \(p\) 发送、以概率 \(1-p\) 推迟到下一时隙再听;忙则持续侦听。是 1-坚持(\(p=1\))与「稳」之间的折中。
类型信道忙时信道空闲时特点
1-坚持持续侦听立即发送(概率 1)延迟小、易冲突(多个站在等空闲)
非坚持放弃侦听,等随机时间再听立即发送冲突少,但延迟增大
p-坚持持续侦听以 \(p\) 发送,\(1-p\) 推迟到下一时隙折中方案,用于时隙信道

3.4.3 CSMA/CD:边发边听与最小帧长 高频考点

CSMA/CD(冲突检测)用于有线总线 / 集线器以太网(半双工)。四句口诀:先听后发、边听边发、冲突停发、随机重发。「先听后发」继承自 CSMA;关键是「边听边发」——发送的同时检测信道上是否出现碰撞,一旦检测到立即停发(并发送干扰信号强化冲突),随后按退避算法随机等待后重试。只能半双工(不能同时收发,否则无法检测冲突)。
站 A 站 B 时间 t = 0:A 侦听空闲,开始发送 A 的信号以速率 v 向 B 传播(单程时延 τ) t = τ−ε:B 恰好也开始发送 B 的信号向 A 传播 t = τ:两信号在 B 端碰撞 t = 2τ:A 才检测到碰撞! 最坏情形:2τ 结论:A 必须连发 2τ 以上才能「肯定无碰撞」——这正是争用期(冲突窗口)与最小帧长的由来 (A 停发后 B 的碰撞信号仍在路上;只要帧的发送时延 ≥ 2τ,碰撞必能在发送期间被发现)
图 3-4 CSMA/CD 冲突检测的最坏情形:A 发出信号即将到达 B 的瞬间 B 也开始发送,碰撞信号要再传一个单程时延才回到 A——A 最迟要在开始发送后 2τ 才能检测到碰撞,故把 2τ 称为争用期(冲突窗口)
最小帧长公式(必背)为保证「边发边检」覆盖最坏情形,帧的发送时延必须不小于争用期: \[ \frac{\text{最小帧长}}{\text{数据率}}\ \ge\ 2\tau\qquad\Longrightarrow\qquad \text{最小帧长}=2\tau\times\text{数据率} \] 传统以太网(10 Mb/s)取争用期 \(2\tau=51.2\,\mu\text{s}\): \[ 51.2\times10^{-6}\,\text{s}\times10\times10^{6}\,\text{b/s}=512\ \text{bit}=64\ \text{B} \] ——这就是以太网最短帧 64 B 的来历。数据率不变时:跨距越长 → \(\tau\) 越大 → 最小帧长越大;反之跨距不变时速率越高,最小帧长也越大。
例 9 真题风格 最小帧长计算

(1) 某总线网络数据率 100 Mb/s,最远两站间单程传播时延 2.56 μs,求最小帧长;(2) 若该网络保持最小帧长不变而升级到 1 Gb/s,最大跨距变为多少?(传播速率 \(2\times10^{8}\) m/s)

查看解答

(1) 争用期 \(2\tau=2\times2.56=5.12\ \mu\text{s}\),最小帧长 \(=5.12\times10^{-6}\times100\times10^{6}=512\) bit \(=64\) B——快速以太网仍沿用 64 B 最短帧,代价是跨距大幅缩短。

(2) 最小帧长不变(512 bit),则 \(2\tau=\dfrac{512}{10^{9}}=0.512\ \mu\text{s}\),\(\tau=0.256\ \mu\text{s}\),最大跨距 \(=0.256\times10^{-6}\times2\times10^{8}=51.2\) m。

核对量纲:μs × m/s = 10⁻⁶ × 10⁸ m = 100 × μs 的数值 → 0.256×10⁻⁶ s × 2×10⁸ m/s = 51.2 m ✓。速率提高 10 倍,跨距缩为约 1/10——这就是吉比特以太网半双工模式几乎不可用、必须采用载波延伸 / 全双工的原因。

二进制指数退避算法检测到冲突、停发后,不是马上重发(否则再次必撞):把争用期等分为若干时隙,第 \(i\) 次冲突后从 \(0\sim2^{\min(i,10)}-1\) 中随机取一个数 \(k\),等待 \(k\times512\) bit 时间(10 Mb/s 下即 \(k\times51.2\ \mu\text{s}\))再重发。冲突次数越多,随机区间越大(指数扩展),「错峰」效果越强;冲突 16 次仍失败则放弃并报错。该算法后到的站反而可能先发成功(不公平、无优先级),但实现极简单。
练习 4 易错

(1) 一个站经历第 3 次冲突后,退避的时隙数从多大范围内随机选取?(2) 第 12 次冲突后呢?(3) 二进制指数退避最多重传多少次?

查看答案

(1) \(2^{\min(3,10)}=2^{3}=8\) → 从 \(0\sim7\) 共 8 个时隙数中等概率选取;

(2) \(\min(12,10)=10\),\(2^{10}=1024\) → \(0\sim1023\)(第 10 次冲突后区间不再扩大,封顶 1024);

(3) 最多重传 16 次,仍失败则放弃、向上层报告错误。

易错:「第 3 次冲突」取 \(2^{3}\) 而不是 \(2^{3}-1\)——随机数的个数是 8(0~7);超过 10 次后区间固定为 1024 不再翻倍。

3.4.4 CSMA/CA 与轮询 / 令牌传递

为什么无线局域网用 CA 不用 CD802.11 采用 CSMA/CA(冲突避免)而非 CSMA/CD,两个原因:
① 隐蔽站问题:A、C 都在 B 的覆盖范围内但彼此听不到,A 检测信道空闲并不能保证 B 处没有碰撞——「听不到 ≠ 没有碰撞」;
② 无线设备接收信号强度动态范围极大:自己发送的信号远强于远处传来的微弱信号,「边发边听」在硬件上难以实现。
因此只能「事前避免」而非「事中检测」:发前侦听 + 帧间间隔 + 退避(信道忙时启动,且只在信道空闲期间倒计时)+ 确认帧 ACK(收不到 ACK 就当冲突重发,用「事后确认」代替「边发边检」);可选 RTS/CTS 预约机制:先发短帧 RTS 请求发送,接入点回 CTS,让隐蔽站从 CTS 中得知「接下来有人要发、闭嘴多久」(虚拟载波侦听 NAV)。这些手段把冲突概率尽量压低,但无法像 CD 那样「当场检出」,信道利用率仍低于有线的 CSMA/CD。
轮询与令牌传递(受控接入)轮询协议:主结点依次询问各从站「有数据吗」,被点名才能发——无冲突,但轮询开销随站点数增大、单点故障致命。令牌传递协议:一个特殊格式的令牌(token)帧沿逻辑环依次传递,持有令牌者才能发送,发完(或时限到)把令牌传给下一站——天然无冲突,重负载下吞吐稳定、各站公平;轻负载时「等令牌」白白增加时延。典型代表 IEEE 802.5 令牌环(令牌传递也用于 FDDI)。选择题常考:「既不冲突又公平 → 令牌;站点少且固定、实时 → 轮询;实现简单、突发业务 → 随机访问」。
易错① CSMA/CD 用于有线半双工以太网;CSMA/CA 用于无线 802.11——「以太网用 CA」立刻判错;
② 全双工交换机以太网(每条链路独享、无碰撞)不再需要 CSMA/CD;
③ 争用期 \(2\tau\) 中 \(\tau\) 是单程端到端传播时延,别代入往返值;
④ 802.11 的 ACK 是链路层确认(对比以太网——以太网链路层不确认、差错帧直接丢弃交给上层),这是 802.11「用确认代替检测」的标志。

3.5 局域网:以太网、802.11 与 VLAN

局域网(LAN)的特点:地理范围小、速率高、时延小、归一个单位所拥有。主流技术是以太网(IEEE 802.3),无线局域网是 802.11。以太网两个「世界观」级别的选择要记牢:① 逻辑上是总线型(半双工时靠 CSMA/CD),物理上可星型(集线器 / 交换机);② 向网络层提供无连接、无确认服务——不可靠,差错帧直接丢弃,纠正交给高层。

MAC 地址(物理地址)48 位(6 字节),固化在适配器(网卡)ROM 中:前 3 字节为厂商标识(OUI),后 3 字节由厂商自定,全球唯一。全 1 地址 FF-FF-FF-FF-FF-FF 为广播地址。注意区分:MAC 地址标识「链路层接口」,逐跳变化(每段链路换源 / 目的 MAC);IP 地址标识「主机 + 接口」,端到端不变——这个对比是网络层大题的地基。
前导码 7B +定界符 SFD 1B 目的地址6 B 源地址6 B 类型2 B 数据(上层分组)46 ~ 1500 B,不足 46 B 需填充 FCS4 B (CRC) MAC 帧长 = 18 + [46, 1500] = 64 ~ 1518 B 不属于 MAC 帧 全 1 为广播地址 0x0800=IPv40x0806=ARP MTU = 1500 B 检错范围:目的地址→数据 帧间还要留 96 bit 时间的帧间间隔(IFG),给整机恢复时间;帧长按字节计,前导码不计入——「以太网帧 64~1518 B」是选择题送分点
图 3-5 以太网 V2 MAC 帧格式:首部 14 B(目的 6 + 源 6 + 类型 2)+ 数据 46~1500 B + 尾部 FCS 4 B;数据不足 46 B 时填充——填充是为了凑足 64 B 最短帧(3.4.3 的最小帧长约束)
例 10 高频考点 帧长与填充计算

(1) 网络层交下来一个 30 B 的分组,封装成以太网帧后帧长是多少?填充了多少字节?(2) 传输 1500 B 的分组呢?(3) 交换机收到一个总长 40 B 的「帧」,应如何处理?

查看解答

(1) 首部 + 尾部固定 18 B;数据 30 B < 46 B,需填充 \(46-30=16\) B。帧长 \(=18+46=64\) B(最短帧)。

(2) 数据 1500 B 恰为 MTU,无需填充,帧长 \(=18+1500=1518\) B(最长帧)。

(3) 40 B < 64 B,直接丢弃——比最短帧还短的「帧」必然是碰撞碎片(CSMA/CD 冲突残骸),没有任何接收价值。

套路总结:数据 < 46 B 补齐到 46;「帧长 < 64 B 丢弃」与「填充」是一体两面,都源于最小帧长公式(例 9)。

快速以太网与吉比特以太网100 Mb/s 快速以太网(100BASE-T)与吉比特以太网保持 MAC 帧格式、最短帧长 64 B 全部不变,只提高速率——代价见例 9:速率升高 10 倍,跨距缩到几十米。吉比特以太网为此引入载波延伸(半双工时把争用期人为拉长到 4096 bit 时间);实践中干脆全面转向全双工 + 交换机,此时链路独享、无冲突,CSMA/CD 自然退役。10 吉比特(10GE)只有全双工,彻底去掉 CSMA/CD。

802.11 无线局域网 辨析

组成:BSS 与 ESS基本服务集 BSS:一个接入点 AP(无线接入点/基站)的覆盖范围 + 其内的移动站,是 802.11 的最小组成单元(有固定基础设施模式)。扩展服务集 ESS:多个 BSS 通过分配系统 DS(通常是以太网)连接而成,AP 间可漫游(切换 AP 不换 ESS,MAC 帧用 AP 地址衔接)。另有一种无固定基础设施模式——自组织网络(Ad hoc):没有 AP,站点对等互相通信。802.11 帧的标志:最多 4 个地址字段(地址 1 接收端 RA、地址 2 发送端 TA、地址 3 目的端 DA、地址 4 仅 Ad hoc 源端用), MAC 帧长可变。
易错① 802.11 使用 CSMA/CA(3.4.4),不是 CD;确认帧 ACK、RTS/CTS 都是为了「冲突避免」;
② 802.11 帧的「地址 3」常是目的站或 AP 的衔接地址——跨 BSS 通信要经两个 AP 中转,源 / 目的 MAC 都保存在帧里;
③ BSS 内站间通信也要经过 AP 转发( Infrastructure 模式下站与站不直连)。

VLAN 虚拟局域网

VLAN:把一个物理局域网切成多个逻辑网交换机以太网仍是一个广播域,广播风暴与安全问题随规模恶化。VLAN 在交换机上逻辑地把站点划分成若干组:每个 VLAN 是一个独立的广播域,不同 VLAN 之间二层不通,必须经路由器(或三层交换机)转发。划分方式(按考频排序):
  1. 基于交换机接口:把端口静态指派给 VLAN(最常用、最简单);
  2. 基于 MAC 地址:站点搬到哪个口都跟着 VLAN 走,适合移动用户;
  3. 基于协议类型 / IP 地址(三层信息):按上层协议或网段划分。
802.1Q 帧格式帧从本 VLAN 外的链路(干道链路 trunk)发出时,在源地址字段之后、类型字段之前插入 4 B 的 VLAN 标签:TPID(2 B,固定 0x8100,标识这是 802.1Q 帧)+ TCI(2 B,含 12 位 VLAN ID,可标识 \(2^{12}=4096\) 个 VLAN)。因此 802.1Q 帧的最大帧长变为 \(1518+4=1522\) B。接入链路(access,接普通主机)上传递无标签的普通帧,标签由交换机负责加 / 删——主机感知不到 VLAN 存在。
例 11 真题风格 VLAN 与广播域

一台 16 口交换机划分了 VLAN2(端口 1~8)与 VLAN3(端口 9~16),端口 1 的主机 A ping 端口 9 的主机 B(二者 IP 属不同网段)。下列说法正确的是( )
A. A 发出的帧能直接经交换机到达 B,因为都在同一台交换机上
B. 广播帧会被转发到全部 16 个端口
C. A 与 B 之间的通信必须经过路由器(或三层交换机)
D. 802.1Q 标签由主机 A 负责添加

查看解答

C。VLAN 隔离了二层连通性:不同 VLAN 间通信是三层(路由)问题,必须经路由器 / 三层交换机;

A 错:同一交换机但不同 VLAN,二层被隔离,帧不会从 VLAN2 的端口转发到 VLAN3 的端口;

B 错:广播域已被 VLAN 切开,VLAN2 的广播帧只泛洪到端口 1~8;

D 错:802.1Q 标签由交换机在干道链路上插入 / 剥离,主机不感知。

套路总结:「VLAN = 广播域切开 + 二层不通」。凡出现「同一交换机 / 不同 VLAN」,一律按两个独立局域网处理。

3.6 广域网与链路层设备:PPP、HDLC 与交换机

广域网(WAN)覆盖国家 / 洲际范围,核心问题是长距离、点对点链路上的数据传输。408 在这里的考点集中在 PPP 协议(用户接入因特网最常用的数据链路层协议)与链路层设备的转发(网桥 / 交换机)。

3.6.1 PPP 协议

PPP 的三个组成部分(必背)① 一个将 IP 数据报封装到串行链路的方法(帧格式,类似 HDLC但面向字节);② LCP 链路控制协议:建立、配置、测试和拆除数据链路连接(先「把链路打通」);③ NCP 网络控制协议:为每种网络层协议提供配置(如 IPCP 可为拨号主机动态分配 IP 地址——「先 LCP 后 NCP」是建立过程的固定顺序)。PPP 只支持全双工点对点链路,不支持多点线路。
PPP 帧格式(6 个字段)标志 F(0x7E,1 B)|地址 A(0xFF,1 B,无实际意义,只是形式上填充)|控制 C(0x03,1 B,同左)|协议(2 B,指明信息字段是哪种网络层协议,如 0x0021=IP)|信息(≤1500 B)|帧检验序列 FCS(2 B,CRC)。首尾标志 0x7E 定界,帧长必须是整数个字节(面向字节)。透明传输:异步链路用字节填充,同步链路用零比特填充。
例 12 高频考点 PPP 字节填充

PPP 在异步链路上传输的信息字段字节流为 7E 7D 05 31(十六进制),经字节填充后实际发送的字节流是什么?写出每个字节的变换。

查看解答

字节填充规则:0x7E(定界符)→ 7D 5E;0x7D(转义符)→ 7D 5D;数值小于 0x20 的控制字符 → 7D + 原字节第 6 位置 1(即与 0x20 异或)。普通字节原样发送。

原字节类型发送字节
7E帧定界符7D 5E
7D转义字符7D 5D
05小于 0x20 的控制字符7D 25(05 ⊕ 20 = 25)
31普通数据31

实际发送:7D 5E 7D 5D 7D 25 31(7 字节)。接收端按相反规则还原。

易错:05 的变换是「异或 0x20」而不是「加 7D 后照抄」——05 ⊕ 20 = 25(二进制 0000 0101 ⊕ 0010 0000 = 0010 0101)。

PPP 为什么不提供可靠传输PPP 不使用序号和确认机制(无超时重传),只保留 FCS 检错(错帧丢弃)。原因:① 数据链路层的误码率已很低(现代通信线路质量好),再做可靠传输收益小;② 若在链路层做可靠传输(逐帧确认 + 重传),开销大、实时性差;③ 上层(TCP)已经能提供端到端可靠性。一句话:PPP 只保证「无差错接受」,不保证「可靠交付」。这也是「数据链路层不一定可靠」的代表案例(以太网同理)。

3.6.2 HDLC 简述

HDLC(面向比特的协议)帧定界符 01111110,透明传输用零比特填充(逢 5 个连续 1 插 0,3.1.2 已练)。帧分为三类:信息帧(I)传数据、监督帧(S)流量 / 差错控制(RR、REJ 等)、无编号帧(U)链路管理。HDLC 有序号和确认机制,提供可靠传输——与 PPP 恰成对照。
对比项PPPHDLC
面向对象面向字节(帧长为整数字节)面向比特
透明传输异步链路字节填充 / 同步链路零比特填充零比特填充(逢 5 个 1 插 0)
序号与确认无(不可靠,错帧丢弃)有(可靠传输)
协议协商LCP + NCP(灵活、支持多种网络层)无协商过程
典型场景拨号 / 光纤接入因特网早期广域网同步链路

3.6.3 网桥与以太网交换机:自学习、碰撞域与广播域

以太网交换机 = 多端口网桥工作在数据链路层,依据 MAC 帧的目的地址查转发表(MAC 地址表)转发。核心算法只有两步:收到帧先「学」(把源 MAC 与进入端口登记入表,已存在则刷新)再「查」(按目的 MAC 决定转发方式)——因此透明网桥即插即用、无需配置。表项带老化时间,长期不刷新即删除。为防环路(帧在环中永久兜圈),实际网络还运行生成树协议 STP(了解即可)。
① 从端口 x 收到帧(源 MAC = S,目的 MAC = D) ② 自学习:登记 S → 端口 x(表项带老化时间,重复则刷新) ③ 查转发表目的 D 命中? 未命中 ④ 泛洪(洪泛)向除进入端口 x 外的所有端口转发 命中 ⑤ 定向转发到端口 y若 y = x(目的就在进入网段)→ 直接丢弃,不转发 转发表条目 = MAC 地址 → 端口号(+ 老化计时器);「学源、查目的」四字诀 广播帧(目的 = FF-FF-FF-FF-FF-FF)永远泛洪——除非端口属于另一个 VLAN(3.5)
图 3-6 以太网交换机自学习与转发流程:先登记源 MAC(学),再查目的 MAC(查)——命中则定向转发(出端口 = 入端口时丢弃),未命中则泛洪。整个过程无需人工配置,所以称「透明网桥」
两种交换方式① 存储转发:整帧收完、CRC 校验无误再转发——可靠、可跨速率转发,时延较大;② 直通交换:收到目的地址(前 6 B)立即查表转发——时延小,但不校验差错(坏帧照转)、要求端口同速率。
碰撞域 / 冲突域 vs 广播域(必背表)
设备工作层次碰撞域广播域
中继器 / 集线器物理层不隔离(全体仍是一个碰撞域)不隔离
网桥 / 以太网交换机数据链路层隔离(每个端口一个独立碰撞域)不隔离(除非划分 VLAN)
路由器网络层隔离隔离
记法:「交换机切碰撞域,路由器(和 VLAN)切广播域」。集线器只放大信号,什么域都不切。
例 13 真题风格 数碰撞域与广播域

拓扑:路由器 R 连接交换机 S 的端口 1;S 的端口 2、3、4 分别连接集线器 H1、H2、H3;每个集线器再接 2 台主机(共 6 台)。该网络(含 R 与 S 之间的链路)共有几个碰撞域、几个广播域?

查看解答

碰撞域(从设备逐段数):

① H1 及其 2 台主机 + S 端口 2 —— 集线器不隔离碰撞域,整段是 1 个碰撞域;同理 H2 段、H3 段各 1 个(共 3 个);④ S 端口 1 与 R 之间的链路是交换机的一个独立端口段 —— 1 个。合计 4 个碰撞域。

广播域:S 未划分 VLAN → S 及其下挂的 3 个集线器、6 台主机仍属同一广播域(1 个);路由器隔离广播 → R 的另一侧再算 1 个。合计 2 个广播域。

套路总结:先画图,把「交换机每个端口」断开数碰撞域;再把「交换机(无 VLAN 时整台)+ 集线器」圈成广播域、到路由器截止。口诀——集线器不断、交换机断碰撞域、路由器全断。

练习 5

判断:(1) 以太网交换机隔离碰撞域,也隔离广播域;(2) 集线器上连接 4 台主机,任何时刻只能有一台发送;(3) PPP 帧的地址字段固定为 0xFF,无实际作用;(4) 透明网桥需要网络管理员手工配置转发表;(5) 交换机收到目的地址未登记的单播帧时丢弃。

查看答案

(1) 错:交换机隔离碰撞域,但不隔离广播域(除非 VLAN);

(2) 对:集线器整个网段是一个碰撞域,CSMA/CD 限制同一时刻只能一站发送;

(3) 对:PPP 点对点链路无需地址寻址,A=FF、C=03 只是保持 HDLC 兼容的形式字段;

(4) 错:透明网桥即插即用,转发表由自学习算法自动建立;

(5) 错:未命中应泛洪到除进入端口外的所有端口(丢弃的是「广播帧之外、出端口 = 入端口」的情形)。

3.7 章末自测 真题风格

限时 60 分钟,先做后看答案。难度:★★ 基础 / ★★★ 强化 / ★★★★ 冲刺。自检标准:12 题对 10 题以上;其中自测 11、12(滑动窗口与 CRC 计算)必须全对——它们是数据链路层综合大题的直系原型。做错的题回到对应小节重看「套路总结」。

自测 1(选择 · ★★)

下列关于组帧方法的叙述中,错误的是( )
A. 字符计数法的计数字段出错时,后续所有帧的边界都可能丢失
B. 字节填充法中数据出现定界字符时需要转义
C. 比特填充法中接收端每收到 5 个连续的 1 就删除其后的 0
D. 违规编码法需要插入额外的定界比特,开销最大

查看答案

D。违规编码借用编码中的非法组合(如曼彻斯特的「高高 / 低低」)定界,零额外开销,恰好是开销最小的方法;A、B、C 均正确。

自测 2(选择 · ★★★ 高频考点)

要发送的数据为 1010,采用 CRC,生成多项式 \(G(x)=x^{3}+x+1\),则 FCS 为( )
A. 011 B. 101 C. 110 D. 0110

查看答案

A。除数 1011,被除数 1010 000:1010⊕1011=0001 → 落 0 得 0010 → 落 0 得 0100 → 落 0 得 1000⊕1011=0011,余数 = 011(3 位)。D 项 4 位是没搞清余数位数 = 最高次数 3。

自测 3(选择 · ★★★)

用海明码(纠 1 位错)传输 16 位数据,至少需要的校验位数是( )
A. 4 B. 5 C. 6 D. 2

查看答案

B。代入 \(2^{r}\ge m+r+1\):\(r=4\) 时 \(16<16+4+1=21\) 不够;\(r=5\) 时 \(32\ge22\) ✓。

自测 4(选择 · ★★★★ 高频考点)

后退 N 帧协议的帧序号用 4 位编码,发送窗口最大为( )
A. 8 B. 15 C. 16 D. 7

查看答案

B。GBN:\(W_T\le2^{n}-1=2^{4}-1=15\)。选 C 是忘记减 1;若是 SR 则为 \(2^{n-1}=8\)(选 A 的陷阱)。

自测 5(选择 · ★★★★)

选择重传协议 SR 使用 4 位序号,通常取发送窗口 = 接收窗口 = \(W\),则 \(W\) 最大为( )
A. 15 B. 8 C. 16 D. 4

查看答案

B。SR 约束 \(W_T+W_R\le2^{n}=16\),两者相等时各取 8(即 \(W\le2^{n-1}\))。窗口再大就会新旧帧序号混淆。

自测 6(选择 · ★★★★)

停等协议中,数据帧发送时延 1 ms,单程传播时延 2 ms,忽略确认帧时延,信道利用率为( )
A. 50% B. 33.3% C. 25% D. 20%

查看答案

D。\(U=\dfrac{t_f}{t_f+2t_p}=\dfrac{1}{1+2\times2}=\dfrac15=20\%\)(\(a=t_p/t_f=2\),\(U=1/(1+2a)\))。

自测 7(选择 · ★★★★ 高频考点)

传统 10 Mb/s 以太网争用期为 51.2 μs,其最短帧长为( )
A. 32 B B. 64 B C. 128 B D. 512 B

查看答案

B。最短帧长 \(=2\tau\times\)数据率 \(=51.2\times10^{-6}\times10^{7}=512\) bit \(=64\) B。D 混淆了 bit 与字节。

自测 8(选择 · ★★★)

某 CSMA 协议「侦听到信道忙就放弃侦听、等待一个随机时间后再侦听,一旦空闲立即发送」,它属于( )
A. 1-坚持 CSMA B. 非坚持 CSMA C. p-坚持 CSMA D. 时隙 ALOHA

查看答案

B。「忙则随机等待再听」是非坚持的标志;1-坚持忙时持续侦听、闲时概率 1 立即发;p-坚持闲时以概率 p 发送。

自测 9(选择 · ★★★)

IEEE 802.11 采用 CSMA/CA 而非 CSMA/CD 的主要原因不包括( )
A. 存在隐蔽站问题,侦听空闲不代表不会碰撞
B. 无线设备难以在发送的同时检测到微弱的碰撞信号
C. 无线信道的数据率太低,检测冲突浪费时间
D. 无线信道误码率高,需要 ACK 确认机制配合

查看答案

C。A、B 是不用 CD 的两大根本原因;D 是 CA 配套措施(链路层 ACK)。数据率高低与「能否检测冲突」无关。

自测 10(选择 · ★★★★)

下列关于以太网交换机与 VLAN 的叙述中,正确的是( )
A. 交换机向除进入端口外的所有端口转发单播帧
B. 802.1Q 帧比普通 MAC 帧多 4 B 的 VLAN 标签(插在源地址字段与类型字段之间),最大帧长 1522 B
C. 划分 VLAN 后,不同 VLAN 间仍可直接二层通信
D. 主机发送帧时需要自己添加 VLAN 标签

查看答案

B。802.1Q 标签 = TPID(0x8100,2 B)+ TCI(含 12 位 VLAN ID,2 B),插在源地址之后、类型字段之前,最大帧 \(1518+4=1522\) B;A 错——已知目的地址的单播帧查表定向转发,泛洪的是未知单播 / 广播帧;C 错——VLAN 间须路由;D 错——标签由交换机在干道链路上加 / 删,主机无感。

自测 11(综合 · ★★★★★ 冲刺)

主机 A 经一条长 3000 km 的链路向 B 连续发送数据,传播速率 \(2\times10^{8}\) m/s,数据率 1 Mb/s,帧长 1500 B,忽略确认帧时延。(1) 求停等协议的信道利用率;(2) 采用 GBN、序号 3 位,信道利用率是多少?(3) 采用 SR、序号 2 位呢?(4) 若要求 SR 达到 100% 利用率,至少需要几位序号?

查看解答

公共量:\(t_f=\dfrac{1500\times8}{10^{6}}=12\) ms;\(t_p=\dfrac{3\times10^{6}}{2\times10^{8}}=15\) ms,\(\mathrm{RTT}=30\) ms;周期 \(T=12+30=42\) ms。

(1) \(U=\dfrac{12}{42}=\dfrac{2}{7}\approx28.6\%\)。

(2) 3 位序号 GBN:\(W\le2^{3}-1=7\);打满需 \(W\ge42/12=3.5\),取 \(W=4\)(4 ≤ 7 允许):\(4\times12=48>42\) → U = 100%。

(3) 2 位序号 SR:\(W\le2^{2-1}=2\),\(2\times12=24<42\) → \(U=\dfrac{24}{42}\approx57.1\%\)。

(4) SR 打满需 \(W\ge3.5\),即 \(W=4\);要求 \(2^{n-1}\ge4\Rightarrow n=3\)(此时 \(W\) 恰可取 4,\(4\times12=48\ge42\) ✓)。

核对链:打满窗口 \(W^{*}=\lceil T/t_f\rceil=\lceil3.5\rceil=4\),GBN 上限 7 够用、SR 上限 2 不够——与 (2)(3) 结论一致。

自测 12(综合 · ★★★★)

(1) 要发送的数据为 1011,生成多项式 \(G(x)=x^{3}+x+1\),求 FCS 与实际发送码字;(2) 若接收端收到 1011100(传输中第 5 位由 0 变 1),接收端如何判断出错?(3) 该码能否纠正错误?

查看解答

(1) 除数 1011,被除数 1011 000。逐窗口:1011⊕1011=0000 → 落 0、0、0 始终首位为 0 → 余数 000。FCS = 000,发送码字 1011 000 = 1011000(余数为全 0 是合法情形,位数仍按 3 位写)。

(2) 接收端用 1011 除 1011100:1011⊕1011=0000 → 落 1 得 0001 → 落 0 得 0010 → 落 0 得 0100,余数 100 ≠ 0 → 判定出错,丢弃该帧。

(3) 不能。CRC 是检错码,只发现错误并丢弃,纠错要靠海明码这类纠错码或重传机制。

易错:余数 000 时别怀疑自己算错——数据恰好是 \(G(x)\) 的倍式时余数就是 0,FCS 照写 3 个 0。

3.8 本章考点总结

考点常考题型热度核心方法 / 一句话结论
组帧四法选择★★★计数法一错全错;字节填充 ESC 转义;比特填充逢 5 个 1 插 0;违规编码零开销(802.5)
CRC 循环冗余码计算 / 选择★★★★★补 \(r\) 个 0 → 模 2 除(异或不借位)→ 余数即 FCS(写满 \(r\) 位);检错不纠错,错帧丢弃
海明码与码距计算 / 选择★★★★\(2^{r}\ge m+r+1\);校验位放 2 的幂位;校验式拼出的数 = 出错位号(纠 1 位);检 \(e\) 需 \(d_{\min}\ge e+1\)、纠 \(t\) 需 \(2t+1\)
停等 / GBN / SR大题 / 选择★★★★★停等 1/1;GBN 累积确认、乱序丢弃、超时全部重传;SR 单独确认、缓存乱序、只补丢失帧
信道利用率综合大题★★★★★\(U=t_f/(t_f+\mathrm{RTT})\);窗口版 \(U=\min(Wt_f,T)/T\);打满窗口 \(W^{*}=T/t_f\)——先算 \(t_f\)、\(t_p\) 再套公式
序号位数与窗口大题一问 / 选择★★★★★GBN:\(W\le2^{n}-1\);SR:\(W\le2^{n-1}\);先求打满所需 \(W^{*}\),再与协议上限取交集
CDM 码分复用计算 / 选择★★★★不同站码片内积为 0;发 1 发原码、发 0 发反码、不发不发;合成向量 ÷\(m\) 内积:+1/−1/0 → 1/0/未发
ALOHA 与 CSMA选择★★★纯 ALOHA 极限 18.4%、时隙 36.8%;1-坚持「忙等闲发」、非坚持「忙等随机时间」、p-坚持「闲时概率发送」
CSMA/CD 与最小帧长计算 / 选择★★★★★最小帧长 = 2τ × 数据率(以太网 512 bit = 64 B);先听后发、边听边发、冲突停发、随机重发;退避区间 \(2^{\min(i,10)}\),16 次放弃
CSMA/CA选择★★★无线不能用 CD:隐蔽站 + 自发信号远强于接收信号;用 IFS + 退避 + 链路层 ACK + RTS/CTS 代替
以太网 MAC 帧选择 / 计算★★★★14 B 首部 + 数据 46~1500 B + FCS 4 B = 64~1518 B;不足 46 B 填充;短于 64 B 丢弃;MTU = 1500 B
802.11 与 VLAN选择★★★BSS 由 AP 覆盖、ESS 由 DS 互联、Ad hoc 无 AP;802.1Q 插 4 B 标签(TPID 0x8100 + 12 位 VID)→ 1522 B;VLAN 隔广播域、间通靠路由
PPP 协议选择★★★★F(7E)+A(FF)+C(03)+协议(2B)+信息+FCS;字节填充 7E→7D5E、7D→7D5D;LCP 先于 NCP;无序号无确认(误码低 + 开销小 + 上层可靠)
交换机自学习选择 / 情景推演★★★★★「学源、查目的」:源 MAC 登记入端口;命中定向转发(出端口 = 入端口则丢弃)、未命中泛洪;表项带老化时间
碰撞域 vs 广播域选择(数图题)★★★★★集线器全不隔、交换机隔碰撞域不隔广播域(VLAN 除外)、路由器全隔——先数碰撞域(交换机每端口一个)再圈广播域
下一步本章过关标准:例题 13 道独立重做;自测 12 题对 10 题以上;能脱口而出五件事——「CRC 余数怎么求?GBN / SR 窗口上限各是多少?最小帧长为什么是 64 B?无线为什么不用 CD?交换机怎么自学习?」(模 2 除 / 2ⁿ−1 与 2ⁿ⁻¹ / 2τ×带宽 / 隐蔽站 + 信号强度 / 学源查目的)。随后进入 第 4 章 网络层——本章的 MAC 地址、交换机转发将升级为 IP 地址与路由选择,以太网帧里的「类型字段」正是 IP 分组的入口。