![掩码为 0.0.0.0](https://linux22.com/image/1355526/%E6%8E%A9%E7%A0%81%E4%B8%BA%200.0.0.0%20.png)
以下是我上周考试时提出的一个问题:
“您有两个主机,其 IP 地址分别为 152.46.69.12 和 152.46.69.105,掩码均设置为 255.255.255.0。掩码必须如何更改才能强制从主机 152.46.69.12 执行 ping 操作以穿过路由器到达主机 152.46.69.105。”
现在,您可以将掩码设置为 255.255.255.192 以确保它以这种方式工作,但我还有其他几个问题:
1) 我们可以将掩码设置为 0.0.0.0 以使其按问题要求工作吗?您能解释一下您的理由吗?2) 我们可以将掩码设置为 255.255.255.64 以使其按问题要求工作吗?是否有可能将掩码中的高位之一设置为 0,将掩码中的低位设置为 1。
我浏览了各种论坛,但没有一个能针对我的问题给出具体的答案。
我对网络很陌生,正在学习网络基础知识。任何答案都非常感谢。谢谢。
答案1
子网掩码是一种“掩码”,用于将 IP 地址的网络部分与主机部分分开。这是一个二进制掩码操作,因此子网掩码只能有特定的值。
仅考虑一个八位字节作为示例。IP 地址有 8 位,而不是 IPv4 地址空间中的 32 位(4 个八位字节 * 8 位/八位字节 = 32 位)。您如何告诉系统地址的哪一部分是本地有效的?以下是选择:
子网 子网数目的二进制数 长度掩码值子网 IP/子网边界 ------ ------ -------- --------- ----------- ---------- 0 0 00000000 1 (2^0) 256 (2^8) 无(整个子网都是本地的) 1 128 10000000 2 (2^1) 128 (2^7) 128 的每个倍数(0-127、128-255) 2 192 11000000 4 (2^2) 64 (2^6) 64 的每个倍数(0-63、64-127 等) 3 224 11100000 8 (2^3) 32 (2^5) 32 的每个倍数(0-31、32-63 等) 4 240 11110000 16 (2^4) 16 (2^4) 16 的每个倍数(0-15、16-31 等) 5 248 11111000 32 (2^5) 8 (2^3) 8 的每个倍数(0-7、8-15 等) 6 252 11111100 64 (2^6) 4 (2^2) 4 的每个倍数(0-3、4-7 等) 7 254 11111110 128 (2^7) 2 (2^1) 2 的每个倍数(0-1、2-3 等) 8 255 11111111 256 (2^8) 1 (2^0) 全部(每个主机都是自己的子网)
实际上,每个子网会丢失两个 IP,因为第一个 IP 被视为“网络”地址,最后一个 IP 被视为“广播”地址。这意味着您永远无法将流量路由到 .254 子网掩码网络,因为它只有两个可能的地址,并且都已保留(网关地址和主机没有额外空间)。最小的可能路由子网是使用 .252 子网掩码,因为这为网络、网关、主机和广播地址提供了足够的空间。
在您的示例中,您希望将 .12 和 .105 之间的网络分开。您不能使用 .0 子网掩码,因为这意味着它们位于同一子网中。您不能使用 .128 子网掩码,因为 .12 和 .105 都在 .0-127 子网范围内。您能使用 .192 子网掩码,因为 .12 位于 .0-63 子网中,而 .105 位于 .64-127 子网中。
您可以使用 .224 子网掩码,因为 .12 位于 .0-31 子网中,而 .105 位于 .96-127 子网中。您可以使用 .240 子网掩码,因为 .12 位于 .0-15 子网中,而 .105 位于 .96-111 子网中。您可以使用 .248 子网掩码,因为 .12 位于 .8-15 子网中,而 .105 位于 .104-111 子网中。
你不能使用 .252 子网掩码,因为 .12 位于 .12-15 子网的“网络”地址部分。您不能使用 .254 或 .255 子网,因为 .252 是可能的最小路由子网。
作为附带练习,如果您想计算两个主机之间最大的子网,请比较它们的二进制值的相似程度,然后就可以得到答案。在您的示例中,让我们从最左边的位开始查看您的 IP 地址的二进制相似性,然后向右移动,直到找到差异:
152.46.69.12 10011000.00101110.01000101.00001100 152.46.69.105 10011000.00101110.01000101.01101001 ........ ........ .xxxxxxx 子网长度:8 +8 +8 +1 = /25 子网掩码:255.255.255.128 = 255.255.255.128
从左到右计算相似的位,这表明最大可能的子网长度为 25 位。以子网掩码表示法表示为 255.255.255.128(CIDR 表示法中的 /25)。任何更大的子网掩码(255.255.255.192 或 /26)都将分隔这些主机。
答案2
否 - 0.0.0.0 相当于 /0,表示一切都是本地的,没有任何东西通过路由器。
再次,不 - 网络掩码以从高到低的连续块形式工作,在大多数系统上,以“间隙”设置较低位很可能被视为非法而被拒绝,并且在其他系统上不起作用。
答案3
问题 2 回答,我现在处于高级网络阶段。使用 CIDR 表示法时,不能将高位设置为 0,将低位设置为 1。没有正确的方法以这种方式表示 CIDR 表示法。
它的工作原理是这样的,
n = 网络位 H = 主机位
假设你正在使用/26,它看起来像这样
nnnnnnnn.nnnnnnnn.nnnnnnnn.nnHHHHHH
最后一个八位字节为 192, 128+64
如果设置为 /27,则必须这样写
nnnnnnnn.nnnnnnnn.nnnnnnnn.nnnHHHHH
最后一个八位字节为 224、128+64+32
在 CIDR 表示法中,您必须从左向右移动。