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。路由表瘦身了,路由器转发效率就高了。

我曾经踩过的坑: 做BGP路由聚合时,没注意聚合后的网络号必须是2的N次方边界。比如 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)可以留作他用。

我的切分原则: 从需求最大的部门开始切,用最长的掩码(最小的子网)去满足它。然后剩下的地址空间,继续切给下一个部门。这样能最大化利用IP地址。

下面这张图,帮你理清VLSM的切分逻辑:

VLSM 子网划分逻辑图 主网络:192.168.1.0/24 (256个地址) 研发部 /25 (128个) 市场部 /26 (64个) 剩余 /26 (64个) 财务部 /27 (32个) 行政部 /28 (16个) 服务器 /29 (8个) 说明: 从大需求开始切,每次切出当前最大的子网,剩余空间继续递归切分。这样IP利用率最高。

3.5 避坑指南:子网划分中那些“血泪史”

最后,分享几个我亲身踩过的坑,希望能帮你省点时间:

  • 网络号与广播地址不可用: 每个子网的第一个地址是网络号,最后一个地址是广播地址,都不能分配给主机。我见过有人把 192.168.1.0 配给服务器,结果全网广播风暴,差点背锅。
  • 子网掩码别写反: 比如 /24 写成 /23,网络范围扩大一倍,可能会和隔壁网段冲突。我曾经在IDC机房配IP,一个不小心把掩码写成了 255.255.0.0,结果整个B段都广播出去了,被运维老大骂了一下午。
  • VLSM切分后,路由表要跟上: 你切了多个子网,路由器上必须配对应的静态路由或动态路由协议,否则跨网段通信会失败。别问我怎么知道的。
  • 预留扩展空间: 切分时别把地址用尽,留10%-20%的余量。公司扩张是常事,到时候再重新规划IP,比重新布线还痛苦。
一句话总结: 子网划分的本质,就是用子网掩码这把“尺子”,在IP地址的“主机位”上量出你需要的长度。CIDR给了你任意刻度的自由,VLSM让你在同一把尺子上量出不同长度。多练几次,你就能找到感觉。