cidr 表示法
任何Linux专业人员都应该熟悉的网络路由中的关键概念之一是网络符号。 本文是受我的读者对Linux网络路由的介绍的要求启发而提出的,以解释有关CIDR表示法及其工作方式的更多信息。 CIDR代表无类间域路由 ; 它定义了一种用于网络寻址的注释方法,该方法用于指定IP地址的网络部分。
网络类
在检查CIDR实际如何工作之前,我们首先来看一下CIDR取代的经典网络符号。 1981年引入的分类方法定义了五个网络类别,用于识别和寻址Internet上的设备。 网络类别由地址的四个前导位定义。
Class | 前导位 | 开始 | 结束 | 子网掩码 | CIDR | 网路 | IP地址/网络 |
A | 0 | 0.0.0.0 | 127.255.255.255 | 255.0.0.0 | / 8 | 128 | 16,177,216(2 24 ) |
B | 10 | 128.0.0.0 | 191.255.255.255 | 255.255.0.0 | / 16 | 16,384 | 65,536(2 16 ) |
C | 110 | 192.0.0.0 | 223.255.255.255 | 255.255.255.0 | / 24 | 2,097,152 | 256(2 8 ) |
D | 1110 | 224.0.0.0 | 239.255.255.255 | 未定义 | 未定义 | ||
E | 1111 | 240.0.0.0 | 255.255.255.255 | 未定义 | 未定义 |
表1:有类别的Internet寻址定义了五个类别。
表1显示了由有类网络寻址定义的五个网络类,包括每个类的子网掩码和CIDR表示法。 类A,B和C是分配给组织的常用单播地址范围。 单播意味着将数据包发送到单个目标主机。 D类是所谓的地址多播范围。 在此范围内,数据包将被发送到定义的网络上的所有主机。 该范围的IP地址基本上没有使用。 E类地址范围保留用于将来扩展,但从未使用过。
请注意,只有三个可能的子网掩码与有类别的网络的每个类别匹配:255.0.0.0(8位),255.255.0.0(16位)和255.255.255.0(24位),在八位字节边界上划分。 由于类定义的网络数量相对有限,这是公共地址分配中的限制因素之一。
不幸的是,分类的网络作业导致大量浪费。 组织会申请多个地址,但是例如,如果他们需要的资源超过了C类网络中的地址数量,则无论他们是否需要该网络中的所有地址,都将申请并分配给整个B类网络或不。 B类网络也是如此。 一些大型组织需要的不仅仅是B类网络,因此它们被分配为A类网络。 因此,一些大型组织成为大量IP地址的分配者。 有关当前/ 8块和历史A类网络的分配的完整列表的链接,请参见下面的参考。
重要的是要了解,地址的四个前导(最左边)位定义了网络的类别,而不是子网掩码或等效于子网掩码的CIDR。 实际上,这意味着在Internet级别上,大型网络无法分解成较小的子网,因为Internet路由器只能有一条通往每个分配的分类网络的路由。 此外,尽管大型的,有类别的网络可以由拥有它们的组织划分为子网,但将数据包路由到同一网络上的其他地理位置,则需要组织以非常高的溢价成本使用私有内部网络或公共VPN。
举一个简单的例子,假设一家公司有六个部门,每个部门需要约400个IP地址。 这需要多个256个IP地址的C类网络,总共需要2400个地址。 该公司为B类网络分配了65,536个地址。 结果,剩余的63,136个IP地址将被浪费,因为它们无法分配给其他组织。
注意:就本示例而言,有必要使用当前私有10.0.0.0/8 CIDR地址块的一部分,就像它是公共B类地址一样。 这是为了保护可能属于某个组织的公共地址。
我使用sipcalc命令行程序从伪公共地址范围中为该随机选择的B类网络提供了网络数据。 sipcalc命令可提供有关IP地址或地址范围的大量信息。 如您将在后面看到的,它还具有在给定子网掩码的给定地址范围内生成子网列表的功能。 您可能需要安装sipcalc程序; 默认情况下,它没有安装在我的Fedora系统上。
$ sipcalc 10.125.0.0/16
-[ipv4 : 10.125.0.0/16] - 0
[CIDR]
Host address - 10.125.0.0
Host address (decimal) - 175964160
Host address (hex) - A7D0000
Network address - 10.125.0.0
Network mask - 255.255.0.0
Network mask (bits) - 16
Network mask (hex) - FFFF0000
Broadcast address - 10.125.255.255
Cisco wildcard - 0.0.255.255
Addresses in network - 65536
Network range - 10.125.0.0 - 10.125.255.255
Usable range - 10.125.0.1 - 10.125.255.254
图1:网络10.125.0.0/16的详细信息
图1中sipcalc命令的输出显示了网络地址,网络掩码,网络地址范围以及该范围内的可用地址。 地址10.125.0.0是网络地址,而10.125.255.255是该网络的广播地址。 这两个地址不能用于主机。
另一个选择是将多个C类网络分配给公司。 这将大大减少浪费的IP地址的数量,但是为该组织配置路由将比使用单个网络时要复杂得多。 此选项还将减少可用于其他组织的C类地址块的数量。
随之而来的是CIDR
CIDR表示法于1993年引入,旨在延长IPV4的生存期,该IPV4的可分配地址用完了。 它通过使组织能够更充分地利用分配给他们的公共IPV4地址范围并开放一些先前保留的地址范围来实现此目的。
1996年, RFC1918增强了CIDR,在旧的A,B和C类类别范围中分配了保留的,外部不可路由的网络。 任何组织均可免费使用这些专用网络作为其内部网络; 不再需要每台计算机都具有分配的公用IP地址。 此功能为解决多个问题提供了很大一部分解决方案。
CIDR Block | 地址范围 | IP地址数 |
10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | 16,777,216 |
172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | 1,048,576 |
192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | 65,536 |
表2:保留用作内部网络的地址范围。
这些专用内部网络的使用允许为组织分配一个或可能几个公共IP地址以访问外部Internet,同时为内部网络提供大型专用地址空间。 绝对要清楚,这些地址范围中的每个地址都可以由许多不同的组织使用,因为这些专用网络地址无法通过Internet路由。 当然,组织可以在专用网络之间进行内部路由。
回到我们的示例公司,让我们假设它只需要一个公共IP地址即可将其连接到外界。 该公司的Internet提供商仅分配了至少4个地址的块,其中两个为网络地址和广播地址保留,因此保留了2个可用地址。 这样可以在由于子网划分过多而导致的不可用地址,地址浪费和客户成本之间取得平衡。
ISP为公司分配一个公共网络地址10.125.16.32/30。 请记住,对于此示例,我们使用的是10.0.0.0/8专用网络的一部分,就好像它是公共的一样。 该任务为公司提供了以下公共网络。
$ sipcalc 10.125.16.32/30
-[ipv4 : 10.125.16.32/30] - 0
[CIDR]
Host address - 10.125.16.32
Host address (decimal) - 175968288
Host address (hex) - A7D1020
Network address - 10.125.16.32
Network mask - 255.255.255.252
Network mask (bits) - 30
Network mask (hex) - FFFFFFFC
Broadcast address - 10.125.16.35
Cisco wildcard - 0.0.0.3
Addresses in network - 4
Network range - 10.125.16.32 - 10.125.16.35
Usable range - 10.125.16.33 - 10.125.16.34
图2:网络10.125.75.32/30的详细信息
然后,我们的示例公司可以选择将任何专用网络范围用于其内部网络。 然后,他们可以使用网络地址转换(NAT)从其内部专用网络访问外界。
$ sipcalc 172.16.0.0/12
-[ipv4 : 172.16.0.0/12] - 0
[CIDR]
Host address - 172.16.0.0
Host address (decimal) - 2886729728
Host address (hex) - AC100000
Network address - 172.16.0.0
Network mask - 255.240.0.0
Network mask (bits) - 12
Network mask (hex) - FFF00000
Broadcast address - 172.31.255.255
Cisco wildcard - 0.15.255.255
Addresses in network - 1048576
Network range - 172.16.0.0 - 172.31.255.255
Usable range - 172.16.0.1 - 172.31.255.254
图3:网络172.16.0.0/12的详细信息
乍一看,要做的直接事情可能是从专用172.16.0.0/12范围中选择一个网络,以为单个内部网络提供足够大的范围。 对于我们的示例,他们可以选择172.16.0.0/12网络,该网络将为他们提供以下内部网络空间。
请注意,此网络不符合旧的B类网络,因为它的网络掩码中的网络位较少,因此为主机地址位提供了更多空间。 12个网络位为主机留出20位,即总共1,048,576个主机。 这比旧的B类网络提供的主机要多得多。 这也远远超出了他们网络实际所需的空间。
可变长度子网掩码(VLSM)
CIDR还为旧的网络掩码带来了一种新方法,称为可变长度子网掩码或VLSM。 对于图3中CIDR块定义的专用地址范围,使用12位网络掩码就可以说明这一点。
VLSM使我们的示例公司可以通过在网络掩码中添加位,从可用的大型私有地址空间轻松创建更多可管理的子网。 使用12位网络掩码涵盖了整个可用私有地址范围,因此为了对公司实际需要的地址空间更加保守,他们决定增加他们将使用的网络掩码中的位数。
sipcalc -s xx命令(其中xx是子网掩码中的位数)可用于计算此私有地址范围内的子网。 例如,下面的图4显示了172.16.0.0/12的16个子网,它们具有16位子网掩码。
$ sipcalc 172.16.0.0/12 -s 16
-[ipv4 : 172.16.0.0/12] - 0
[Split network]
Network - 172.16.0.0 - 172.16.255.255
Network - 172.17.0.0 - 172.17.255.255
Network - 172.18.0.0 - 172.18.255.255
Network - 172.19.0.0 - 172.19.255.255
Network - 172.20.0.0 - 172.20.255.255
Network - 172.21.0.0 - 172.21.255.255
Network - 172.22.0.0 - 172.22.255.255
Network - 172.23.0.0 - 172.23.255.255
Network - 172.24.0.0 - 172.24.255.255
Network - 172.25.0.0 - 172.25.255.255
Network - 172.26.0.0 - 172.26.255.255
Network - 172.27.0.0 - 172.27.255.255
Network - 172.28.0.0 - 172.28.255.255
Network - 172.29.0.0 - 172.29.255.255
Network - 172.30.0.0 - 172.30.255.255
Network - 172.31.0.0 - 172.31.255.255
图4:使用sipcalc计算172.0.0 / 12专用地址范围的16位子网。
使用sipcalc来计算172.16.0.0/12网络的网络掩码中各种位数提供的地址数量,它们将确定以下内容:
Bits in netmask | 地址数 |
12 | 1,048,576 |
16 | 65,536 |
17 | 32,768 |
18 | 16,384 |
19 | 8,192 |
20 | 4,096 |
表3:网络172.16.0.0/12在各个子网范围内的地址数
如前所述,该公司目前需要大约2400个IP地址。 为了提供足够的增长空间,同时将地址总数减少到可管理的水平,该公司选择使用提供8192个地址的19位网络掩码。 他们使用sipcalc计算可用的19位子网,如下图5所示。
$ sipcalc 172.16.0.0/12 -s 19
-[ipv4 : 172.16.0.0/12] - 0
[Split network]
Network - 172.16.0.0 - 172.16.31.255
Network - 172.16.32.0 - 172.16.63.255
Network - 172.16.64.0 - 172.16.95.255
Network - 172.16.96.0 - 172.16.127.255
Network - 172.16.128.0 - 172.16.159.255
Network - 172.16.160.0 - 172.16.191.255
Network - 172.16.192.0 - 172.16.223.255
Network - 172.16.224.0 - 172.16.255.255
<snip>
Network - 172.31.0.0 - 172.31.31.255
Network - 172.31.32.0 - 172.31.63.255
Network - 172.31.64.0 - 172.31.95.255
Network - 172.31.96.0 - 172.31.127.255
Network - 172.31.128.0 - 172.31.159.255
Network - 172.31.160.0 - 172.31.191.255
Network - 172.31.192.0 - 172.31.223.255
Network - 172.31.224.0 - 172.31.255.255
图5:172.16.0.0/12专用地址范围中的128个19位子网的部分列表。
公司随机决定使用172.30.64.0/19子网。 因此,它们的网络规格如下图6所示。
$ sipcalc 172.30.64.0/19
-[ipv4 : 172.30.64.0/19] - 0
[CIDR]
Host address - 172.30.64.0
Host address (decimal) - 2887663616
Host address (hex) - AC1E4000
Network address - 172.30.64.0
Network mask - 255.255.224.0
Network mask (bits) - 19
Network mask (hex) - FFFFE000
Broadcast address - 172.30.95.255
Cisco wildcard - 0.0.31.255
Addresses in network - 8192
Network range - 172.30.64.0 - 172.30.95.255
Usable range - 172.30.64.1 - 172.30.95.254
图6:网络详细信息172.30.64.0/19
当然,这只是专用地址范围内128个中可能的19位子网。 该公司可以选择图5中计算出的任何19位子网,任何一个都可以正常工作。
另一种选择是使用192.168.0.0/16私有地址范围,并选择该范围内可用的19位子网之一。 我将剩下的任务是确定读者在该范围内将有多少个子网以及哪些子网可用。
结论
使用CIDR表示法以及通过CIDR块对先前分配的地址进行重组,以及使用VLSM可提供更多可用的公共IP地址,并在分配公共地址时增加了灵活性。 带有VLSM的CIDR表示法的设计尊重旧的分类网络方案,同时为各种规模的组织内部私有使用提供了更大的灵活性和IP地址可用性。 通过将位添加到网络掩码中,可以在不考虑网络类别的情况下轻松地将私有地址空间以及分配的公共地址空间划分为子网。
当引用有类网络时,可以使用CIDR表示法,但只能用作表示法的缩写。
资源资源
- 无类域间路由 (维基百科)
- 地址空间短缺的规定 (Linux Journal)
- RFC790 A类网络 (IETF)的 历史性分配
- 已分配/ 8个块的网络 列表 (维基百科)
- 专用互联网的RFC1918地址分配 (IETF)
翻译自: https://opensource.com/article/16/12/cidr-network-notation-configuration-linux
cidr 表示法