📚 第一章 网络基础知识
📄 一句话概括

中继器只做一件事:把收到的信号重新整形再发出去。 它不看地址、不改内容,所以它工作在物理层——也因此有段数上限。

📝 本节和前面几节的关系

1.9.2 讲的是「终端的门」,这一节开始讲「中间的设备」。 中继器是最简单的一个,但它的限制规则(5-4-3)最值得琢磨。

一、只整形,不判断

它在一堆设备里是最「笨」的:

它做吗 动作 对比
做 放大、整形、转发 ——
不做 看 MAC 交换机才看
不做 看 IP 路由器才看
不做 缓存、排队 所以不改变时序

第四行那个「不缓存」决定了它的性质:中继器是「透传」的,收到什么立刻发出去,不存不留。 所以它不引入排队时延,只引入一点处理时延。 但也正因为不缓存,它没法做「冲突隔离」—— 两边的冲突会原样传过去,这也是它被交换机取代的根本原因。 第二行与第三行解释了「为什么它最便宜」:不用解析任何头部,就是一颗芯片加两个口。 同轴电缆时代的以太网全靠它延长距离, 今天它在铜缆上已经很少见,但在光纤上还活着(叫光中继器)。

二、为什么必须限制段数

规范里写得很死:

标准 速率 单段最大长度 最多几段
10BASE5(粗缆) 10 Mbps 500 米 5
10BASE2(细缆) 10 Mbps 185 米 5
10BASE-T(双绞线) 10 Mbps 100 米 5
100BASE-TX 100 Mbps 100 米 2

第四列那个「5 段/2 段」就是有名的 5-4-3 规则: 最多 5 段介质、4 个中继器,其中只有 3 段可以接设备。 速率提上去之后(100 Mbps),段数直接降到 2——因为同样的时隙时间里,信号跑不了那么远。 为什么有上限,原因是 CSMA/CD:发送方必须在「时隙时间」内检测到冲突, 而冲突要传回发送方需要时间。 段数一多、距离一长,往返时间就超过时隙,冲突检测就失效了——发送方会以为「没冲突,发成功了」, 其实早就撞了。

三、51.2 微秒是怎么来的

这个数不是随便定的:

最小帧 64 字节 = 512 比特
10 Mbps 下发送 512 比特需要:512 ÷ 10×10⁶ = 51.2 微秒
这就是 10 Mbps 以太网的「时隙时间」

「最小帧 64 字节」这个规定的意义就在这里: 它保证了「发送方在发完之前,一定还在等冲突信号」。 如果帧比 64 字节还小,发送方可能在冲突信号回来之前就发完了, 于是它以为发成功了,实际上对端收到的是碎片。 512 比特时间要覆盖的是「最远两端的往返传播 + 4 个中继器的时延」: 单纯 2500 米的光速时间只有十几微秒,远远不够。 所以这个数是被「电气与时延」共同约出来的,不是被距离单独决定的。 至于「本机测不到中继器的衰减」:那需要一段真实电缆和一台信号分析仪, 上面这些数全是按规范算的——算得清「为什么是这个数」,比测一个数更有用。

四、动手 Demo:中继器解决的是「信号变弱」,不是「跑得更快」

把几个标准的段长与段数列出来,再算 51.2 微秒这个时隙时间。 段长与速率是反着走的,这一点最容易看漏。

for name, mbps, seg_m, nseg in (
        ('10BASE5', 10, 500, 5),
        ('10BASE2', 10, 185, 5),
        ('10BASE-T', 10, 100, 5),
        ('100BASE-TX', 100, 100, 2)):
    print('%-12s %-4d Mbps  %-6d 米  %d 段'
          % (name, mbps, seg_m, nseg))

slot = 512 / (10 * 10 ** 6)
print('10 Mbps 时隙时间:512 比特 / 10 Mbps = %.1f 微秒'
      % (slot * 1e6))
mtu_tx = 1500 * 8 / (10 * 10 ** 6)
print('1500 字节在 10 Mbps 上发完要 %.2f 毫秒' % (mtu_tx * 1e3))

实跑输出:

--------------------------------------------------------------------
中继器解决的是「信号变弱」,不是「跑得更快」
--------------------------------------------------------------------
**中继器只做一件事:把收到的信号重新整形再发出去。**
**它不看地址、不改内容,所以它工作在物理层。**

**为什么需要它**:信号在介质里会衰减,超过一定距离就认不出来。
下面这几个是规范值,不是本机实测:

  标准                   速率         单段最大长度     最多几段
  --------------------------------------------------------------
  10BASE5(粗缆)        10 Mbps      **500 米**       5 段
  10BASE2(细缆)        10 Mbps      **185 米**       5 段
  10BASE-T(双绞线)     10 Mbps      **100 米**       5 段
  100BASE-TX             100 Mbps     100 米           2 段

**最后一列那个「5 段/2 段」是有名的 5-4-3 规则与它的后继**:
**最多 5 段介质、4 个中继器、其中只有 3 段可以接设备。**
**为什么有上限**:
**中继器会引入时延,段数一多,最远两端之间的往返时延就超过 CSMA/CD 的冲突检测窗口**,
冲突就检测不出来了。

**用本机的数算一个对照**:

  本机 MTU 1500 字节,换算成 10BASE-T 的发送时间:1500 × 8 ÷ 10×10⁶ = 1.20 毫秒
  **这个数就是「最小帧 64 字节」为什么是 64**:  64 × 8 ÷ 10×10⁶ = 51.2 微秒,
  正好是 10 Mbps 以太网的「时隙时间」512 比特。
  **512 比特时间要覆盖的是「最远两端的往返传播 + 4 个中继器的时延」**,
  **不是单纯 2500 米的光速时间**(那只有十几微秒)。

**本机测不到中继器的实际衰减**——**那需要一段真实电缆与一台信号分析仪。**
**上面两个数是按规范算的,说明「为什么是这个数」。**

前三行段长不同、段数都是 5:因为都是 10 Mbps,时隙时间一样,允许的往返时延就一样。 第四行速率涨到 100 Mbps,段数直接降到 2—— 速率提高十倍,时隙时间缩短十倍,能容忍的距离也缩短。 51.2 微秒是 512 比特除以 10 Mbps 得来的: 这就是「最小帧 64 字节」为什么是 64——它保证发送方在发完之前一定还在等冲突信号。 这个数要覆盖的是「最远两端的往返传播 + 4 个中继器时延」, 不是单纯 2500 米的光速时间(那只有十几微秒)。 所以「5-4-3」这个规则是被时延约出来的,不是被距离单独决定的。

30 秒实验

  1. 算一下 100 Mbps 下的时隙时间是多少微秒,对比 10 Mbps 的 51.2,看为什么段数要减到 2。
  2. 查一下「千兆以太网还需要 CSMA/CD 吗」,想想为什么。
  3. 想一下:全双工链路上为什么不需要冲突检测?

常见误区

  1. 以为中继器能「提高网速」。 它只整形放大,不提速率,速率由两端协商决定。
  2. 以为中继器能隔离冲突。 它不缓存,冲突原样传过去,所以整个中继器连起来的还是一冲突域。
  3. 以为「最小帧 64 字节」是为了好看。 它是为了在发完之前还能检测到冲突, 而 64 字节对应 512 比特、51.2 微秒。
自测三问(点开对答案) 1. 中继器做哪一件事?不做哪几件事? —— **只做放大、整形、转发。** 不看 MAC、不看 IP、不缓存不排队。所以它在物理层,也不隔离冲突。 2. 5-4-3 规则里的三个数字分别是什么? —— **最多 5 段介质、4 个中继器、其中 3 段可以接设备。**100 Mbps 时直接降到 2 段。 3. 51.2 微秒是怎么算出来的? —— **512 比特除以 10 Mbps。** 512 比特就是最小帧 64 字节, 这个时隙时间要覆盖最远两端的往返传播加 4 个中继器时延。

下一节讲网桥与二层交换机——它比中继器聪明的地方在于「有一张表」。

相关笔记