📡 第二章 彻底理解L2交换机
📄 一句话概括

共享式集线器就是「多端口的中继器」:所有端口在同一个冲突域里,10 Mbps 是分的。 它能省线,但不能提速——站一多,全体的吞吐反而往下掉。

📝 本节和前面几节的关系

上一节的网桥有两个口,这一节的集线器有十几个口——但两者的原理完全相反。 网桥切冲突域,集线器不切。这一节把「不切」的代价算清楚。

一、一个冲突域,一条走廊

集线器的内部就是一根总线:任何一口收到的信号,放大后广播到所有口。 同一刻只能有一个站在发,否则就是碰撞。

所以 10 Mbps 是全体共享的,不是每口 10 Mbps。 12 台设备接一台 10 Mbps 集线器,平均每台 0.83 Mbps。

它还必须是半双工:一条总线没法同时收发。 于是 CSMA/CD 那一整套(先听、边发边听、撞了退避)全都要用上。

二、站一多,吞吐反而掉

直觉是「平分」,实际比平分更糟。因为碰撞会浪费时隙,退避又会浪费更多时隙。

算一下:每站按公平份额 1/N 的概率尝试发送, 24 站时成功时隙只占 37.6%——整台集线器只剩 3.76 Mbps,每站 0.16 Mbps。

比「跑得慢」更难受的是「慢得不稳定」:退避时隙数是随机的、按二进制指数增长, 同一个应用在闲时和忙时的响应能差十倍。这才是当年换交换机最直接的动因。

三、它今天还在两个地方

一是临时应急:会议室拉一根线接几台设备,傻瓜集线器最省事。 二是抓包:集线器会把所有流量广播到每一口, 接上去就能看到全部单播——这正是抓包想要的效果(也是它不安全的原因)。

所以「集线器已经淘汰」这句话要打个折:它作为产品消失了, 但「共享介质」这个模型在无线网络里还活着——Wi-Fi 本质上就是一个共享介质的冲突域。

四、动手 Demo:集线器上站越多,整机吞吐反而越低

这段用二项式算「一个时隙内恰好一站在发」的概率:取每站尝试概率 p = 1/N, 成功概率是 N×p×(1-p) 的 N-1 次方。

for n in n_list:
    p = 1.0 / n
    ok = n * p * (1 - p) ** (n - 1)
    col = 1 - (1 - p) ** n - ok
    T([u"%d" % n, u"%.2f Mbps" % (10.0 / n),
       u"%.1f%%" % (ok * 100), u"%.2f Mbps" % (10.0 * ok)],
      [0, 0, 0, 0])

实跑输出:

--------------------------------------------------------------------
集线器的带宽是「分」的,不是「给」的
--------------------------------------------------------------------
**共享式集线器就是一个多端口的中继器。**任何一刻,
整个集线器上只能有一个站在发——所有端口在同一个冲突域里。

**所以 10 Mbps 是平分的。**N 台活跃站,每台平均拿到 10/N Mbps。

**再算冲突有多严重。**设每站在每个时隙里想发的概率 p,全都不发或只有一站在发才算成功,
否则就是撞了。取 p = 1/N(每站都「客气地」按公平份额尝试):

  活跃站     每站带宽       一次成功概率     冲突概率     实际吞吐
  ----------------------------------------------------------------------
  1          10.00 Mbps     100.0%           0.0%         10.00 Mbps
  2          5.00 Mbps      50.0%            25.0%        5.00 Mbps
  4          2.50 Mbps      42.2%            26.2%        4.22 Mbps
  8          1.25 Mbps      39.3%            26.4%        3.93 Mbps
  12         0.83 Mbps      38.4%            26.4%        3.84 Mbps
  24         0.42 Mbps      37.6%            26.4%        3.76 Mbps

**注意最后一列不是 10 除以 N 那么简单**:站一多,时隙大量浪费在碰撞和退避上,总吞吐往下掉。
24 站时整台集线器实际只能跑出约 3.8 Mbps,平均每站只有 0.16 Mbps。

**更难受的是延迟不可预期。**碰撞后退避是随机的,等的时隙数按二进制指数增长,
同一个应用在闲时和忙时的响应能差十倍。
**这才是当年「集线器换交换机」最直接的动因**——不是为了更快,是为了「可预期」。

**还要记住一条**:集线器也不能隔离广播。广播帧本来就要发到所有端口,
所以这一条在集线器和交换机上没有区别——**广播域要靠 VLAN 和路由器来切**。

看最后一列:从 1 站的 10 Mbps 掉到 24 站的 3.76 Mbps。 注意它不是 10 除以 24 的 0.42——那是「每站带宽」,而整机吞吐是「所有站加起来能发出去多少」。

冲突概率稳定在 26% 左右,不随站数继续涨。 因为 p 也随 N 变小了(每站更客气),两个效果互相抵消。 所以极重负载下 CSMA/CD 的效率大约就是 37%——这是它的理论天花板。

最后还要记住一条:集线器不能隔离广播。 广播帧本来就要发给所有口,这一条在集线器和交换机上没有区别。广播域要靠 VLAN 和路由器来切。

30 秒实验

  1. 看一眼手里的设备背面,找有没有写着「HUB」的老设备。
  2. 数一下办公区一台交换机下面接了多少台设备。
  3. 在交换机上查端口的「双工」状态,看有没有半双工的。

常见误区

  1. 以为 10 Mbps 集线器每口都是 10 Mbps。是全体共享。
  2. 以为站少就没事。两台同时满速发就撞。
  3. 以为集线器能隔离冲突。它把所有口并成一个冲突域。
自测三问(点开对答案) 1. 集线器为什么必须是半双工? —— 内部是一根共享总线,同一刻只能有一个方向在传。 2. 12 台设备接 10 Mbps 集线器,每台平均多少? —— 名义上 0.83 Mbps,实际因为碰撞还要更低。 3. CSMA/CD 的效率天花板大约多少? —— 极重负载下约 37%,因为碰撞与退避浪费时隙。

下一节:同样十二个口,把「共享」改成「每口独占」,就是交换式集线器。

相关笔记