共享式集线器就是「多端口的中继器」:所有端口在同一个冲突域里,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 秒实验
- 看一眼手里的设备背面,找有没有写着「HUB」的老设备。
- 数一下办公区一台交换机下面接了多少台设备。
- 在交换机上查端口的「双工」状态,看有没有半双工的。
常见误区
- 以为 10 Mbps 集线器每口都是 10 Mbps。是全体共享。
- 以为站少就没事。两台同时满速发就撞。
- 以为集线器能隔离冲突。它把所有口并成一个冲突域。
自测三问(点开对答案)
1. 集线器为什么必须是半双工? —— 内部是一根共享总线,同一刻只能有一个方向在传。 2. 12 台设备接 10 Mbps 集线器,每台平均多少? —— 名义上 0.83 Mbps,实际因为碰撞还要更低。 3. CSMA/CD 的效率天花板大约多少? —— 极重负载下约 37%,因为碰撞与退避浪费时隙。下一节:同样十二个口,把「共享」改成「每口独占」,就是交换式集线器。
- ☐ (本节完,下一节 02.01.04 交换式集线器)