傻瓜的 CIDR

Bob*_*Bob 47 networking subnet cidr

我了解 CIDR 是什么,以及它的用途,但我仍然无法弄清楚如何在脑海中计算它。有人可以用例子给出“傻瓜”类型的解释吗?

jj3*_*j33 80

CIDR(无类别域间路由,发音为“kidder”或“cider” - 在评论中添加您自己的本地变体!)是一个定义 IP 地址的网络部分的系统(通常人们认为这是一个子网掩码) . 它是“无类”的原因是它允许一种比基类更灵活地分解 IP 网络的方法。

首次定义 IP 网络时,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
Run Code Online (Sandbox Code Playgroud)

(请注意,这是人们将 /24 称为“C 类”的来源,尽管这不是严格意义上的真实比较,因为 C 类需要具有特定前缀)

这些二进制前缀用于路由大块 IP 空间。这是低效的,因为它导致将大块分配给不一定需要它们的组织,还因为 C 类只能以 24 位增量分配,这意味着路由表可能会变得不必要地大,因为多个 C 类被路由到相同的位置。

CIDR 被定义为允许将可变长度子网掩码 (VLSM) 应用于网络。顾名思义,地址组或网络可以分解为与它们所属的自然“类”没有直接关系的组。

VLSM 的基本前提是提供网络中网络位数的计数。由于 IPv4 地址是 32 位整数,因此 VLSM 将始终介于 0 和 32 之间(尽管我不确定在什么情况下您可能有一个 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
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,使用 /32 掩码是完全合法的,并且在 ACL 中相当普遍。这只是意味着您指的是单个 IP)

一旦掌握了这些,就可以通过简单的二进制算术向上或向下移动以获取主机数量。例如,如果 /24 有 256 个 IP(让我们暂时离开网络和广播地址,这是一个不同的网络理论问题),将子网增加一位(到 /25)将减少一位主机空间(到7),意味着会有128个IP。

这是最后一个八位字节的表格。该表可以移动到任何八位位组以获得等效的虚线四位组。

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
Run Code Online (Sandbox Code Playgroud)

作为将这些转移到另一个八位字节的示例,/18(即 /26 减去 8 位,因此移动了一个八位字节)将是 255.255.192.0。

  • 奇怪,我通常听到它发音为“苹果酒” (2认同)
  • 如果可以的话,我会给这个+10。这是对 CIDR/VLSM 的一个很好的解释。 (2认同)

scl*_*son 9

每个八位字节值 8。

  • 255.0.0.0 /8
  • 255.255.0.0 /16
  • 255.255.255.0 /24
  • 255.255.255.255 /32

因此,您可以快速缩小子网范围,然后您只需担心最后 8 位。

128, 192, 224, 240, 248, 252, 254, 255

+1  , +2 , +3 , +4 , +5 , +6 , +7 , +8
Run Code Online (Sandbox Code Playgroud)
  • 255.128.0.0 = /9
  • 255.192.0.0 = /10
  • 255.224.0.0 = /11
  • 255.240.0.0 = /12
  • 255.248.0.0 = /13
  • 255.252.0.0 = /14
  • 255.254.0.0 = /15

希望够清楚


dba*_*ett 7

晚了一天(原文如此),希望不会短一美元。CIDR 是 IPv4 掩码(32 位)中从最高有效位开始的连续 1 位的数量。

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

当它不是八位字节对齐时,这并不难,但它确实需要一些简单的数学运算和对八位字节是什么的理解。

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
Run Code Online (Sandbox Code Playgroud)

所以第三个八位字节 (?) 11100000 是 128 + 64 + 32 = 224。这意味着

11111111 11111111 11100000 00000000 = /19 = 255.255.224.0