哈喽,大家好呀,我是呼噜噜,好久没有更新文章了,今天我们来聊聊网络CIDR,无论你是开发者、系统管理员还是网络工程师,理解IP地址和网络是如何划分的都至关重要。而这一切,都离不开一个叫做CIDR的概念。
本文将讲解什么是CIDR、前缀长度、子网掩码、CIDR蕴含的信息、划分子网、路由聚合等核心概念
什么是CIDR?
在前一篇文章中图解IP地址的奥秘:组成与分类,我们了解到在上世纪90年代初的互联网。那时的互联网正处于爆炸式增长的黎明,但也面临着两个巨大的危机:
- IPv4地址即将耗尽:最初的IPv4地址被划分成固定的A、B、C、D、E五类,非常的****低效、浪费地址,比如C 类太小(254 主机,如网吧不足);B 类太大(6.5 万,浪费)
- 路由表爆炸:网络传输的关键设备就是路由器,负责为我们指路。它的“地图”就是路由表,
分类编址方法网络中,每个地址都需要在路由表里有一个条目,但随着接入互联网的网络数量指数级增长,路由器的内存和处理能力不堪重负,路由表越来越大,查找速度越来越慢
为了解决分类编址方法所带来的问题,IETF在1993年发布了 RFC 1518 和 RFC 1519,正式推出了 CIDR。作为一种新的IP地址分配和管理方法,标志着网络世界从传统的基于类的IP地址分配方式,向更灵活、更高效的地址管理模式转变。
CIDR也叫做无分类编址(Classless Inter-Domain Routing),打破分类编址方法中A、B、C类的僵化界限,可变长度子网掩码VLSM,其中网络前缀具有可变长度,与以前的分类编址网络设计的固定长度前缀相反。使得IP地址的分配更加灵活和高效。

CIDR允许网络管理员,根据实际需要划分任意大小的地址块,从而减少了IP地址的浪费,并提高了地址空间的利用率。
CIDR的表示形式-前缀长度
CIDR的表示形式:IP地址/前缀长度,该数字表示网络部分的位数,也被称为网络号、网络前缀。前缀长度x的范围是0~32
比如:192.168.1.0/24,/24表示前24位是网络号, 用于标识这是哪个网络。剩余的8位是主机号,用于标识该网络中的具体设备
CIDR的表示形式-子网掩码
CIDR的表示形式,还有另一种方式,那就是子网掩码****Subnet Mask,子网掩码和 IP 地址一样,由一个 32 位的二进制数字组成,一般来说,子网掩码由高位部分连续的 1 和地位部分连续的 0 组成
子网掩码,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码;并说明该IP地址是在局域网上,还是在广域网上。子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码和前缀长度是同一个概念的两种不同表示方式
比如上面的192.168.1.0/24,/24 意味着网络部分占了24位,又因为一个IPv4地址总共有32位,所以主机部分占了 32 - 24 = 8 位
我们可以将/24轻松地转换为子网掩码,即前24位都是1,后8位都是0,转换成十进制为255.255.255.0
所以192.168.1.0/24 和 192.168.1.0 配合子网掩码 255.255.255.0 是完全等价的。

CIDR蕴含的信息
我们以192.168.1.0/24 为例,来计算一下CIDR蕴含的信息
- 网络地址Network Address,主机部分全为0的地址。它代表整个网络,不能分配给具体设备,所以网络地址是
192.168.1.0 - 广播地址Broadcast Address,主机部分全为1的地址。向这个地址发送数据包,网络内所有设备都会收到。它也不能分配给具体设备。所以广播地址是
192.168.1.255 - 可用主机数量,主机部分有8位,所以可以有
2^8=256个不同的组合。除去网络地址和广播地址,实际可用的主机地址数量是2^8−2=254个 - 可用IP范围, 从网络地址加1,到广播地址减1。所以可以IP的范围是,从
192.168.1.1到192.168.1.254
划分子网
传统的分类编址方法,对于外部的互联网来说,IP 地址分配不灵活,造成了巨大的地址浪费,加速了 IPv4 地址的耗尽。对于内部的组织而言,又偏大,不好管理,性能低下且不安全
所以为了解决这个问题,子网划分Subnetting就出现了,它不需要改变已分配的 A/B/C 类网络号,而是在组织内部,从原来的"主机号"部分借几位出来,用作"子网号"。
在计算机网络中,子网其实是一种逻辑上的概念,它允许将一个大的IP地址空间划分成更小的、独立的网络单元
在实际网络环境中,将一个大的网段划分为多个小的子网有诸多好处:
- 提高网络性能: 通过将网络流量限制在各自的子网内,可以减少网络拥堵和广播风暴,从而提升整体网络性能。
- 增强网络安全: 可以在不同子网之间设置访问控制策略,例如,将服务器和普通员工的电脑置于不同的子网,以限制未授权的访问。
- 便于管理: 将不同部门或功能的设备划分到不同的子网,可以使网络结构更加清晰,方便进行管理和故障排查。
- 更有效地利用 IP 地址: 可以根据不同子网的设备数量需求,灵活地分配 IP 地址,避免浪费。
这样从路由器角度来看,对外部路由器来说:它看到的仍然是那个大的 A/B/C 类网络,路由表不受影响。例如,发送到 130.5.x.x 的所有流量都只会指向同一个组织。
对内部路由器来说,它能识别出被借走的“子网号”。例如,它知道 130.5.1.x 和 130.5.2.x 是两个不同的子网络,可以对它们进行隔离和独立管理。
接下来我们具体看看子网是怎么划分的?

我们还是以192.168.1.0/24为例,假设我们要将其划分为 4 个子网,主机位8位,再参考下面的2个公式
- 可划分的子网数量 = 2^n (其中 n 是借出的主机位数)
- 每个子网的主机数量 = 2^m−2 (其中 m 是剩余的主机位数, 减 2 是因为要去掉网络地址和广播地址)
首先我们要先确定借出的主机位数,2^n >=4 得出借出的主机位数n=2。由于我们借了 2 位,这两位可以有 4 种组合:00, 01, 10, 11。这对应着 4 个子网
剩余主机位为 6 位,那么每个子网的主机数 = 2^6−2=64−2=62 个
原始子网掩码11111111.11111111.11111111.00000000,向右借2位11111111.11111111.11111111.11000000,即255.255.255.192
划分后的 4 个子网如下表格:

还不明白?我们再来回顾一下,建议先转化成2进制再计算
- 子网 1 (子网号
00)
- 网络地址:
192.168.10.00000000->192.168.10.0 - 可用 IP 范围:
192.168.10.1到192.168.10.62(主机位从000001到111110) - 广播地址:
192.168.10.00111111->192.168.10.63
- 子网 2 (子网号
01)
- 网络地址:
192.168.10.01000000->192.168.10.64 - 可用 IP 范围:
192.168.10.65到192.168.10.126 - 广播地址:
192.168.10.01111111->192.168.10.127
- 子网 3 (子网号
10)
- 网络地址:
192.168.10.10000000->192.168.10.128 - 可用 IP 范围:
192.168.10.129到192.168.10.190 - 广播地址:
192.168.10.10111111->192.168.10.191
- 子网 4 (子网号
**11**)
- 网络地址:
192.168.10.11000000->192.168.10.192 - 可用 IP 范围:
192.168.10.193到192.168.10.254 - 广播地址:
192.168.10.11111111->192.168.10.255

路由聚合
无类别域间路由(CIDR)的核心,是它允许用任意长度的前缀来定义网络,这打破了过去固化的地址分类。
这个特性带来一个直接且强大的能力:将多个连续的小地址块,“聚合”成一个更大的地址块,对外只需宣告一个路由条目。这就是路由聚合Route Aggregation
比如我们管理一个小型ISP,拥有4个连续的地址块:198.51.100.0/24, 198.51.101.0/24, 198.51.102.0/24, 198.51.103.0/24
若不聚合,我们必须向全球互联网通告4条独立的路由。每一条路由,都意味着在全球核心路由器的庞大路由表中占据一个条目,会增加骨干路由器的负担。
但通过CIDR,我们可以发现,这四个地址块在二进制层面,前22位是完全相同的,差异从第23位才开始出现,即198.51.011001
路由聚合正是利用这个最长的共同前缀,将这四个 /24 网络聚合成一个 /22 的网络:198.51.100.0/22。
这个时候我们只需要向外界通告一条路由 198.51.100.0/22,而不是4条。 对于互联网上的其他路由器而言,它们不再需要关心其内部那4个小网络的存在;它们只需要知道,所有去往这个地址范围的数据包,都应发往同一个方向。
这是对“路由表爆炸”问题最直接的消解。它让互联网的路由系统得以高效扩展。这使得多个小网络可以合并成一个更大的网络。路由聚合能够将局部网络的复杂性在本地吸收,阻止了其向整个互联网扩散
将原本扁平化的路由世界,重塑为一个可以层层概括的层级化结构。进一步减少了路由表的大小,提高了互联网的路由效率。
可以说,没有CIDR,就没有今天如此庞大和高效的互联网

小结
CIDR的出现主要是为了解决传统IP地址划分(A、B、C类)带来的问题,它以灵活的地址分配与路由聚合技术,成功解决了IP地址短缺问题,既显著提升了地址利用率,又精简了全球路由表,全面优化了网络效率。
CIDR它是一项伟大的技术革新,其价值远不止于一个应对危机的技术补丁,它从一个应对IP地址耗尽和路由表膨胀的危机解决方案,逐渐演变为支撑现代互联网和云计算的核心基石。
它为互联网的规模化扩展提供了底层支持。正是这种高效、弹性的地址管理能力,才使得互联网服务商、数据中心乃至今天庞大的云计算平台得以构建和运行
作者:小牛呼噜噜
本文到这里就结束啦,感谢阅读,关注同名公众号:小牛呼噜噜,防失联+获取更多技术干货