什么是子网掩码?什么是 CIDR(无类别域间路由)?
这是一个非常经典且重要的网络基础问题。简单来说,子网掩码和CIDR都是用来解决同一个问题的:如何在一个IP地址中区分哪部分是“网络”,哪部分是“主机”。
为了让你更容易理解,我们可以用“寄信”或者“打电话”的例子来类比。
1. 什么是子网掩码 (Subnet Mask)?
通俗解释
想象一个 IP 地址 192.168.1.10 是一个电话号码。
如果不告诉你规则,你不知道 192.168.1 是区号,还是 192.168 是区号。
子网掩码就是那个规则说明书。 它告诉电脑:
- 这个 IP 地址的前面一部分是 “小区名”(网络位,Network ID)。
- 后面一部分是 “门牌号”(主机位,Host ID)。
技术原理
IP 地址是 32 位的二进制数。子网掩码也是 32 位,它通过二进制的“与”运算(AND)来划分网络。
- 掩码为 1 的部分:对应 IP 地址中的网络位(必须固定)。
- 掩码为 0 的部分:对应 IP 地址中的主机位(可以分配给具体的电脑)。
举个例子
假设 IP 地址是 192.168.1.10,子网掩码是 255.255.255.0。
| 类型 | 十进制格式 | 二进制格式 | 含义 |
|---|---|---|---|
| IP 地址 | 192.168.1.10 | 11000000.10101000.00000001.00001010 | 你的地址 |
| 子网掩码 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | 前24位是1,说明前24位是网络 |
| 网络地址 | 192.168.1.0 | 11000000.10101000.00000001.00000000 | 你所在的“小区” |
结论: 电脑通过掩码计算出,自己属于 192.168.1.0 这个网络。如果它想发数据给 192.168.1.20,它知道这是邻居(同网络),直接喊一声就行;如果发给 8.8.8.8,它知道这是外地(不同网络),需要交给网关(路由器)去转发。
2. 什么是 CIDR (无类别域间路由)?
全称:Classless Inter-Domain Routing。
为什么要发明 CIDR?
在 CIDR 出现之前(1993年以前),IP 地址被死板地分为 A类、B类、C类:
- A类:默认掩码 255.0.0.0
- B类:默认掩码 255.255.0.0
- C类:默认掩码 255.255.255.0
这造成了巨大的浪费!
比如一家公司有 300 台电脑:
- 用 C 类(254个可用IP):不够用。
- 用 B 类(65,534个可用IP):太大了,浪费了 6 万多个 IP。
CIDR 是什么?
CIDR 打破了 A/B/C 类的僵化界限。它允许任意长度的子网掩码。
它引入了“斜线记法” (Slash Notation),直接在 IP 后面写上网络位的位数。
举个例子
- 传统写法:IP
192.168.1.10,子网掩码255.255.255.0 - CIDR 写法:
192.168.1.10/24
这里的 /24 意思就是:子网掩码的二进制形式中,前面有 24 个 1。
(24 个 1 转换成十进制,正好就是 255.255.255.0)
CIDR 的优势
- 更灵活(子网划分):
如果你有 300 台电脑,你可以申请一个 /23 的网络(掩码 255.255.254.0,容纳 510 台主机),完美解决 C 类不够、B 类浪费的问题。 - 路由聚合(超网):
路由器不需要记录几万条零散的路由信息,只需要记录一条聚合后的 CIDR 地址(比如10.0.0.0/8),大大减小了全球互联网路由表的体积,提高了网络速度。
3. 总结与对照表
子网掩码是底层的计算逻辑(一串 0 和 1)。
CIDR 是一种更先进的分配策略,也是一种更简洁的书写方式(/数字)。
它们本质上描述的是同一个东西:
| CIDR 写法 | 等同的子网掩码 | 可用主机数 (大约) | 常见用途 |
|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,214 | 大型ISP、巨型企业 |
| /16 | 255.255.0.0 | 65,534 | 大型局域网 |
| /24 | 255.255.255.0 | 254 | 最常见的家庭/办公局域网 |
| /25 | 255.255.255.128 | 126 | 将一个C类网切成两半 |
| /30 | 255.255.255.252 | 2 | 通常用于两个路由器之间的直连 |
| /32 | 255.255.255.255 | 1 | 特指某一台特定的主机(没有网络部分) |
一句话总结:
子网掩码是用来告诉电脑“哪部分是网络位”的二进制尺子;而 CIDR 是打破了传统分类限制,用“/数字”这种更灵活、更简洁的方式来表示这把尺子。