我了解CIDR是什么,它用于什么,但我仍然无法弄清楚如何计算在我的脑海。 有人可以给一个“傻瓜”types的解释与例子吗?
CIDR(无类域间路由,发音为“kidder”或“cider”) – 添加自己的本地变体到注释!)是一个定义IP地址的networking部分的系统(通常人们认为这是一个子网掩码) 。 它的“无类”的原因是它允许一种方式比其基类更灵活地打破IPnetworking。
当IPnetworking首次被定义时,IP有基于他们的二进制前缀的类:
Class Binary Prefix Range Network Bits A 0* 0.0.0.0-127.255.255.255 8 B 10* 128.0.0.0-191.255.255.255 16 C 110* 192.0.0.0-223.255.255.255 24 D 1110* 224.0.0.0-239.255.255.255 E 1111* 240.0.0.0-255.255.255.255
(请注意,这是将/ 24引用为“C类”的人的来源,尽pipe这不是严格的真实比较,因为C类需要具有特定的前缀)
这些二进制前缀用于路由大量的IP空间块。 这是低效率的,因为它导致将大块分配给不需要它们的组织,并且还因为C类只能以24位增量进行分配,这意味着路由表可能变得非常大,因为多个C类被路由到相同的位置。
CIDR被定义为允许将可变长度的子网掩码(VLSM)应用于networking。 正如名称所适用的,地址组或networking可以被分解成与他们所属的自然“类”没有直接关系的组。
VLSM的基本前提是提供networking中networking位数的计数。 由于IPv4地址是32位整数,所以VLSM将始终在0到32之间(尽pipe我不确定在什么情况下可能有0长度掩码)。
头脑中计算VLSM / CIDR的最简单方法是了解“自然”8位边界:
CIDR Dotted Quad /8 255.0.0.0 /16 255.255.0.0 /24 255.255.255.0 /32 255.255.255.255
(顺便说一句,这是完全合法的,在ACL中相当常见,使用/ 32掩码,这意味着你只能引用一个IP)
一旦你掌握了这些,它是简单的二进制算术上移或下移获取主机的数量。 例如,如果一个/ 24有256个IP(现在让我们离开networking和广播地址,这是一个不同的networking理论问题),增加一个子网(到/ 25)将减less主机空间一个位7),这意味着将有128个IP。
这是最后一个八位字节的表格。 这个表可以被转移到任何八位组,以得到虚拟四分之一equivilent。
CIDR Dotted Quad /24 255.255.255.0 /25 255.255.255.128 /26 255.255.255.192 /27 255.255.255.224 /28 255.255.255.240 /29 255.255.255.248 /30 255.255.255.252 /31 255.255.255.254 /32 255.255.255.255
作为将这些移位到另一个八位字节的例子,/ 18(这是/ 26减8位,所以移位了一个八位字节)将是255.255.192.0。
每个八位字节值8。
所以你可以快速缩小你的子网,然后你只是担心最后的8位。
128, 192, 224, 240, 248, 252, 254, 255 +1 , +2 , +3 , +4 , +5 , +6 , +7 , +8
希望这一点清楚
一天(原文如此)迟到,希望不会有一美元的空头。 CIDR是从最高有效位开始的IPv4掩码(32位)中连续的一个比特的数量。
10000000 00000000 00000000 00000000其中1 =最高有效位
常见的掩码是/ 8,/ 16,/ 24,全部落在8位(八位字节)的边界上。
11111111 00000000 00000000 00000000 = / 8 = 255.0.0.0
11111111 11111111 00000000 00000000 = / 16 = 255.255.0.0
11111111 11111111 11111111 00000000 = / 24 = 255.255.255.0
当它不是八位字节alignment时,并不是很难,但它确实需要一些简单的math和对八位字节的理解。
11111111 11111111 11100000 00000000 = / 19
掩码的前两个八位字节是255.255(/ 16小于/ 19)。 最后一个八位字节是0(/ 19小于/ 24)。 到目前为止我们知道
11111111 11111111 11100000 00000000 = / 19 = 255.255.?.0
当看每个八位字节时,记住它是一个8位的值,0-255。
0 0 0 0 0 0 0 0 1 2 6 3 1 8 4 2 6 8 4 2 1
所以第三个字节(?)11100000是128 + 64 + 32 = 224。这意味着
11111111 11111111 11100000 00000000 = / 19 = 255.255.224.0
手工计算非平凡networking非常容易出错。 尝试使用CIDR计算器 。
相反,我认为完全理解CIDR并且能够在你的大脑中进行计算是很好的…但有时候你想仔细检查你的计算。 我喜欢使用PHP子网计算器 : http : //share-foo.com/SubnetCalc.php
另一个很好的文档,如果你只是想要一个桌面参考,是RFC 1878 – IPv4的可变长度子网表 。