3、IP地址与子网划分:IPv4地址分类、子网掩码与CIDR、VLSM可变长子网掩码实战
说实话,IP地址和子网划分这块,是很多网络初学者的第一道坎。我记得刚入行那会儿,对着A类B类C类背了半天,一到实际配IP还是懵。后来带我的老工程师扔给我一句话:“别死记,你得理解它到底在解决什么问题。”
今天咱们就把这块彻底捋清楚。我尽量用白话讲,但该硬核的地方,咱们一点不含糊。
3.1 IPv4地址分类:从“大锅饭”到“分田到户”
IPv4地址是32位的二进制数,为了方便记忆,我们通常写成点分十进制,比如 192.168.1.1。但光有地址还不够,你得知道它属于哪个“片区”。
早期的网络设计者把IP地址分成了五类,就像把一块大蛋糕切成了几块。咱们最常用的是A、B、C三类。
| 类别 | 首字节范围 | 默认子网掩码 | 网络数 | 每网络主机数 | 典型用途 |
|---|---|---|---|---|---|
| A类 | 1 - 126 | 255.0.0.0 | 126 | 16,777,214 | 大型网络(如IBM、军方早期) |
| B类 | 128 - 191 | 255.255.0.0 | 16,384 | 65,534 | 中型网络(如大学、大企业) |
| C类 | 192 - 223 | 255.255.255.0 | 2,097,152 | 254 | 小型网络(如公司、家庭) |
| D类 | 224 - 239 | 无 | N/A | N/A | 组播 |
| E类 | 240 - 255 | 无 | N/A | N/A | 实验/保留 |
10.0.0.1 是A类,172.16.0.1 是B类,192.168.1.1 是C类。记住这三个私有地址段,工作中天天见。
你可能会问:为什么127开头的地址不在A类里?嗯,127.0.0.1是环回地址,用来测试本机网卡,它被单独留出来了。
3.2 子网掩码:到底谁是“网络号”,谁是“主机号”?
光有IP地址不行,你得告诉设备:前多少位是网络部分,后多少位是主机部分。 这个“告诉”的动作,就是子网掩码干的活。
子网掩码也是32位,网络部分全写1,主机部分全写0。比如 255.255.255.0 的二进制就是24个1后面跟8个0。说白了,掩码里1的个数,就是网络位的长度。
举个例子:192.168.1.100/24,这里的 /24 就是CIDR表示法,意思就是子网掩码有24个1。那么网络号就是 192.168.1.0,主机号是 0.0.0.100。
网络地址 = IP地址 & 子网掩码(按位与运算)
主机地址 = IP地址 & (~子网掩码)(按位与后取反)
我在项目里遇到过好几次新手配IP,掩码写错了,结果两台机器明明在同一个交换机上,就是ping不通。一查,一个写的是 255.255.255.0,另一个写的是 255.255.0.0,网络号对不上,自然不通。
3.3 CIDR:打破“类”的束缚
传统的A、B、C分类太死板了。一个C类只有254个地址,一个B类却有6万多个。你想想看,一个中型公司,300台电脑,用C类不够,用B类又浪费。怎么办?
CIDR(无类域间路由)就是来解决这个问题的。它不再死守A、B、C的边界,而是允许你任意指定网络位的长度。比如 192.168.1.0/25,网络位是25位,主机位是7位,可用地址就是126个。完美适配300人的公司?不,那是两个 /25 拼起来。
CIDR的另一个好处是路由聚合。比如你有8个连续的C类地址:192.168.0.0/24 到 192.168.7.0/24,在路由表里可以聚合成一条 192.168.0.0/21。路由表瘦身了,路由器转发效率就高了。
192.168.1.0/24 和 192.168.2.0/24 不能聚合成 192.168.0.0/23,因为 192.168.1.0 不是 /23 的网络边界。结果导致路由黑洞,半个公司的网络断了两个小时。从此我记住了:聚合前,先算边界。
3.4 VLSM实战:把“大饼”切成你需要的大小
VLSM(可变长子网掩码)是CIDR的延伸。它允许你在一个主网络里,使用不同长度的子网掩码来划分子网。说白了,就是按需分配,不浪费IP。
咱们来一个实战案例。假设你有一个 192.168.1.0/24 的网段,需要分配给以下部门:
- 研发部:100台主机
- 市场部:50台主机
- 财务部:20台主机
- 行政部:10台主机
- 服务器区:5台主机
如果按传统C类,一个部门一个 /24,那得5个C类网段,太浪费了。用VLSM,我们可以这样切:
| 部门 | 需求主机数 | 子网大小 | 子网掩码 | 网络地址 | 可用地址范围 | 广播地址 |
|---|---|---|---|---|---|---|
| 研发部 | 100 | /25 (128) | 255.255.255.128 | 192.168.1.0 | 192.168.1.1 - 192.168.1.126 | 192.168.1.127 |
| 市场部 | 50 | /26 (64) | 255.255.255.192 | 192.168.1.128 | 192.168.1.129 - 192.168.1.190 | 192.168.1.191 |
| 财务部 | 20 | /27 (32) | 255.255.255.224 | 192.168.1.192 | 192.168.1.193 - 192.168.1.222 | 192.168.1.223 |
| 行政部 | 10 | /28 (16) | 255.255.255.240 | 192.168.1.224 | 192.168.1.225 - 192.168.1.238 | 192.168.1.239 |
| 服务器区 | 5 | /29 (8) | 255.255.255.248 | 192.168.1.240 | 192.168.1.241 - 192.168.1.246 | 192.168.1.247 |
你看,一个 /24 网段,通过VLSM,完美满足了5个部门的需求,而且只用了 192.168.1.0 到 192.168.1.247,还剩了8个地址(192.168.1.248 - 192.168.1.255)可以留作他用。
下面这张图,帮你理清VLSM的切分逻辑:
3.5 避坑指南:子网划分中那些“血泪史”
最后,分享几个我亲身踩过的坑,希望能帮你省点时间:
- 网络号与广播地址不可用: 每个子网的第一个地址是网络号,最后一个地址是广播地址,都不能分配给主机。我见过有人把
192.168.1.0配给服务器,结果全网广播风暴,差点背锅。 - 子网掩码别写反: 比如
/24写成/23,网络范围扩大一倍,可能会和隔壁网段冲突。我曾经在IDC机房配IP,一个不小心把掩码写成了255.255.0.0,结果整个B段都广播出去了,被运维老大骂了一下午。 - VLSM切分后,路由表要跟上: 你切了多个子网,路由器上必须配对应的静态路由或动态路由协议,否则跨网段通信会失败。别问我怎么知道的。
- 预留扩展空间: 切分时别把地址用尽,留10%-20%的余量。公司扩张是常事,到时候再重新规划IP,比重新布线还痛苦。