Cidr blocks AWS 解释
Cidr blocks AWS explanation
有人可以准确解释 CIDR 块的工作原理以及它如何转换为 0.0.0.0/32 吗?请使用外行人的术语,或者甚至是与网络无关的事物的类比。似乎找不到适合我的解释。谢谢!!
无类域间路由 (CIDR) 块基本上是一种分配 IP 地址和 IP 路由的方法。当您创建网络或路由 table 时,您需要指定您工作的范围。“0.0.0.0” 表示它将匹配任何 IP 地址。一些 IP 地址是特定的,例如 10.0.0.0,它将匹配任何以 10 开头的 IP 地址。对于任何 IP 地址范围,您可以通过使用后缀(例如您的示例中的 /32)来更具体。这些允许符号指定要从前缀(实际 IP 范围,如 10.0.0.0)使用的位数。它表示子网掩码的位长,如上所示。子网掩码就像绘画时的掩码。你在你不想画的地方放了一个面具。
例如,10.10.0.0/16 在其范围内将有 256 * 256 个 IP 地址。
注意:范围内的某些 IP 地址已保留用于各种用途。根据 AWS VPC 文档,以下是保留的 IP 地址。
- 10.0.0.0: 网络地址。
- 10.0.0.1:AWS 为 VPC 路由器保留。
- 10.0.0.2:由 AWS 保留。 DNS 服务器的 IP 地址始终是 VPC 网络范围的基础加二;但是,我们还保留每个子网范围的基数加二。对于具有多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主 CIDR 中。有关详细信息,请参阅 Amazon DNS 服务器。
- 10.0.0.3:由 AWS 保留以备将来使用。
- 10.0.0.255:网络广播地址。我们不支持在 VPC 中广播,因此我们保留此地址。
希望对您有所帮助!
Classless Inter-Domain 路由 (CIDR) 块用于指定 IP 地址的范围,格式为 IPv4 或 IPv6。为了简单起见,我将以 IPv4 的格式解释其余部分,但它适用于 IPv6。
General format for CIDR Blocks: x.y.z.t/p
x, y, z and t 是从0到255的数字。基本上,每个代表一个8位二进制数。这就是它的范围最大为 255 的原因。这些数字的组合成为一个 IPv4 IP 地址,该地址必须是唯一的才能识别特定实例。
对于 AWS,p 是 16 到 28 之间的一个数字。它表示从给定 IP 地址继承的位数。例如:10.0.0.0/16 表示一个 IP 地址,格式如下: 10.0.x.y 其中 x 和 y 是 0 到 255 之间的任意数字。因此,它实际上表示一个 IP 地址范围,从 10.0 开始。 0.0 到 10.0.255.255.
但是对于每个 CIDR 块,AWS 禁止 5 个可能的 IP 地址。这些是前 4 个可用地址和最后一个可用地址。在这种情况下:
- 10.0.0.0: 网络地址
- 10.0.0.1:为 VPC 路由器预留
- 10.0.0.2: DNS 服务器
- 10.0.0.3:保留供将来使用
- 10.0.255.255:网络广播
查看官方文档here。
其实这也是AWS允许p的数值最大为/28的主要原因之一。因为对于 p=30,将有 4 个可用值,但 AWS 需要 5 个 IP 地址才能使用。在我看来,对于 p=29,他们可能会发现占用 5 个地址来提供 3 个可能的 IP 地址效率低下。
可以使用以下公式计算可能的 IP 地址数:
NumberOfPossibleIPs = 2^(32-p) - 5
以上所有答案都很棒,但缺少一些对于不懂寻址的人来说非常重要的东西。
IP 地址实际上只是一个二进制字符串,分为 4 个“八位字节”。每个八位字节是一个 2^8
块; 00000000
。所以对于一台机器来说,IP 地址看起来像这样(添加了 (.)
以体现人性化):
00000000(.)00000000(.)00000000(.)00000000
当我们谈论 IP 地址上的“掩码”时,它的意思是“不变的位”。块末尾的 /8
或 /255.0.0.0
表示该网络 不允许 使用的位数。
所以,假设我们有一个 10.0.0.0/8
的 CIDR 块 - 这也可以写成 10.0.0.0/255.0.0.0
格式,实际上你可能会在旧版本的 linux。您还会注意到 255
是二进制字符串 11111111
- 8
二进制“ones”的十进制表示。所以机器看到的是以下内容:
Net: 00001010(.)00000000(.)00000000(.)00000000
Mask: 11111111(.)00000000(.)00000000(.)00000000
掩码中带 0 的部分是网络中的可用地址 space。
因此以下示例地址在此网络中有效,因为屏蔽范围的 0
部分正在发生变化:
00001010(.)00000001(.)00110000(.)00111000
00001010(.)00110001(.)00110100(.)00111001
当我们说“cidr 块”时,我们只是指“机器理解的人类可读 shorthand 表达二进制字符串的方式”。在上面的例子中,第一个八位字节可以表示为10
,后面的八位字节可以表示为0
。而Mask可以表示为255
和0
后面的八位字节,或者;因为掩码是总是一个1的序列,然后是一个0的序列,1的长度,即8
因此,我们得到 10.0.0.0/255.0.0.0
或 10.0.0.0/8
的 cidr
再举几个例子:
-- 172.1.1.0/24
net: 10101100.00000001.00000001.00000000
mask: 11111111.11111111.11111111.00000000
^ 24 bits for the mask ^ 8 bits of usable space
-- 10.10.10.8/29
net: 00001010.00001010.00001010.00001000
mask: 11111111.11111111.11111111.11111000
^ 29 bits for the mask. ^ 3 bits of usable space
重要的是,这只是网络的一个方面。通常其中一些是为事物保留的。查看 AWS 特定内容的其他答案。在他们的示例中,为 AWS 保留的“前 4 个”IP 地址将是前 4 个可用地址,即
...00 - Network address
...01 - Router
...10 - DNS
...11 - Futureproofing
有人可以准确解释 CIDR 块的工作原理以及它如何转换为 0.0.0.0/32 吗?请使用外行人的术语,或者甚至是与网络无关的事物的类比。似乎找不到适合我的解释。谢谢!!
无类域间路由 (CIDR) 块基本上是一种分配 IP 地址和 IP 路由的方法。当您创建网络或路由 table 时,您需要指定您工作的范围。“0.0.0.0” 表示它将匹配任何 IP 地址。一些 IP 地址是特定的,例如 10.0.0.0,它将匹配任何以 10 开头的 IP 地址。对于任何 IP 地址范围,您可以通过使用后缀(例如您的示例中的 /32)来更具体。这些允许符号指定要从前缀(实际 IP 范围,如 10.0.0.0)使用的位数。它表示子网掩码的位长,如上所示。子网掩码就像绘画时的掩码。你在你不想画的地方放了一个面具。
例如,10.10.0.0/16 在其范围内将有 256 * 256 个 IP 地址。
注意:范围内的某些 IP 地址已保留用于各种用途。根据 AWS VPC 文档,以下是保留的 IP 地址。
- 10.0.0.0: 网络地址。
- 10.0.0.1:AWS 为 VPC 路由器保留。
- 10.0.0.2:由 AWS 保留。 DNS 服务器的 IP 地址始终是 VPC 网络范围的基础加二;但是,我们还保留每个子网范围的基数加二。对于具有多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主 CIDR 中。有关详细信息,请参阅 Amazon DNS 服务器。
- 10.0.0.3:由 AWS 保留以备将来使用。
- 10.0.0.255:网络广播地址。我们不支持在 VPC 中广播,因此我们保留此地址。
希望对您有所帮助!
Classless Inter-Domain 路由 (CIDR) 块用于指定 IP 地址的范围,格式为 IPv4 或 IPv6。为了简单起见,我将以 IPv4 的格式解释其余部分,但它适用于 IPv6。
General format for CIDR Blocks: x.y.z.t/p
x, y, z and t 是从0到255的数字。基本上,每个代表一个8位二进制数。这就是它的范围最大为 255 的原因。这些数字的组合成为一个 IPv4 IP 地址,该地址必须是唯一的才能识别特定实例。
对于 AWS,p 是 16 到 28 之间的一个数字。它表示从给定 IP 地址继承的位数。例如:10.0.0.0/16 表示一个 IP 地址,格式如下: 10.0.x.y 其中 x 和 y 是 0 到 255 之间的任意数字。因此,它实际上表示一个 IP 地址范围,从 10.0 开始。 0.0 到 10.0.255.255.
但是对于每个 CIDR 块,AWS 禁止 5 个可能的 IP 地址。这些是前 4 个可用地址和最后一个可用地址。在这种情况下:
- 10.0.0.0: 网络地址
- 10.0.0.1:为 VPC 路由器预留
- 10.0.0.2: DNS 服务器
- 10.0.0.3:保留供将来使用
- 10.0.255.255:网络广播
查看官方文档here。
其实这也是AWS允许p的数值最大为/28的主要原因之一。因为对于 p=30,将有 4 个可用值,但 AWS 需要 5 个 IP 地址才能使用。在我看来,对于 p=29,他们可能会发现占用 5 个地址来提供 3 个可能的 IP 地址效率低下。
可以使用以下公式计算可能的 IP 地址数:
NumberOfPossibleIPs = 2^(32-p) - 5
以上所有答案都很棒,但缺少一些对于不懂寻址的人来说非常重要的东西。
IP 地址实际上只是一个二进制字符串,分为 4 个“八位字节”。每个八位字节是一个 2^8
块; 00000000
。所以对于一台机器来说,IP 地址看起来像这样(添加了 (.)
以体现人性化):
00000000(.)00000000(.)00000000(.)00000000
当我们谈论 IP 地址上的“掩码”时,它的意思是“不变的位”。块末尾的 /8
或 /255.0.0.0
表示该网络 不允许 使用的位数。
所以,假设我们有一个 10.0.0.0/8
的 CIDR 块 - 这也可以写成 10.0.0.0/255.0.0.0
格式,实际上你可能会在旧版本的 linux。您还会注意到 255
是二进制字符串 11111111
- 8
二进制“ones”的十进制表示。所以机器看到的是以下内容:
Net: 00001010(.)00000000(.)00000000(.)00000000
Mask: 11111111(.)00000000(.)00000000(.)00000000
掩码中带 0 的部分是网络中的可用地址 space。
因此以下示例地址在此网络中有效,因为屏蔽范围的 0
部分正在发生变化:
00001010(.)00000001(.)00110000(.)00111000
00001010(.)00110001(.)00110100(.)00111001
当我们说“cidr 块”时,我们只是指“机器理解的人类可读 shorthand 表达二进制字符串的方式”。在上面的例子中,第一个八位字节可以表示为10
,后面的八位字节可以表示为0
。而Mask可以表示为255
和0
后面的八位字节,或者;因为掩码是总是一个1的序列,然后是一个0的序列,1的长度,即8
因此,我们得到 10.0.0.0/255.0.0.0
或 10.0.0.0/8
再举几个例子:
-- 172.1.1.0/24
net: 10101100.00000001.00000001.00000000
mask: 11111111.11111111.11111111.00000000
^ 24 bits for the mask ^ 8 bits of usable space
-- 10.10.10.8/29
net: 00001010.00001010.00001010.00001000
mask: 11111111.11111111.11111111.11111000
^ 29 bits for the mask. ^ 3 bits of usable space
重要的是,这只是网络的一个方面。通常其中一些是为事物保留的。查看 AWS 特定内容的其他答案。在他们的示例中,为 AWS 保留的“前 4 个”IP 地址将是前 4 个可用地址,即
...00 - Network address
...01 - Router
...10 - DNS
...11 - Futureproofing