我一直在用这个计算器http://www.subnet-calculator.com/cidr.php,我正在尝试弄清楚如何将两个不同的子网放在一起。
例如,我想让 /27 子网从 1.0.0.1 开始,紧挨着 /25,因此我认为 /25 子网将从 1.0.0.32 开始,因为这是 /27 子网之外的子网。但是,当我尝试这样做时,计算器显示 /25 的范围是 1.0.0.1-1.0.0.127,而不是从 .32 开始。
这是计算器的限制还是您如何将子网彼此相邻?
编辑:我想我的问题是哪些子网可以彼此相邻? 什么决定了这一点?
答案1
您需要区分子网起始地址和子网尺寸。斜线后面的数字是大小(以 32-x 位为单位)。因此,您可以像这样拥有两个 /27 子网
10.0.0.1/27 == 10.0.0.1 -> 10.0.0.30
10.0.0.33/27 == 10.0.0.33 -> 10.0.0.62
但 /27 和 /25 子网以同样的方式意味着从较晚的地址开始 /25
10.0.0.1/27 == 10.0.0.1 -> 10.0.0.30
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254
因为 /25 子网“需要”更多空间。您不能在任意地址启动 /25 子网,只能在正确的边界启动:
10.0.0.1/25 == 10.0.0.1 -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254
但请注意
10.0.0.33/25 == 10.0.0.1 -> 10.0.0.126
因为只是或的10.0.0.33/25
另一种说法。10.0.0.1/25
10.0.0.0/25
您还可以决定用更多的 /27 子网“填充”您的 /27 和 /25 子网之间的空间:
10.0.0.1/27 == 10.0.0.1 -> 10.0.0.30
10.0.0.33/27 == 10.0.0.33 -> 10.0.0.62
10.0.0.65/27 == 10.0.0.65 -> 10.0.0.94
10.0.0.97/27 == 10.0.0.97 -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254
或者使用另一个 /27 和一个 /26:
10.0.0.1/27 == 10.0.0.1 -> 10.0.0.30
10.0.0.33/27 == 10.0.0.33 -> 10.0.0.62
10.0.0.65/26 == 10.0.0.65 -> 10.0.0.126
10.0.0.129/25 == 10.0.0.129 -> 10.0.0.254
答案2
前缀/子网使用二进制逻辑。子网由固定的位和可用于地址的位决定。固定位数是前缀长度或子网掩码。以下是一些 IPv4 示例:
Prefix: 10.0.0.0/8
Prefix length: 8
Subnet mask: 255.0.0.0
Prefix bits: 00001010 00000000 00000000 00000000 = 10.0.0.0
Subnet mask bits: 11111111 00000000 00000000 00000000 = 255.0.0.0
1
子网掩码位中的A表示相应位是固定的,而 a0
表示可以使用该位。前缀长度是设置为 的位数1
,子网掩码是将该二进制数写成 IPv4 地址。
因此在这个例子中你可以使用:
First address in the prefix: 00001010 00000000 00000000 00000000 = 10.0.0.0
Last address in the prefix: 00001010 11111111 11111111 11111111 = 10.255.255.255
另一个具有不同前缀长度的示例:
Prefix: 10.0.0.0/10
Prefix length: 10
Subnet mask: 255.192.0.0
Prefix bits: 00001010 00000000 00000000 00000000 = 10.0.0.0
Subnet mask bits: 11111111 11000000 00000000 00000000 = 255.192.0.0
在此示例中,您可以使用较少的地址:
First address in the prefix: 00001010 00000000 00000000 00000000 = 10.0.0.0
Last address in the prefix: 00001010 00111111 11111111 11111111 = 10.63.255.255
如您所见,子网由固定位的值和数量决定。使用您的示例时,1.0.0.32/25
您会得到:
Prefix: 1.0.0.32/25
Prefix length: 25
Subnet mask: 255.255.255.128
Prefix bits: 00000001 00000000 00000000 00100000 = 10.0.0.32
Subnet mask bits: 11111111 11111111 11111111 10000000 = 255.255.255.128
First address in the prefix: 00000001 00000000 00000000 00000000 = 1.0.0.0
Last address in the prefix: 00000001 00000000 00000000 01111111 = 1.0.0.127
值 32 位于灵活位的中间。查看/25
前缀时,您会得到:
Prefix length: 25
Subnet mask bits: 11111111 11111111 11111111 10000000
1st /25 in 1.0.0.0: 00000001 00000000 00000000 00000000 = 1.0.0.0/25
2nd /25 in 1.0.0.0: 00000001 00000000 00000000 10000000 = 1.0.0.128/25
3rd /25 in 1.0.0.0: 00000001 00000000 00000001 00000000 = 1.0.1.0/25
4th /25 in 1.0.0.0: 00000001 00000000 00000001 10000000 = 1.0.1.128/25
5th /25 in 1.0.0.0: 00000001 00000000 00000010 00000000 = 1.0.2.0/25
Etc.
当查看/27
前缀时,您会得到:
Prefix length: 27
Subnet mask bits: 11111111 11111111 11111111 11100000
1st /25 in 1.0.0.0: 00000001 00000000 00000000 00000000 = 1.0.0.0/27
2nd /25 in 1.0.0.0: 00000001 00000000 00000000 00100000 = 1.0.0.32/27
3rd /25 in 1.0.0.0: 00000001 00000000 00000000 01000000 = 1.0.0.64/27
4th /25 in 1.0.0.0: 00000001 00000000 00000000 01100000 = 1.0.0.96/27
5th /25 in 1.0.0.0: 00000001 00000000 00000000 10000000 = 1.0.0.128/27
Etc.
在 IPv4 子网中,第一个地址(全部为灵活位0
)被保留,称为网络地址。最后一个地址(全部为灵活位1
)是子网广播地址。您不能将它们用于设备上的网络接口。
如果要将多个子网相邻放置,则必须确保它们不重叠。当您没有很多地址空间(如 IPv4)时,让所有子网都适合可能是一个非常困难的过程,并且在更改寻址计划时保持可管理性就更加困难了。这就是 IPv6 如此好用的原因:地址空间充足,子网通常是(/64
可以使用不同的前缀长度,但这会破坏自动配置等某些功能)。
如果你对 IPv6 寻址计划感兴趣,请查看“制定 IPv6 寻址计划”我几年前写的冲浪网(荷兰国家研究和教育网络)。IPv6 中的子网划分方式与 IPv4 完全相同,只是数字大得多,并且以十六进制表示(这比 IPv4 使用的十进制表示法更能反映位!)。前缀长度(具有固定和灵活的位)的工作方式完全相同。一个简短的例子:
Prefix: 2001:0db8:0000:0000:0000:0000:0000:0000/64
Prefix length: 64
Subnet mask: not really used anymore in IPv6, but it would have been:
ffff:ffff:ffff:ffff:0000:0000:0000:0000
Prefix bits: 0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
Subnet mask bits: 1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
First address in the prefix:
0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
Last address in the prefix:
0010 0000 0000 0001 0000 1101 1011 1000 = 2001:0db8
0000 0000 0000 0000 0000 0000 0000 0000 = 0000:0000
1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
1111 1111 1111 1111 1111 1111 1111 1111 = ffff:ffff
So from 2001:0db8:0000:0000:0000:0000:0000:0000
to 2001:0db8:0000:0000:ffff:ffff:ffff:ffff
PS:我在这里故意没有使用推荐/规范的符号。通常,您会压缩地址中的零并写2001:0db8:0000:0000:0000:0000:0000:0000
为2001:db8::
,2001:0db8:0000:0000:0000:0000:0000:0001
写为2001:db8::1
,等等。
答案3
对于 /24,网络的最后一个八位字节(通常保留)是 .0 且仅 .0。
1 subnet
对于 /25,它可能是 .0 或 .128。
2 subnets
对于 /26,它可以是 .0、.64、.128 或 .192。
4 subnets
对于 /27,它可以是 .0、.32、.64、.96、.128、.160、.192 或 .224。
8 subnets
表示 /28、.0、.16、.32、.48、.64、.80、.96、.112、.128、.144、.160、.176、.192、.208、.224 或 .240。
16 subnets
表示 /29、.0、.8、.16、.24、.32、.40、.48、.56、.64、.72、.80、.88、.96、.104、.112、.120、.128、.136、.144、.152、.160、.168、.176、.184、.192、.200、.208、.216、.224、.232、.240 或 .248
32 subnets
/30 前缀通常出现在点对点接口上。
64 subnets
/31 前缀在现实中并不常见,因为它没有常见的可寻址主机,因为它仅跨越 2 个网络号,“网络”和“广播”,没有主机 IP 的空间。
128 subnets
(所有偶数都在 0 到 254 之间)/32 前缀用于指定单个主机的路由。它是最具体的路由,如果存在,则应优先于所有其他不属于 /32 的路由表条目。/32 没有“网络”或“广播”地址。
256 subnets
(在某些实现中 0 和 255 可能不起作用)
答案4
一个简单的理解方法:
在 IPv4 中:
想象一行有 256*256*256*256(或 2^32)个可能的 IP 地址。
[] [] [] [] .................. [] [] []
256*256*256*256 total IP adresses
其子网掩码为 0.0.0.0(或二进制为 0000 0000 0000 0000 0000 0000 0000 0000)
所有未掩码的位均可用于提供该网络中的 IP 地址。
该单个网络中可能的地址是:
0000 0000 0000 0000 0000 0000 0000 0000 0000(<-- NETMASK,这里不屏蔽任何内容...)
0000 0000 0000 0000 0000 0000 0000 0000 0000(IP 0.0.0.0)至
1111 1111 1111 1111 1111 1111 1111 1111(IP 255.255.255.255)
整个网络从 IP 0.0.0.0 开始,直到 IP 255.255.255.255
子网掩码中的每一位将把线路分成两个相等的部分。
子网掩码中的第一位将其分成两个相等的部分,每个部分有 128*256*256*256(或 2^31)个 IP 地址:
[] [] [] .......... [] [] [] | [] [] ........... [] []
128*256*256*256 IP Adresses 128*256*256*256 IP Adr
其子网掩码为 128.0.0.0(或二进制为 1000 0000 0000 0000 0000 0000 0000 0000)
所有未掩码的位均可用于提供该网络中的 IP 地址。
因此您可以有 2 个子网,并且每个子网有 31 位可用 IP 地址。
对于第一个子网(网络掩码后面为“0”)
1000 0000 0000 0000 0000 0000 0000 0000 0000(<-- 网络掩码)
0000 0000 0000 0000 0000 0000 0000 0000 0000(IP 0.0.0.0)至
0111 1111 1111 1111 1111 1111 1111 1111(IP 127.255.255.255)
对于第二个子网(网络掩码后面为“1”)
1000 0000 0000 0000 0000 0000 0000 0000 0000(<-- 网络掩码)
1000 0000 0000 0000 0000 0000 0000 0000 0000(IP 128.0.0.0)至
1111 1111 1111 1111 1111 1111 1111 1111(IP 255.255.255.255)
子网掩码中的下一个附加位将两边分成 2 个相等的部分,每个部分都是 2^30 个 IP 地址
等等...
因此,如果您尝试分配 /3 的子网,则意味着您花费了 3 次迭代进行划分,最终得到 2^3=8 个子网。每个子网只能是整个机器系列的 8 个细分之一。它们不能重叠。每个子网都从前一个子网开始。
[] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... [] | [] ... []
32*256*256*256 or 2^30 IP Adresses each.
子网掩码为 0.0.0.0
因此对于第一个子网(网络掩码后面是“000”)
1110 0000 0000 0000 0000 0000 0000 0000 0000(<-- 网络掩码)
0000 0000 0000 0000 0000 0000 0000 0000 0000(IP 0.0.0.0)至
0001 1111 1111 1111 1111 1111 1111 1111(IP 31.255.255.255)
对于第二个子网(网络掩码后面是“001”)
1110 0000 0000 0000 0000 0000 0000 0000(网络掩码)
0010 0000 0000 0000 0000 0000 0000 0000 (IP 32.0.0.0)至
0011 1111 1111 1111 1111 1111 1111 1111 (IP 63.255.255.255)
...
对于第 7 个子网(网络掩码后面为“110”)
1110 0000 0000 0000 0000 0000 0000 0000(网络掩码)
1100 0000 0000 0000 0000 0000 0000 0000 0000(IP 192.0.0.0)至
1101 1111 1111 1111 1111 1111 1111 1111(IP 223.255.255.255)
对于第 8 个子网(网络掩码后面为“111”)
1110 0000 0000 0000 0000 0000 0000 0000(网络掩码)
1110 0000 0000 0000 0000 0000 0000 0000 0000(IP 224.0.0.0)至
1111 1111 1111 1111 1111 1111 1111 1111(IP 255.255.255.255)
如果继续向网络掩码添加位,则继续划分:/32 子网选出一台机器。
但请记住你不能真正拥有只有机器:
为了使事情正常运作,一些子网的范围被保留:
对于每个子网,“值为 1 的 0 位”和“值为 1 的所有位”通常保留用于广播,因此通常子网中只有 nb_of_possible_adresses_in_the_subnet-2 个 IP 地址可用于实际机器接口。并且最好是网关的接口,该接口在其他网络中有另一个接口,允许您将其用作网关来访问其他网络(以及通过其他网络的网关访问所有内容)