无类别域间路由选择,即CIDR,它的核心思想就一句话:彻底废除传统A、B、C类的固定边界,用灵活的网络前缀取代预定义长度。
一、它解决了什么问题?(历史背景)
在CIDR之前,是“有类”IP时代,弊端极明显:
巨大的浪费:一个B类地址固定提供 2^16−2=65534 个地址。对只有几百人的公司,这会造成几万个地址闲置。
路由表爆炸:哪怕给同一个机构连续分配几个C类网络(如192.168.1.0—192.168.8.0),核心路由器上也需要8条独立路由记录。
CIDR的使命就是:抑制浪费,聚合路由。
二、CIDR怎么干?
它抛开了A、B、C类的限制,用两部分描述一个网络:
CIDR地址块 = < 网络前缀 > / < 前缀长度 >
网络前缀:相当于连续的网络位,可以是从1到32位的任意值。
前缀长度:标识前多少位是网络部分,就是子网划分中新掩码的长度。
1. 灵活分配地址(抑制浪费)
老方式:需要300台主机,C类(254台)不够,必须给一个B类(65534台),浪费严重。
CIDR方式:
2^8−2=254 不够;2^9−2=510 满足。
需要9位主机位,网络位就是 32−9=23 位。
直接分配/23的地址块,例如
200.1.1.0/23,恰好提供510个地址,按需分配。
2. 路由聚合(抑制路由表爆炸)
这就是CIDR的“超网”思想:把多个连续网络号合并在一条路由通告。
实例:
一个机构有8个连续的C类网络:192.168.8.0/24到192.168.15.0/24。对外发布时,不必发8条,只发1条聚合路由。
聚合计算细节:
第一步:找到这8个网络号的共同网络高位。
把8(00001000)和15(00001111)写成二进制,发现前5位(00001)不变。网络号的前16位(192.168)也全部相同。
总网络前缀位 = 16 + 5 = 21位。
第二步:确定超级网络地址。
就是地址块中最小的那个,并把变动的位归零。即
192.168.8.0。
结果:向全球发布一条
192.168.8.0/21的路由,就代表了这8个C类网络。
关键原则:聚合的地址块必须是连续的,且总数是2的幂次方,起止边界要对齐。
三、技术细节
1. 掩码与步长的对等关系
CIDR中,掩码就是前缀长度。
| 前缀长度 | 主机位(n) | 点分十进制掩码(末段/第三段) | 块大小(总IP数 2^n) |
|---|---|---|---|
| /24 | 8 | .256.0 | 256 |
| /23 | 9 | .254.0(255.255.254.0) | 512 |
| /22 | 10 | .252.0 | 1024 |
| /21 | 11 | .248.0 | 2048 |
| /20 | 12 | .240.0 | 4096 |
核心公式:
可用主机数= 2^n−2
所属的 网络号(即网络地址)= IP地址 AND 掩码,每个块的首地址就是块大小的整数倍。
广播地址= 下一个网络号 - 1
步长,也叫“块大小”,就是一个子网内包含的IP地址总数。它的计算有两条路,结果完全一致:
1. 直接从掩码算
步长 = 256 - 掩码的非零段值
这里只处理掩码中最后一个不是255的段。如果掩码是标准的
255.255.255.0,非零段就是最后的0。2. 从主机位算
步长 = 2^主机位数
主机位数
n,就是掩码中末段连续0的个数。
2. 最长前缀匹配(路由器查表铁律)
聚合路由和具体子网路由可能同时存在。路由器转发数据包时,永远选择路由表中“前缀最长、最具体”的那一项。
例子:
路由器同时有两条路由:
路由A:
192.168.16.0/20(聚合路由,范围大)路由B:
192.168.18.0/24(具体子网,范围小)
一个发给192.168.18.5的包,两条路由都匹配。
路由B的前缀长度 /24 > /20,更长更具体。
结果:路由器会选择B。这保证了聚合路由的灵活性,也确保了访问具体子网的准确性。
四、CIDR计算演练
题目:某公司被分配了整个CIDR地址块172.16.64.0/20,需在该块内划分出5个主机数不少于500的子网。
计算了过程:
分析现有资源
/20主机位 n=32−2012。总IP数 2^12=4096。分析需求(按主机数)
500台主机,2^8−2=254 不够,2^9−2=510 满足。每个子网需要n = 9位主机位。子网掩码将是 32−9=23。计算步长(关键)
/23的总IP数(步长)= 2^9=512。掩码是
255.255.254.0,第三段非零值是254,步长 256−254=2(在第三段增加,即每次第三段+2)。确定第一个子网的网络号
必须对齐步长边界,不能随意指定。第一个子网号即172.16.64.0。推导子网(均在/20块内)
网络号第三段每次增加2:
子网1:
172.16.64.0/23子网2:
172.16.66.0/23子网3:
172.16.68.0/23子网4:
172.16.70.0/23子网5:
172.16.72.0/23
五个/23子网共占用 5×512=25605×512=2560 个IP,远小于总公司持有的4096个,实现IP灵活分配。