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

「1000BASE-SX」这种名字不是型号,是参数:速率、信号方式、介质代号。 带 X 的那几种用 8B/10B 编码,所以线速要比数据速率高 25%。

📝 本节和前面几节的关系

3.3.1 讲的是「线能拉多远」,这一节讲「名字怎么读」。 读懂命名规则,就不用背表了——见到新标准也能拆开。

一、三段式命名

拆开看就三块:

段 例子 含义
速率 10/100/1000/10G 数据速率,单位 Mbps
信号方式 BASE/BROAD 基带:整根线只传一路
介质代号 5/2/T/SX/LX 用什么线、用什么光

第二段那个 BASE 是「基带」:整根线只传一路信号,不做频分复用。 早期的 BROAD(宽带)是把线切成多个频道,各传不同业务——那个方向输给了 BASE,因为简单。 第三段是介质代号,不是速率: 5 是粗同轴(500 米)、2 是细同轴(185 米,约 200)、T 是双绞线、S 是多模短波、 L 是长波。 看到 T 就知道「100 米、RJ45 头」,看到 SX 就知道「多模光纤、几百米」。

二、编码要占掉两成

这是最实际的账:

数据速率 编码 效率 线上要跑
100 Mbps 4B/5B 或 8B/10B 80% 125 Mbps
1000 Mbps 8B/10B 80% 1250 Mbps
10 Gbps 64B/66B 97% 10.3 Gbps

第一、二行那个 80% 就是「千兆网卡跑不满」的全部原因: 每 8 个比特要发 10 个,所以线上必须跑 1250 Mbps 才能装 1000 Mbps 的数据。 这不是厂商虚标,是编码的代价。 为什么要多花这 20%: 因为要让接收方能「从数据里恢复时钟」—— 8B/10B 保证「连续的 0 或 1 不超过 5 个」,这样边沿足够多,时钟才锁得住。 所以这 20% 买的是「不用单独的时钟线」。 第三行 64B/66B 只花 3%:因为它是「每 64 位加 2 位头」,而且靠扰码保证边沿。 所以万兆之后效率明显提高——「新一代以太网省的不是线,是编码」这句话基本成立。

三、速率与帧时间

同一帧在不同速率下占多久:

速率 1 比特 64 字节帧 1518 字节帧
10 Mbps 100 纳秒 51.2 微秒 1.21 毫秒
100 Mbps 10 纳秒 5.12 微秒 121 微秒
1 Gbps 1 纳秒 0.51 微秒 12.1 微秒
10 Gbps 0.1 纳秒 0.05 微秒 1.21 微秒

第一行那个 51.2 微秒就是「最小帧 64 字节」的由来: 它必须等于「最远两端信号往返一轮」的时间, 也就是「网络直径 2500 米」在 10 Mbps 下的往返延迟。 所以 64 这个数不是随便定的,是从距离反推出来的。 第二行往下,帧时间越来越短:10 Gbps 下一个满帧只占 1.21 微秒, 这对设备的时钟精度要求极高——抖动超过几百皮秒就会误码。 所以「高速链路对晶振的要求苛刻几个数量级」。 注意「最小帧 64」在高速下没有任何技术必要:全双工不碰撞,就不需要靠帧长来限制直径。 但标准没改,因为要兼容——所以今天发 1 字节的包,网卡还是填到 64。

四、动手 Demo:以太网的名字是一份规格书——逐段解码

把七个常见标准按「速率/信号/介质」三段拆开,再算编码开销。 最后一张表看「线上要跑多快才装得下数据速率」。

std = [('10BASE5', '10', '5', '粗同轴,500 m'),
       ('10BASE-T', '10', 'T', '双绞线'),
       ('100BASE-TX', '100', 'TX', '双绞线,两对'),
       ('1000BASE-T', '1000', 'T', '双绞线,四对'),
       ('1000BASE-SX', '1000', 'SX', '多模短波'),
       ('1000BASE-LX', '1000', 'LX', '单模长波')]
for name, sp, md, note in std:
    print('%-12s 速率 %-5s 介质 %-3s %s' % (name, sp, md, note))

for mbps, eff in ((100, 0.8), (1000, 0.8), (10000, 0.97)):
    print('%5d Mbps 编码效率 %.0f%% -> 线上要跑 %.0f Mbps'
          % (mbps, eff * 100, mbps / eff))

实跑输出:

--------------------------------------------------------------------
以太网的名字是一份规格书——逐段解码
--------------------------------------------------------------------
**「1000BASE-SX」这种名字不是型号,是参数**。
三个部分分别是「速率」「信号方式」「介质」,读懂了就不用查表。

  标准            速率 Mbps     信号     介质代号     含义
  ---------------------------------------------------------------------------
  10BASE5         10            BASE     5            粗同轴,一段 500 米
  10BASE-T        10            BASE     T            双绞线(Twisted pair)
  100BASE-TX      100           BASE     TX           双绞线,两对
  1000BASE-T      1000          BASE     T            双绞线,四对
  1000BASE-SX     1000          BASE     SX           多模光纤,短波
  1000BASE-LX     1000          BASE     LX           单模光纤,长波
  10GBASE-T       10G           BASE     T            双绞线,Cat6a

**第二段那个 BASE 是「基带」的意思**:**整根线只传一路信号,不频分复用。**
**早期还有 BROAD(宽带),把线分成多个频道传不同业务**——**那个方向输给了 BASE,因为简单。**
**第四段的字母是介质代号,不是速率**:**T 是双绞线、S 是多模短波、L 是多模长波、E 是超长距**。
**同一段里带 X 的(TX、SX、LX)表示「用 8B/10B 编码」**,
**这个编码有 25% 的开销**——**所以 1000BASE-SX 的线速是 1.25 Gbps,装 1 Gbps 的数据。**
**算一下这个开销**:
  数据速率 Mbps     编码效率     线上要跑 Mbps     多出来多少
  ------------------------------------------------------------
  100               80%          125               25
  1000              80%          1250              250
  10000             97%          10309             309

**前两行是 8B/10B 编码的代价**:
**每 8 个比特要发 10 个,效率 80%,所以线上要跑 125 Mbps 才能装下 100 Mbps 的数据。**
**「千兆网卡在双绞线上跑不满标称值」不是网卡虚标,是编码要占掉那 20%。**
**第三行 10GBASE-T 换了更高效的编码(LDPC + PAM16)**,
**效率能到 97% 左右,多出来的开销只有 3%**,代价是**对线材要求高(Cat6a 起)、芯片复杂、功耗大**。
**所以「新一代以太网省的不是线,是编码」这句话基本成立。**

名字里唯一容易看错的是「介质代号」: T 是双绞线、5 和 2 是同轴(数字是 100 米为单位的大约值)、S 是多模短波、L 是长波。 所以 1000BASE-LX 里的 L 不是「长距离」,是「长波长」—— 但长波长恰好能传更远,所以两个意思碰巧对上了。 编码那一栏的数字是可以自己验算的: 1000 除以 0.8 等于 1250,这就是千兆网卡在双绞线上的实际线速。 所以「千兆」说的是数据速率,「1250」说的是线上跑的波特率,两个都对,只是口径不同。 万兆那一行效率 97% 是因为换了 64B/66B:每 64 位加 2 位,开销 3%。 这个改进不是「省带宽」那么简单:它还让「用同一条光纤跑不同速率」变得容易, 因为编码开销小了,速率分档的粒度可以更细。

30 秒实验

  1. 自己算一下:1000 除以 0.8 是多少?和网卡规格里的「1250 Mbaud」对得上吗?
  2. 查一下 10GBASE-T 用的是什么编码、效率多少。
  3. 想一下:如果没有 8B/10B,接收端怎么从数据里恢复时钟?

常见误区

  1. 以为 BASE 是「基础版」。 是「基带」,对应早期的 BROAD(宽带)。
  2. 以为 LX 的 L 是「长距离」。 是「长波长」,只是碰巧传得远。
  3. 以为「千兆就是线上跑 1000 Mbps」。 线上跑 1250,多出来的 25% 是 8B/10B 编码。
自测三问(点开对答案) 1. `1000BASE-SX` 三段各是什么意思? —— **1000 Mbps、基带、多模光纤短波。** 单段约 550 米。 2. 为什么千兆网卡在双绞线上要跑 1250 Mbps? —— **因为 8B/10B 编码要占 20%**:每 8 位发 10 位,所以数据 1000 需要线上 1250。 3. 最小帧 64 字节在 10 Gbps 下还有必要吗? —— **技术上没有必要**(全双工不碰撞),但标准保留了它,为了兼容老设备。

下一节看这段历史:速率每翻十倍用了多少年。

相关笔记