第4章 IP地址与子网划分:IPv4地址分类、子网掩码计算、VLSM与CIDR实战

聊到网络,IP地址和子网划分是绕不开的基础。说实话,我见过不少刚入行的朋友,一听到子网掩码就头疼。其实没那么复杂,咱们今天把它彻底讲透。

4.1 IPv4地址分类——先搞清楚地址长什么样

IPv4地址是32位的二进制数,通常写成点分十进制。比如192.168.1.1,你肯定见过。但你知道它属于哪一类吗?

IPv4地址分成了A、B、C、D、E五类。前三个是给主机用的,D类用于组播,E类保留。我习惯用第一个字节来判断类别:

类别 首字节范围 默认子网掩码 用途
A类 1 - 126 255.0.0.0 大型网络
B类 128 - 191 255.255.0.0 中型网络
C类 192 - 223 255.255.255.0 小型网络
D类 224 - 239 组播
E类 240 - 255 实验保留
小提示:127.0.0.1是回环地址,不属于任何类别。我刚开始学的时候老把它当A类,后来被师傅骂了一顿才记住。

4.2 子网掩码计算——说白了就是划地盘

子网掩码的作用,就是告诉路由器:网络位到哪结束,主机位从哪开始。你想想看,如果没有子网掩码,路由器根本不知道一个IP地址的网络部分是多少。

举个例子:IP地址192.168.1.100,子网掩码255.255.255.0。把两者做“与”运算:

IP:     11000000.10101000.00000001.01100100
掩码:   11111111.11111111.11111111.00000000
结果:   11000000.10101000.00000001.00000000  → 192.168.1.0

结果192.168.1.0就是网络地址。主机位全0嘛。主机位全1就是广播地址:192.168.1.255。

核心公式:
  • 网络地址 = IP地址 & 子网掩码
  • 广播地址 = 网络地址 + (2^主机位数 - 1)
  • 可用主机数 = 2^主机位数 - 2(减去网络地址和广播地址)

我在项目中遇到过一个问题:有人把子网掩码配成了255.255.255.252,结果发现只有两个可用IP。他问我为什么连不上网,我一看,掩码配错了。255.255.255.252的主机位只有2位,可用主机数就是2^2 - 2 = 2个。点对点链路刚好够用,但用在普通网段里肯定不行。

4.3 VLSM实战——变长子网掩码,省地址的利器

VLSM,全称是Variable Length Subnet Mask。说白了,就是允许在一个大网络里使用不同长度的子网掩码。为什么要这么做?

我举个例子你就明白了。假设你有一个C类地址192.168.1.0/24,要分给三个部门:

  • 销售部:需要50个IP
  • 技术部:需要30个IP
  • 行政部:需要10个IP

如果用固定子网掩码,每个子网都分64个IP,那销售部浪费14个,技术部浪费34个,行政部浪费54个。加起来浪费了102个IP。你想想看,多可惜。

用VLSM就不一样了:

销售部:192.168.1.0/26  → 掩码255.255.255.192,可用62个IP
技术部:192.168.1.64/27 → 掩码255.255.255.224,可用30个IP
行政部:192.168.1.96/28 → 掩码255.255.255.240,可用14个IP

这样只用了96个IP,浪费少多了。我个人习惯在做VLSM规划时,先画个树形图,把每个子网的需求列出来,然后从大到小分配。这样不容易出错。

注意:VLSM要求所有路由器都支持RIPv2或OSPF等协议。我曾经在一个老旧的网络里用了VLSM,结果RIPv1不传递子网掩码信息,导致路由黑洞。那一次排查了整整一个下午。

4.4 CIDR实战——无类域间路由,让路由表瘦身

CIDR,Classless Inter-Domain Routing。它彻底抛弃了A、B、C类的概念,用“IP地址/前缀长度”来表示网络。比如192.168.0.0/16,就表示前16位是网络位。

CIDR最大的好处是路由聚合。我记得有一次,一个客户的路由表里有200多条C类地址的路由,全是192.168.x.x的。我建议他用CIDR聚合一下:

原路由:
192.168.0.0/24
192.168.1.0/24
192.168.2.0/24
...
192.168.255.0/24

聚合后:
192.168.0.0/16

200多条路由变成1条,路由表瞬间瘦身。路由器的CPU占用率也降下来了。这就是CIDR的魅力。

CIDR的计算也很简单。比如给你一个地址块192.168.0.0/20,你能算出它包含多少个C类地址吗?

前缀长度20位,主机位12位
地址数 = 2^12 = 4096个
C类地址每个有256个,所以包含4096/256 = 16个C类地址

嗯,这里要注意:CIDR的地址块必须是连续的,而且起始地址必须对齐到块大小。比如/20的块,起始地址必须是16的倍数。192.168.0.0/20没问题,但192.168.1.0/20就不合法。

4.5 实战案例——一个完整的子网规划

咱们来做个完整的练习。假设公司拿到一个IP段:10.0.0.0/8。需要规划以下网络:

  • 总部:需要500个IP
  • 分部A:需要200个IP
  • 分部B:需要100个IP
  • DMZ区:需要50个IP
  • 管理网段:需要10个IP

我的做法是这样的:

总部:10.0.0.0/23    → 掩码255.255.254.0,可用510个IP
分部A:10.0.2.0/24   → 掩码255.255.255.0,可用254个IP
分部B:10.0.3.0/25   → 掩码255.255.255.128,可用126个IP
DMZ区:10.0.3.128/26 → 掩码255.255.255.192,可用62个IP
管理网段:10.0.3.192/28 → 掩码255.255.255.240,可用14个IP

你看,从大到小分配,每个子网都不重叠。而且预留了10.0.4.0/22以后的地址段给未来扩展。这是我个人的习惯——永远留出20%的地址空间做缓冲。

避坑指南:我曾经在规划时忘了留广播地址和网络地址,结果配置完发现少两个IP。从那以后,我每次算完可用主机数,都会手动减2确认一遍。

好了,IP地址与子网划分的内容就讲到这里。记住:分类地址是历史,VLSM和CIDR才是现代网络的基石。你想想看,如果没有CIDR,互联网的路由表早就爆炸了。下一章咱们聊聊路由协议,到时候你会更深刻地理解子网划分的重要性。