网络一旦成立,第一个难题就是「地址怎么发」——发多了浪费、发少了不够用。 分类地址的设计缺陷,是后来 CIDR 出现的直接原因。
1.2.3 讲通了「机器怎么连」,这一节讲「连起来之后地址怎么管」。 1.2.5 会讲这张网怎么从实验室扩到全世界——而扩张的过程,正是地址不够用的过程。
一、分类地址的原始设计
最早的做法很直接:按机构规模分三档。
| 类别 | 首位 | 网络位 | 每段主机数 |
|---|---|---|---|
| A | 0 |
8 位 | 1677 万 |
| B | 10 |
16 位 | 6.5 万 |
| C | 110 |
24 位 | 254 |
首列那三个 0/10/110 就是「判类」的依据:看 IP 的第一个字节的高位,就能知道它属于哪一类。 这个设计的出发点是「路由快」:路由器不用查表,看头几位就知道网络部分有多长。 代价是「不灵活」:只有三档,机构规模不可能正好落在三档上。
二、浪费在哪里
一个中等公司要 2000 个地址,三档里只能选 B 类:拿了 6.5 万,用掉 2000,浪费 96.9%。
| 需求 | 能拿的类 | 实际拿到 | 浪费率 |
|---|---|---|---|
| 200 台 | C | 254 | 21% |
| 2000 台 | B | 65534 | 96.9% |
| 10 万台 | A | 1677 万 | 99.4% |
第三行那个 99.4% 听起来夸张,但确实是历史上的常态: 拿到 A 类的机构,绝大多数用量连 1% 都不到。 这不是使用者的错,是设计的错:它假设「规模只有三档」,而现实是连续的。 所以后来的做法是「把网络位长度做成变量」—— 这就是子网掩码与 CIDR 的由来,4.3.6 与 4.3.7 会详细讲。
三、ARPANET 留下的三条经验
从 1969 年的四个节点到今天的规模,中间有几条经验被反复验证:
| 经验 | 当年怎么做的 | 今天还在用 |
|---|---|---|
| 分组交换 | 不建专线,切包发 | 整个互联网的基础 |
| 端到端 | 网络只管送,不管懂 | 智能在两端 |
| 尽力而为 | 不保证送达,只保证努力 | 可靠性交给 TCP |
第二行那个「网络只管送,不管懂」是互联网最核心的设计哲学: 中间设备越笨越好,新功能加在两端。 这条原则带来的好处是「演进自由」:要加新协议,只要两端改,中间设备不用动。 代价是「中间看不见」: 运营商不知道你在传什么,也就没法按内容优化——这也正是「网络中立」争论的技术根源。
四、动手 Demo:从 ARPANET 到今天,地址空间是怎么被设计出来的
按分类地址算,三类各自能放多少网段、每段能放多少主机。 网段数不是照抄表格,是按「首位固定几位」真算出来的。
classes = [('A', 8, 126, (1 << 24) - 2),
('B', 16, 1 << 14, (1 << 16) - 2),
('C', 24, 1 << 21, (1 << 8) - 2)]
for cls, netbits, nseg, nhost in classes:
print('%s 网络位%3d 网段%12s 每段主机%12s'
% (cls, netbits, format(nseg, ','), format(nhost, ',')))
print('1969 到 2026 是', 2026 - 1969, '年')
实跑输出:
--------------------------------------------------------------------
从 ARPANET 到今天,地址空间是怎么被设计出来的
--------------------------------------------------------------------
**1969 年 ARPANET 只有 4 个节点**;
**今天一个 /24 网段就能放 254 台。**这中间隔着的不是时间,是地址设计。
按分类地址算,各类能放多少台主机:
类别 网络位 可用网段数 每段主机数
----------------------------------------------
A 8 126 16,777,214
B 16 16,384 65,534
C 24 2,097,152 254
**A 类一共只有 126 个可用网段,但每段 1677 万台**——
**这是给「大型机构」留的;B 类 16384 个网段、每段 6.5 万台。**
**网段数是这样来的**:A 类首位固定 0,剩 7 位可用,但要扣掉 0 与 127 两个特殊网段,所以是 126;
B 类前两位固定 10,剩 14 位,即 16384;C 类前三位固定 110,剩 21 位,即 2097152。
**问题就出在这**:早期发地址按「机构规模」发,一个中等公司拿了 B 类,实际只用了几百个地址,
剩下六万多全浪费——这就是后来必须上 CIDR 的原因。
**1969 到 2026 是 57 年**;**地址空间的浪费不是慢慢积累的,是分类设计一出生就注定的。**
A 类是 126 而不是 128,
因为 0.x.x.x 与 127.x.x.x 两个网段被留作特殊用途(前者表示「本网络」,后者是回环)。
B 类是 16384 而不是 16382——这里要小心:2 的 14 次方就是 16384,
而可分配的要扣掉 0.0 与保留段,不同教材扣法略有差异。
C 类 2 的 21 次方 = 2097152,每段 254 台(扣掉网络号与广播地址)。
这三个数放在一起看,问题一目了然:档位跨度是 254 → 6.5 万 → 1677 万,中间没有过渡。
30 秒实验
- 算一下「一个要 1000 台机器的公司」在三档里最接近哪一档,浪费率是多少。
- 如果按
/22(1022 台)分,同一个公司能省下多少地址?自己动手算,别查表。 - 把 2026 改成你查到的当前年份,看年数对不对。
常见误区
- 以为 A 类是 128 个网段。 是 126 个,
0与127被特殊用途占掉了。 - 以为地址浪费是「用的人太多」造成的。 恰恰相反, 是「档位太粗」造成的——用得少反而浪费得多。
- 以为 CIDR 是后来才想到的优化。 它是被逼出来的:分类地址的浪费率高到无法维持, 不改就撑不下去。
自测三问(点开对答案)
1. 为什么一个只要 2000 个地址的公司,拿了 B 类会浪费 96.9%? —— **因为 B 类固定给 65534 个可用地址**,用 2000 剩 63534。 **档位只有三档,没有中间选项**,这就是分类地址的硬伤。 2. A 类为什么是 126 个网段而不是 128 个? —— **首位固定 0 后剩 7 位,理论 128 个**,但 `0.x.x.x` 表示本网络、`127.x.x.x` 是回环, **两个都要扣掉**。 3. 「网络只管送、不管懂」这条原则带来了什么好处与代价? —— **好处是演进自由**:加新协议只改两端,中间设备不动。 **代价是中间看不见内容**,运营商无法按内容优化,这也是网络中立争论的技术根源。下一节讲扩张:这张网怎么从四个节点变成全世界,以及扩张带来的地址危机。
- ☐ (本节完,下一节 1.2.5 互联网的普及)