例子。
IP:128.42.5.4
二进制:10000000 00101010 00000101 00000100
子网:255.255.248.0
你怎么能确定前缀、网络、子网和主机号码?
将网络掩码的点-十进制表示法转换成二进制。 然后,计算连续的1位数,从第一个八位数中最有意义的一位开始(即二进制数字的左边)。
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
-----------------------------------
I counted twenty-one 1s -------> /21
128.42.5.4的前缀与255.255.248.0的网络掩码是/21。
网络地址是IP地址和网络掩码的二进制表示法中各自位的逻辑和。 将两个地址中的位对齐,并对各自的位中的每一对进行逻辑和。 然后将结果中的各个八位数转换为十进制。
逻辑与真值表。
逻辑与]1 !
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
----------------------------------- [Logical AND]
10000000 00101010 00000000 00000000 ------> 128.42.0.0
你可以看到,128.42.5.4/21的网络地址是128.42.0.0
广播地址将所有主机位转换为1......
请记住,我们的IP地址在十进制中是。
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
网络掩码是。
255.255.248.0 in binary: 11111111 11111111 11111000 00000000
这意味着我们的主机位是IP地址的最后11位,因为我们通过倒置网络掩码找到主机掩码。
Host bit mask : 00000000 00000000 00000hhh hhhhhhhh
为了计算广播地址,我们强制所有主机位为1。
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
Host bit mask : 00000000 00000000 00000hhh hhhhhhhh
----------------------------------- [Force host bits]
10000000 00101010 00000111 11111111 ----> 128.42.7.255
你没有提供足够的信息来计算这个网络的子网;一般来说,你通过重新分配一些主机位作为每个子网的网络位来建立子网。 很多时候,对一个区块进行子网的方法并不是唯一正确的......根据你的约束条件,对一个地址区块进行子网可能有几种有效的方法。
让我们假设我们将128.42.0.0/21分成4个子网,每个子网必须容纳至少100个主机......
在这个例子中,我们知道你至少需要一个/25的前缀才能包含100个主机;我选择了一个/24,因为它落在一个八位数的边界上。 注意,每个子网的网络地址都从父网络块中借用了主机位。
我怎么知道100个主机至少需要一个/25的掩码长度? 通过回溯到包含100个主机所需的主机位数量来计算前缀。 一个人需要7个主机位来包含100个主机。 正式的计算方法是:。
主机位 = Log2(Number-of-hosts) = Log2 (100) = 6.643
由于IPv4地址是32位宽,而我们使用的是主机位(即最小有效位),只需从32中减去7即可计算出每个子网的最小子网前缀......32 - 7 = 25.
由于我们只想从整个128.42.0.0/21块中得到四个子网,我们可以使用/23子网。 我选择/23是因为我们需要4个子网......也就是说,在网络掩码上多加两个比特。
这是一个同样有效的约束答案,使用128.42.0.0/21的/23子网......
这就是我们在上面已经做过的......只是重新使用我们在计算广播地址128.42.5.4/21时做的工作中的主机掩码......。 这一次我将使用1s而不是h
,因为我们需要再次对网络地址进行逻辑和。
128.42.5.4 in binary: 10000000 00101010 00000101 00000100
Host bit mask : 00000000 00000000 00000111 11111111
----------------------------------- [Logical AND]
00000000 00000000 00000101 00000100 -----> 0.0.5.4
要找到最大的主机数,要看上面的主机号码中的二进制位数。 最简单的方法是用32(IPv4地址的位数)减去网络掩码的长度。 这就给你地址中的主机位数。 在这一点上...
最大的主机数 = 2**(32 - netmask_length) - 2
我们在上面减去2的原因是,all-ones和all-zeros的主机号码是保留的。 all-zeros主机号是网络号;all-ones主机号是广播地址。
使用上面128.42.0.0/21的子网例子,主机的数量是...
最大的主机数=2**(32-21)-2=2048-2=2046
假设有人给了我们两个IP地址,并希望我们找到包含这两个地址的最长的网络掩码;例如,如果我们有。
最简单的做法是将这两个地址转换为二进制,并从地址的左侧寻找最长的网络位串。
128.42.5.17 in binary: 10000000 00101010 00000101 00010001
128.42.5.67 in binary: 10000000 00101010 00000101 01000011
^ ^ ^
| | |
+--------- Network ---------+Host-+
(All bits are the same) Bits
在这种情况下,最大的网络掩码(最小的主机掩码)将是/25
注意:如果你尝试从右手边开始,不要因为找到一列匹配的比特就被骗了;在这些匹配的比特之外,可能还有不匹配的比特。 老实说,最安全的做法是从左边开始。
上面的答案完美地击中了要害。然而,当我刚开始的时候,我从几个不同的来源举了几个不同的例子,才真正打动了我。因此,如果你对其他例子感兴趣,我就这个问题写了几篇博文--http://www.oznetnerd.com/category/subnetting/。
管理员,如果这个帖子被认为是垃圾邮件,请随时删除。
编辑:根据YLearn的建议,我将尝试从我的系列文章的第一部分中抓取相关部分,而不在这里粘贴整个条目。
我们以195.70.16.159/30为例。
由于它是一个/30,我们知道主机部分将在第四个八位字节中。让我们把它转换为二进制。
128 64 32 16 8 4 2 1
SN SN SN SN SN SN H H
1 0 0 1 1 1 1 1
现在要找出网络地址,我们要做的就是把SN位下面的1加在一起。(128 + 16 + 8 + 4 = 156).
当你把这个156加到地址的前三个八位数时,我们就会得到网络地址195.70.16.156。
现在,由于我们知道第一个可用的地址总是网络地址加1,我们需要做的就是进行以下计算。(156 + 1 = 157).
这就给了我们一个的第一个可用地址为195.70.16.157。
现在,让我们暂时跳过最后可用的地址,找到广播地址。要知道它是什么,我们需要做的就是把所有的H位加在一起(不管它们是1还是0),然后把这个数字加到网络地址上。(2 + 1 + 156 = 159).
这就给了我们一个广播地址:195.70.16.159。
最后,让我们算出最后一个可用的地址。这个过程类似于寻找第一个可用地址,然而,我们不是在网络地址上加一,而是从广播地址上减一。(159 - 1 = 158).
这就给了我们一个最后的可用地址,即195.70.16.158。
就这样,我们拥有了它!我们的模板已经完成。为了便于参考,在这里再次说明。
作为一种捷径,你也可以使用这个公式。它适用于任何规模的子网。
例子。
IP:128.42.5.4
二进制:10000000 00101010 00000101 00000100
子网:255.255.248.0
你怎么能确定前缀、网络、子网和主机号码?
32768 16384 8192 4096 2048 1024 512 256 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/17 /18 /19 /20 /21 /22 /23 /24 ----> CIDR
32766 16382 8190 3094 2046 1022 510 254 ----> Host
128 64 32 16 8 4 2 1 ----> Binary
128 192 224 240 248 252 254 255 ----> Sunet Mask
/25 /26 /27 /28 /29 /30 /31 /32 ----> CIDR
126 62 30 14 6 2 * - ----> Host
128 64 32 16 8 4 2 1
10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001
Example
Network=192.168.1.0 /24;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.0
Ip address range 192.168.1.0----192.168.1.255
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.254;
Broadcast address = 192.168.1.255;
254 Host
Network=192.168.1.0 /25;
Network Address with Subnet mask = 192.168.1.0 subnet 255.255.255.128
Ip address range 192.168.1.0----192.168.1.128
Fist available ip address 192.168.1.1;
Last available ip address 192.168.1.126;
Broadcast address = 192.168.1.127;
126 Hosts
When the CIDR increased ex. /24. /25. the network will divided by the
binary number.
/25 increase network 0-128| 128- 256 | you will have 2 Networks
/26 increase network 0-64 | 64 - 128 | 128-192 | 192-256 you will have 4 Networks
.
.
.
/32......