📚 第三章 数据链路
📄 一句话概括

非共享介质的做法是「每个站一条独立通道」,靠交换机实现。 它把「一个冲突域」拆成「每口一个冲突域」,于是可以全双工。

📝 本节和前面几节的关系

3.2.2 讲的是「争用」,这一节讲「不用争」的办法。 核心数字是「聚合带宽」——它和「端口速率」是两个概念,别混。

一、集线器与交换机的分水岭

外观一样,内部完全不同:

设备 内部结构 带宽 双工
集线器 所有口接同一根内部总线 共享,总量固定 半双工
交换机 每口独立,内部有交换矩阵 独占,可同时 全双工

第一行那个「共享总线」是关键: 集线器收到一个帧,会往所有别的口复制一份——它本质上就是「一根线加一个中继器」。 所以接 10 台机器,10 台仍然在同一个冲突域里。 第二行的「交换矩阵」意味着「可以同时有多对在通话」: 1 号发给 2 号的同时,3 号可以发给 4 号。 这两对流量互不干扰,所以总容量是所有端口之和。 这个差别在「人数」上体现得最清楚: 集线器上 10 台机器抢 10 Mbps,交换机上 10 台机器各有 100 Mbps。 差了 100 倍,而价格只差几倍——这就是 2000 年前后交换机彻底取代集线器的原因。

二、聚合带宽这个数怎么算

「端口速率」和「聚合带宽」不是一回事:

指标 含义 24 口百兆交换机
端口速率 单口能跑多快 100 Mbps
聚合带宽 全部加起来能跑多快 4800 Mbps
背板带宽 内部矩阵的总容量 要不小于聚合带宽

第二行那个 4800 = 100 × 24 × 2:乘 2 是因为全双工——100 发 + 100 收,两个方向同时进行。 这也是「百兆全双工」这个说法的来源:它不是「200 Mbps 单向」,是「100 进 100 出」。 报价单上把这两个口径混用,是采购时最常见的坑。 第三行那个「背板带宽」是真正的瓶颈:如果内部矩阵只有 1000 Mbps,那 24 个口同时用就会堵。 所以「无阻塞交换机」的意思是「背板带宽 ≥ 聚合带宽」, 这个指标在规格表里通常写成「交换容量」。

三、全双工带来了什么

不只是「快一倍」,是「规则变了」:

| 项目 | 半双工 | 全双工 | |---|---|---|---| | 要不要听 | 要,发之前先听 | 不用,两个方向独立 | | 会不会撞 | 会 | 不会 | | 最小帧还有意义吗 | 有(为了碰撞检测) | 没有,但仍然保留 | | 距离限制 | 由冲突域直径决定 | 由信号质量决定 |

第二行「不会撞」是根本性的改变:全双工的每一对线都是「点对点」的, 收发各走各的线,物理上就不可能撞。 所以 CSMA/CD 在全双工下是「关闭」的——不是「优化了」,是「不需要了」。 第三行那个「仍然保留」很有意思:64 字节的最小帧在全双工下没有技术必要, 但标准没改——因为要兼容。 所以今天你发一个 1 字节的包,网卡还是会填到 64 字节。 这也是「速率涨了一万倍,帧格式没变」的代价与好处:代价是「有些规定已经不适用了还在生效」, 好处是「1980 年的设备插上今天的网还能通」。

四、动手 Demo:从共享到独占——集线器与交换机的账

同一批端口,分别按集线器和交换机算一遍。 重点看「每口实得」和「聚合带宽」这两列。

for ports in (10, 24, 48):
    hub = 10.0 / ports
    agg = 100.0 * ports * 2
    print('%2d 口:集线器每口 %5.2f Mbps  交换机聚合 %5.0f Mbps  可同时 %d 对'
          % (ports, hub, agg, ports // 2))

实跑输出:

--------------------------------------------------------------------
从共享到独占——集线器与交换机的账
--------------------------------------------------------------------
**非共享介质的意思是「每个站自己有通道」。**这件事在数字上意味着什么?
把同一批端口分别按集线器和交换机算一遍。

  端口数     集线器 Mbps     每口实得     交换机 Mbps             聚合带宽     同时对话对数
  ------------------------------------------------------------------------------------------
  10         10(共享)      1.00         100(独占,全双工)     2000         5
  24         10(共享)      0.42         100(独占,全双工)     4800         12
  48         10(共享)      0.21         100(独占,全双工)     9600         24

**第三列和第五列差了三个数量级**:**10 口的集线器,每口只能分到 1 Mbps;**
**同样 10 口的百兆交换机,聚合能到 2000 Mbps。**
**因为交换机每口一对线是独占的,10 对线可以同时各跑 100 Mbps。**
**最后那一列是「无阻塞」的门槛**:**10 个口要两两全通,最多 5 对同时说话。**
**只要背板带宽够 5 × 200 Mbps,交换机就不会成为瓶颈**——
**这就是交换机规格里「背板带宽」这个参数的来历。**
**还有一处容易被忽略的区别**:**集线器是半双工,同一时刻只有一个站在说话**;
**交换机是全双工,收发可以同时进行**。
**所以「百兆全双工」其实是 100 发 + 100 收,不是 200 的单向速度**——
**写规格时这两个口径混用,是报价单上最常见的坑。**

「每口实得」和「聚合带宽」差了三个数量级: 10 口集线器每口 1 Mbps,10 口百兆交换机聚合 2000 Mbps。 因为交换机每口一对线是独占的,10 对线可以同时各跑 100 Mbps。 最后一列「可同时几对」是「无阻塞」的门槛:10 个口要两两全通,最多 5 对同时说话。 只要背板带宽够 5 × 200 Mbps,交换机就不会成为瓶颈—— 这就是规格表里「交换容量」这个参数的来历。 有一个容易混的口径要纠正:「百兆全双工」是 100 发 + 100 收,不是「200 Mbps 单向」。 所以「24 口百兆交换机 = 4.8 Gbps」这个算法,说的是「所有口同时满速、双向都满」的理论上限。 实际业务几乎跑不到,但背板必须按这个数设计才叫无阻塞。

30 秒实验

  1. 把交换机速率改成 1000,看聚合带宽变成多少。
  2. 算一下:48 口千兆交换机的「交换容量」至少要多少才叫无阻塞?
  3. 想一下:为什么集线器几乎买不到了,但「网络分路器(TAP)」还在用类似原理?

常见误区

  1. 以为「百兆全双工 = 200 Mbps 单向」。 是 100 进 100 出,两个方向同时。
  2. 以为「端口速率乘以口数就是实际吞吐」。 那是理论上限,实际受背板带宽与业务模型限制。
  3. 以为「全双工还在用 CSMA/CD」。 全双工下不会碰撞,那套机制是关闭的。
自测三问(点开对答案) 1. 集线器和交换机最本质的区别是什么? —— **集线器所有口共享一个冲突域,交换机每口一个独立冲突域。**所以前者只能半双工, 后者可以全双工。 2. 24 口百兆交换机的聚合带宽是多少?怎么算的? —— **4800 Mbps。** 100 × 24 × 2,乘 2 是因为全双工(收发各一路)。 3. 全双工下为什么不会再碰撞? —— **因为收发各走独立的线,物理上不共享介质。**所以「先听后说」这套机制直接关掉了。

下一节看交换机内部那张表是怎么学出来的。

相关笔记