IPv4 CIDR 无类别域间路由下的 IP 地址划分
提示
在阅读本文章前,建议先阅读目录中所指的其它相关文章。若读者对于 IPv4 的相关知识比较熟悉可以直接阅读本文。
一. 什么是无类别域间路由(CIDR)
无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。引用自百度百科
CIDR 的出现是为了替代颇具诟病的分类编址。在 CIDR 被采用之前, IP 地址的网络部分被限制为长度为 8、16 或 24 比特,这是一种被称为分类编址(classful addressing)的编址方案[1]。也就是将 IP 地址划分为 A、B、C、D、E 类的编址方案。
随着互联网的快速发展,分类编址方案出现了一些问题,例如扩展性差,存在地址浪费。为解决这些问题,且考虑到从 IPv4 到 IPv6 的过度。互联网工程工作小组在 1993 年发布了一新系列的标准—— RFC 1518 和 RFC 1519 ——以定义新的分配 IP 地址块和路由 IPv4 数据包的方法,也就是 无类别域间路由 CIDR 。
二. CIDR 的网络划分
在分类编址方案中,除了以固定大小位数的网络号将网络划分为 ABCDE 类,还有一个重要的划分网络手段就是通过子网掩码对 ABCDE 类 IP 再进行划分。而 CIDR 方案就是从该角度入手。接下来从一个案例出发,理解分类编址如何过渡到 CIDR 编址。
编址方案 | IP 地址 | 子网表示 | 完整表示 |
---|---|---|---|
分类编址 | 202.119.100.202 | 255.255.255.240 | 202.119.100.202 255.255.255.240 |
CIDR 编址 | /28 | 202.119.100.202/28 |
上表展示了对于一个 IP 地址的两种编址表示的区别。使用分类编址时,需要原 IP 地址与子网掩码配套使用,而 CIDR 编址则直接在 IP 地址后跟上了一个 “/24” 的前缀,该前缀表示的也正是子网掩码。CIDR 编址所做的,其实就是将子网掩码的位数作为前缀,添加在原 IP 地址的后面。(我也觉得很奇怪为什么这玩意叫前缀,不应该叫后缀吗)
子网掩码 255.255.255.240
化为二进制表示法时,前 28 位都为1(转换方式可参考文章),因此在 CIDR 编址时前缀的数字是 28,最终表示形式为 192.168.1.102/28
。
我们继续关注 CIDR 编址与分类编址的区别。在 192.168.1.102/28
中 28 直接表示子网掩码为 28 位,则该 IP 的划分情况如下。
CIDR 编址 | 分类编址 | |
---|---|---|
十进制点分表示 | 202.119.100.202/28 | 202.119.100.202 255.255.255.240 |
二进制表示 | 1100 0000 1010 1000 0000 0001 0110 0110 | 1100 0000 1010 1000 0000 0001 0110 0110 |
提示
- 该颜色的 IP 位, 表示该位是 IP 的网络号对应的位
- 该颜色的 IP 位,表示该位是 IP 的子网号对应的位
- 该颜色的 IP 位,表示该位是 IP 的主机号对应的位
在分类编址中黄色的网络号是由其分类决定的,例如上述例子中的 IP 地址属于 C 类 IP,而 C 类 IP 的网络号是 24 位的。而绿色的是子网号,由子网掩码划分得出。最后蓝色的是子网号。而在 CIDR 编址时,已经不考虑分类,"/28" 的前缀表示子网掩码,直接将 IP 的前 28 位标识为网络号,剩余的位为主机号。这样 CIDR 就实现了对地址的划分。
经过上述描述,大致对 CIDR 的编址逻辑进行了掌握。接下来强调几点 CIDR 编址的知识点。
1. IP 相同,子网掩码不同的 IP 地址不是同一个地址
202.119.100.202/28
与 202.119.100.202/24
IP 相同,但是子网掩码不同,因此这两个地址不是同一个地址。
202.119.100.202/28
是在 202.119.100.192/28
网络下的主机地址。
202.119.100.202/24
是在 202.119.100.0/24
下的主机地址。
202.119.100.192/28
或 202.119.100.0/24
也被可以被称为 CIDR块,相当于一个网络,因为该地址除了其标识的前 28 位网络号外的主机号全为 0,代表整个网络。
十进制 | 二进制 | |
---|---|---|
网络 IP | 202.119.100.192/28 | 1100 0000 1010 1000 0000 0001 0110 0000 |
主机 IP | 202.119.100.202/28 | 1100 0000 1010 1000 0000 0001 0110 0110 |
网络 IP | 202.119.100.0/24 | 1100 0000 1010 1000 0000 0001 0000 0000 |
主机 IP | 202.119.100.202/24 | 1100 0000 1010 1000 0000 0001 0110 0110 |
2. 使用 CIDR 可以对网络进行多层划分
我们查看以下例子。在该例中划分了三层网络(白色的网络,绿色的网络,蓝色网络),其呈现层次关系。其中黄色的是主机 IP。不难发现,随着网络层次的划分,子网掩码的值越来越大,白色的网络层次为 16,绿色的网络层次为 20,蓝色的网络层次为24。子网掩码递增的大小决定了一个高层网络能够划分多少下一层网络。
例如,从白色网络层次的 16,到绿色网络层次的 20,子网掩码递增了 4,这意味着在白色的网络层次地址中有 4 位用来划分子网络。那我们可以计算出,在白色网络层次中可以划分 2 4 2^4 24 个子网络(该计算与分类编址中使用子网掩码的计算相同,但是在 CIDR 编码中不用考虑子网号全为 0 或 1 的情况,因此不需要减 2)。
三. CIDR 练习题
1. 网络 120.26.0.0/18
下可以划分多少个 IP 配置给主机
可知网络号 18 位,则主机号有
32
−
18
=
14
32 -18 = 14
32−18=14 位。则可划分
2
14
2^{14}
214 个 IP。
其中要主机号全为 0 与 1 的 IP 不能配置给主机。因此可划分
2
14
−
2
2^{14}-2
214−2 个 IP 配置给主机。
提示
与上文中的网络层次划分不同,这里之所以要减 2 是因为考虑的是分配给主机而不是分配给子网络。
2. 某主机的 IP 为 120.26.57.7/23
,则其属于的网络 IP 为多少
若要求 120.26.57.7/23
所处的网络,只需要将其主机号全置为 0,得到的 IP 即为网络 IP。因此将 120.26.57.7
转化为二进制有:
十进制 | 二进制 | |
---|---|---|
主机 IP | 120.26.57.7/23 | 0111 1000 0001 1010 0011 1001 0000 0111 |
网络 IP | 120.26.56.0/23 | 0111 1000 0001 1010 0011 1000 0000 0000 |
如上表,其所属网络 IP 为 120.26.56.0/23
。
3. 若要在网络 120.26.0.0/18
下再划分一层有 6 个子网络的网络,且要保证每个子网络能够容量尽量多的主机,则这 6 个子网络的 IP 分别为多少
若要再划分 6 个子网络,则下一层子网络的子网掩码要加大 n,以满足
2
n
>
6
(
n
为
整
数
)
2^n>6(n为整数)
2n>6(n为整数)。显然
n
≥
3
n\geq3
n≥3 满足条件。
当
n
=
3
n = 3
n=3 时可保证划分的子网络可容纳的主机最多,则在 120.26.0.0/18
下可划分:
十进制 | 二进制 | |
---|---|---|
网络 IP | 120.26.0.0/18 | 0111 1000 0001 1010 0000 0000 0000 0000 |
子网络 1 | 120.26.0.0/21 | 0111 1000 0001 1010 0000 0000 0000 0000 |
子网络 2 | 120.26.8.0/21 | 0111 1000 0001 1010 0000 1000 0000 0000 |
子网络 3 | 120.26.16.0/21 | 0111 1000 0001 1010 0001 0000 0000 0000 |
子网络 4 | 120.26.24.0/21 | 0111 1000 0001 1010 0001 1000 0000 0000 |
子网络 5 | 120.26.32.0/21 | 0111 1000 0001 1010 0010 0000 0000 0000 |
子网络 6 | 120.26.40.0/21 | 0111 1000 0001 1010 0010 1000 0000 0000 |
子网络 7 | 120.26.48.0/21 | 0111 1000 0001 1010 0011 0000 0000 0000 |
子网络 8 | 120.26.56.0/21 | 0111 1000 0001 1010 0011 1000 0000 0000 |
则在这些子网络 IP 地址中选出 6 个即为答案。
提示
本次文章的习题讲解相比之前的文章讲解的没那么细,若有问题可以评论,会在一天内回复解答。
参考文献
[1] JAmes F.Kurose, Keith W. Ross.计算机网络自顶向下方法[M].机械工业出版社:北京,2014.9:229.
其他相关文章
文章名称 | 更新时间 |
---|---|
IPv4 十进制点分表示法 | 2020-10-29 |
IPv4 地址分类 | 2020-11-8 |
IPv4 地址与子网掩码 | 2020-11-16 |
IPv4 CIDR 无类别域间路由 | 2021-1-14 |