📚 第二章 TCP/IP基础知识
📄 一句话概括

ISP 是按「代理层级」分的:Tier 1 卖出口,Tier 3 卖给家庭。 地址是切块分配的:一个 /16 能切 256 个 /24,装六万多台主机。

📝 本节和前面几节的关系

2.3.3 讲的是拓扑,这一节讲「谁在运营这些节点」。 这一节会算地址切块,这是理解「地址稀缺」的基础。

一、ISP 的层级

四层,各自卖不同的东西:

层级 卖什么 客户是谁
Tier 1 全球出口(转接) Tier 2
Tier 2 区域出口 Tier 3、企业
Tier 3 最后一公里接入 家庭、小企业
虚拟运营商 批发再零售 特定人群

第一行那个「转接」是 Tier 1 的唯一生意:它们拥有全球骨干,不需要向任何人买出口, 所以能向别人卖。 全球真正的 Tier 1 只有十几家, 而且它们之间是「对等互联」(免费用)——因为互相都离不开对方。 第三行是普通人接触的那一层:它们不拥有骨干,要向 Tier 2 买出口, 然后把带宽切成家庭套餐卖出去。 所以「你家宽带的实际速度」取决于三件事: 最后一公里的质量、Tier 3 的收敛比、以及它向上买的出口够不够。

二、地址是切块分的

ISP 拿到的不是「一堆地址」,是「一个块」:

前缀 地址总数 可用主机数 能切几个 /24
/8 16777216 16777214 65536
/16 65536 65534 256
/20 4096 4094 16
/24 256 254 1

第三列永远比第二列少 2:网络地址(主机位全 0)与广播地址(主机位全 1)不能给主机用。 所以一个 /24 只有 254 个可用地址,不是 256 个。 这个「减 2」是最容易被忽略的细节,很多容量规划就错在这里。 第四列是 ISP 的日常:一个 /16 能切 256 个 /24,也就是 256 个客户; 每个 /24 能装 254 台主机。 所以一个 /16 理论上能装 65024 台主机——这就是「地址是稀缺资源」的算术来源。

三、为什么家里只给一个地址

因为地址早就分完了:

时间 发生了什么 后果
1981 IPv4 定下 32 位 理论上 43 亿个
1990s 分类地址不够用 CIDR 出现
2011 IANA 分配完最后一块 再没有新地址
现在 NAT + 复用 一家一个公网地址

第三行是分水岭:2011 年 2 月,IANA 把最后五块 /8 分给了五个区域注册机构, 从此再也没有「新的 IPv4 地址」。 所以今天的 ISP 只能「回收再分配」,或者用 NAT 把很多用户塞进一个地址。 第四行是现在的常态:你家的路由器拿到一个公网地址,家里的手机、电脑、电视全用 192.168.x.x, 对外只有一个地址。 代价是「外面主动连不进来」——这就是为什么家里装监控要做端口映射。 IPv6 就是为了解决这个:128 位地址,多到可以给每粒沙子编号。 但它推了二十多年还没换完——因为「改 IP」就是改整个互联网的地基。

四、动手 Demo:一个 /16 能分出多少个 /24

算四个常见前缀的地址数、可用主机数、能切几个 /24。 注意「可用主机数」永远比「地址总数」少 2。

for p in (8, 16, 20, 24):
    total = 2 ** (32 - p)
    hosts = total - 2
    sub = 2 ** (24 - p) if p <= 24 else 0
    print('/%-3d 总数 %-9d 可用 %-9d 切 /24 %d'
          % (p, total, hosts, sub))

实跑输出:

--------------------------------------------------------------------
一个 /16 能分出多少个 /24
--------------------------------------------------------------------
**ISP 与区域网的划分,本质就是「地址切块」。**下面算一遍。

  前缀     地址总数     可用主机数     能切几个 /24
  --------------------------------------------------
  /8       16777216     16777214       65536
  /16      65536        65534          256
  /20      4096         4094           16
  /24      256          254            1

**第一行那个 /8 有 1677 万个地址**,**但可用主机数要减 2**(网络地址与广播地址不能给主机用)。
**第三行那个「能切几个 /24」是 ISP 的日常**:**一个 /16 能切 256 个 /24,也就是 256 个客户**;
**每个 /24 能装 254 台主机。**
**所以一个 /16 理论上能装 65024 台主机**——**这就是「地址是稀缺资源」的算术来源。**
**IPv4 只有 43 亿个地址**(2 的 32 次方),**而 2011 年就已经分配完了**。
**所以现在 ISP 给家庭的是「一个公网地址 + NAT」**,**不是一个网段。**

/8 有 1677 万个地址,可用 1677 万减 2:减 2 在这么大的数字面前看不出来, 但在 /24 上就很明显:256 变 254。 「能切几个 /24」这一列是纯粹的 2 的幂:/8 切 65536 个、/16 切 256 个、/20 切 16 个。 所以「切块」在数学上就是「借主机位当网络位」,每借一位,块数翻倍、每块减半。 一个 /16 理论上能装 65024 台主机:256 个 /24 × 254 台 = 65024。 这个数和「65534」不一样,因为切成 /24 之后,每个 /24 都有自己的网络地址与广播地址, 所以要减掉 256 × 2 = 512 个。 「切得越细,浪费越多」——这是子网划分的固有成本。

30 秒实验

  1. 算一下 /26 的地址总数与可用主机数,再看一个 /24 能切几个 /26。
  2. 算一下:如果全世界的 IPv4 地址平均分给 80 亿人,每人几个?
  3. 想一下:为什么「切得越细,浪费越多」?

常见误区

  1. 以为 /24 能装 256 台主机。 只有 254 台,网络地址与广播地址不能用。
  2. 以为 IPv4 地址「还有很多」。 2011 年就分完了,现在靠 NAT 与回收再分配。
  3. 以为 Tier 3 就是「小运营商」。 它是「卖最后一公里的那一层」,有些 Tier 3 规模也很大。
自测三问(点开对答案) 1. ISP 的四个层级分别卖什么? —— **Tier 1 卖全球转接,Tier 2 卖区域出口,Tier 3 卖最后一公里接入,虚拟运营商批发再零售。** 2. 为什么 /24 只有 254 个可用地址? —— **网络地址(主机位全 0)与广播地址(主机位全 1)不能给主机用**,所以 256 减 2。 3. 为什么家里只分到一个公网地址? —— **IPv4 地址 2011 年就分配完了**,ISP 只能用 NAT 把很多用户塞进一个地址。 代价是外面主动连不进来。

下一节进入 2.4:TCP/IP 的分层模型——把四层与 OSI 七层正式对起来。

相关笔记