408 · 计算机网络 · 第 3 章 · 分量 ★★★★

在一段链路上,把帧可靠地交给邻居

链路层只管相邻两个结点之间的一跳:把数据装成帧、检查有没有错、出错了重传;多台主机共用一根线时,还要决定谁先发。

这一章只要会:

  1. 停等、GBN、SR 的窗口与重传
  2. 信道利用率计算
  3. CSMA/CD 最短帧长与退避
  4. 以太网帧、交换机、冲突域与广播域
一 · 主线

把一段不可靠的线路,变成能用的链路

一串比特,从哪开始到哪结束

组帧
加上帧首部和尾部做边界。数据里碰巧出现边界标志时要转义(字节填充、零比特填充)

传的过程中出错了怎么知道

检错
发送方算出 CRC 冗余码附在帧尾,接收方再算一遍,余数不为 0 就丢弃

丢了、错了怎么补救 必考

可靠传输
序号 + 确认 + 超时重传。从一次发一帧(停等)发展到一次发多帧(GBN、SR)

多台主机共用一根线,谁先发 必考

介质访问控制
以太网用 CSMA/CD:先听再发,边发边听,撞了就停,随机等一会儿再发

落到实际产品:以太网 必考

局域网
以太网帧格式、MAC 地址;交换机按 MAC 地址转发,把一个冲突域拆成很多个

两点之间直接连:PPP

广域网
点对点链路上用的协议,只检错,不保证可靠
二 · 重点

三种可靠传输协议

三种协议的区别只有两个:一次能发几帧,出错后重传哪些。

停止-等待后退 N 帧 GBN选择重传 SR
发送窗口1大于 1大于 1
接收窗口11大于 1
收到乱序帧—直接丢弃先缓存起来
确认方式逐帧确认累积确认逐帧确认
超时后重传这一帧出错帧及之后所有已发的帧只重传出错的那一帧
窗口上限(n 位序号)—发送窗口 ≤ 2ⁿ − 1发送 + 接收 ≤ 2ⁿ
通常各取 2ⁿ⁻¹

累积确认:收到 n 号帧的确认,说明 n 号及之前的帧全都收到了。GBN 的题先找"收到的最大确认号"。

2009 真题数据GBN 重传几帧

发送方已发送 0~7 号帧,超时时只收到 0、2、3 号帧的确认。

累积确认,最大确认号是 3 0~3 号都已收到 重传 4、5、6、7,共 4 帧

2011 真题数据SR 重传几帧

发送方已发送 0~3 号帧,已收到 1 号帧的确认,0、2 号帧依次超时。

SR 逐帧确认,只重传超时的 重传 0、2,共 2 帧 3 号还没超时,不重传

信道利用率

一个发送周期 T = 发一帧的时间 + 往返传播时延 + 发确认帧的时间 停等协议利用率 = 发一帧的时间 ÷ T 窗口为 W 时利用率 = W × 发一帧的时间 ÷ T (不超过 1)

想让利用率达到 100%,发送窗口要大到"一个周期内一直有帧可发",即 W ≥ T ÷ 发一帧的时间。

2012 真题数据求序号至少几位

GBN 协议,数据传输率 16 kb/s,单向传播时延 270 ms,数据帧长 128~512 字节,确认帧与数据帧等长。要让信道利用率最高,帧序号至少几位?

帧越短,一个周期里能发的帧越多,需要的窗口越大,所以按最短帧算 发一帧 = 128 × 8 ÷ 16 000 = 64 ms 周期 T = 64 + 270 × 2 + 64 = 668 ms 一个周期可发 668 ÷ 64 ≈ 10.4 帧 → 发送窗口至少 11 2ⁿ − 1 ≥ 11 → n = 4 位
三 · 重点

CSMA/CD:先听再发,边发边听

ABt = 0 A 开始发t ≈ τ B 以为空闲也开始发,立刻冲突t ≈ 2τA 才检测到冲突A 的信号冲突信号传回
τ 是信号从一端传到另一端的时间。最坏情况下,A 发出后要过 2τ 才能确定没有冲突,2τ 叫做争用期。

为什么有最短帧长

如果帧太短,A 在 2τ 之内就发完了,冲突信号回来时它已经不在"边发边听",就发现不了冲突。所以一帧至少要能发满 2τ:

最短帧长 = 2τ × 数据传输率 τ = 两端距离 ÷ 信号传播速率

以太网规定最短帧长 64 B,短于它的都是冲突产生的无效帧。

撞了以后等多久:二进制指数退避

  • 第 k 次重传:从 0 ~ 2ᵏ − 1 中随机取一个数 r,等待 r × 2τ
  • k 超过 10 以后按 10 算
  • 重传 16 次仍失败,丢弃该帧并报告上层

2009 真题数据最短帧长与距离

CSMA/CD 网络,速率 1 Gb/s,信号传播速率 200 000 km/s。最小帧长减少 800 bit,最远两站的距离至少要减少多少?

最短帧长 = 2 × (距离 ÷ 传播速率) × 数据传输率 距离变化 = 800 × (2 × 10⁸) ÷ (2 × 10⁹) = 80 m

易错:别忘了 2τ 里的 2。

四 · 重点

以太网和交换机

以太网 MAC 帧

前导码8 B
目的 MAC6 B
源 MAC6 B
类型2 B
数据46 ~ 1500 B
FCS4 B
  • 前导码不算在帧长里。帧首部 14 B,加上 FCS 共 18 B,所以帧长 64 ~ 1518 B
  • 数据不足 46 B 时要填充
  • 以太网提供无连接、不可靠的服务:收到错帧直接丢弃,不确认也不重传,纠错交给上层
  • MAC 地址 48 位,全 1 是广播地址

交换机怎么转发

  1. 自学习:收到一帧,把"源 MAC → 进入的端口"记进转发表
  2. 查目的 MAC:查到了,就只从对应端口发出去
  3. 查到的端口就是进来的端口:丢弃
  4. 查不到,或者是广播帧:向其他所有端口转发(泛洪)

三种设备

设备隔离冲突域隔离广播域
集线器不能不能
交换机能不能
路由器能能

设备工作的层次越高,能隔离的越多。

广播域 1广播域 2共用一个冲突域路由器交换机交换机集线器主机 A主机 B主机 C主机 D主机 E123456红色:6 个冲突域  绿色虚线框:2 个广播域
冲突域:同时发会撞车的范围,交换机和路由器每个端口算一个,集线器下面合起来算一个。广播域:一个广播帧能传到的范围,路由器每个接口算一个。
五 · 顺带要会

组帧、CRC、CDMA

零比特填充

帧的边界标志是 01111110。发送方在数据中每遇到 5 个连续的 1,就在后面插一个 0;接收方反过来删掉。

CRC 怎么算

  1. 生成多项式有 r + 1 位,就在数据后面补 r 个 0
  2. 用模 2 除法(不借位,相当于异或)除以生成多项式
  3. r 位余数就是冗余码,接在数据后面发出去
数据 1101011011,除数 10011 补 4 个 0 后相除,余数 1110 发送 11010110111110

CDMA 码分多址

每个站有一个码片序列。发 1 就发码片,发 0 就发码片的反码。接收方把收到的叠加信号和某站的码片做规格化内积:

  • 结果 +1:该站发了 1
  • 结果 −1:该站发了 0
  • 结果 0:该站没发
六 · 易错速记

选择题直接对表

GBN 接收窗口永远是 1乱序的帧一律丢弃,所以出错后要从那一帧开始全部重发。
窗口上限别记混3 位序号:GBN 发送窗口最大 7,SR 发送窗口最大 4。
交换机不隔离广播域它只隔离冲突域。要隔离广播域得用路由器,或者划分 VLAN。
最短帧长公式里有个 2是 2τ 乘以速率,不是 τ。
以太网不可靠有 CRC 检错,但发现错了只是丢掉,不重传。
CSMA/CD 只用于半双工全双工的交换式以太网不会冲突,不需要它。无线局域网用 CSMA/CA。
帧长范围 64 ~ 1518 B数据部分 46 ~ 1500 B,1500 就是以太网的 MTU。
链路层的可靠传输是相邻结点之间的端到端的可靠传输由传输层的 TCP 负责。
七 · 看一眼就行

这些不用花时间

八 · 自测

先自己做,再点开看

帧序号用 3 位。GBN 的发送窗口最大是多少?SR 的发送窗口最大是多少?

GBN:2³ − 1 = 7。SR:2³⁻¹ = 4。

GBN 协议,发送方已发送 0~5 号帧,收到了 1 号和 3 号帧的确认,随后 4 号帧超时。要重传哪几帧?

累积确认到 3 号,重传 4、5 两帧。

CSMA/CD 网络,速率 10 Mb/s,两站相距 2 km,信号传播速率 2 × 10⁸ m/s。最短帧长是多少?
τ = 2000 ÷ (2 × 10⁸) = 10 μs 最短帧长 = 2 × 10 μs × 10 Mb/s = 200 bit
一台 24 口交换机,每个端口接一台主机。有几个冲突域?几个广播域?

24 个冲突域,1 个广播域。