例子:
IP:128.42.5.4
二进制:10000000 00101010 00000101 00000100
子网:255.255.248.0
您如何确定前缀、网络、子网和主机号?
例子:
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
带有 255.255.248.0 网络掩码的 128.42.5.4 的前缀是 /21。
网络地址是 IP 地址和网络掩码的二进制表示中各个位的逻辑与。对齐两个地址中的位,并对每对相应位执行逻辑与。然后将结果的各个八位字节转换回十进制。
逻辑与真值表:
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 个主机。官方计算如下:
主机位= Log 2(主机数)= Log 2 (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 的原因是因为保留了全 1 和全零主机号。全零主机号是网络号;全为一的主机号是广播地址。
使用上面 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 的建议,我将尝试从我的系列的第 1 部分中获取相关部分,而不在此处粘贴整个条目。
我们以 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
现在要找出网络地址,我们所做的就是将下面有 1 的 SN 位加在一起。(128 + 16 + 8 + 4 = 156)。
当您将此 156 添加到地址的前三个八位字节时,我们将得到网络地址195.70.16.156。
现在,我们知道第一个可用地址总是网络地址加一,我们需要做的就是执行以下计算:(156 + 1 = 157)。
这为我们提供了第一个可用地址195.70.16.157。
现在让我们暂时跳过 Last Usable Address 并找到 Broadcast Address。要找出它是什么,我们需要做的就是将所有 H 位加在一起(无论它们是 1 还是 0),然后将此数字添加到网络地址。(2 + 1 + 156 = 159)。
这给了我们一个广播地址195.70.16.159。
最后,让我们计算出最后一个可用地址。这个过程类似于找到第一个可用地址,但是,我们实际上不是在网络地址上加一个,而是从广播地址中减去一个。(159 - 1 = 158)。
这给了我们一个最后可用地址195.70.16.158。
我们终于得到它了!我们的模板是完整的。为了方便参考,这里又是:
作为捷径,您也可以使用此公式。它适用于任何大小的子网:
使用 IPv4 地址和网络掩码、网络掩码长度或主机掩码,您可以计算网络地址、广播地址、总地址、可用地址、第一个可用地址和最后一个可用地址。
必须以二进制形式进行 IPv4 数学运算再怎么强调都不为过。每个网络工程师都试图找出一种方法以十进制完成所有操作,正如您将要做到的那样*。问题是10
(decimal) 不是2
(binary) 的幂,因此十进制和二进制不容易相互转换,就像十六进制 (base 16
) 轻松转换为二进制一样,因为16
它是2
. IPv4 使用点分十进制表示法是一个早期的错误,现在无法纠正,但 IPv6 从一开始就采用了十六进制,并且很容易在十六进制和二进制之间进行转换。
如果您没有 IP 计算器(在网络课程或认证考试中不允许使用),请制作一个八位字节中位值的图表。在二进制中,每个位值2
乘以下一个较低有效数字中的相同数字值。每个数字是数字基数乘以下一个较低有效数字中的相同数字值。这也适用于所有数字基数,包括十进制,其中每个数字值是10
下一个较低有效数字中相同数字值的值的倍数。其中十进制是 的幂10
,二进制是 的幂2
。请注意,对于表中的每个位数,对应的值是2
位数的幂。
+-------------------------------------------------------+
¦ BIT # ¦ 7 ¦ 6 ¦ 5 ¦ 4 ¦ 3 ¦ 2 ¦ 1 ¦ 0 ¦
¦-------+-----+-----+-----+-----+-----+-----+-----+-----¦
¦ VALUE ¦ 128 ¦ 64 ¦ 32 ¦ 16 ¦ 8 ¦ 4 ¦ 2 ¦ 1 ¦
+-------------------------------------------------------+
点分十进制地址198.51.100.223
+------------------------------------------------------------------------+
¦ OCTET ¦ DEC ¦ 128 ¦ 64 ¦ 32 ¦ 16 ¦ 8 ¦ 4 ¦ 2 ¦ 1 ¦ BINARY ¦
¦-------+-----+-----+-----+-----+-----+-----+-----+-----+-----+----------¦
¦ 1 ¦ 198 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 11000110 ¦
¦ 2 ¦ 51 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 1 ¦ 00110011 ¦
¦ 3 ¦ 100 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ 0 ¦ 1 ¦ 0 ¦ 0 ¦ 01100100 ¦
¦ 4 ¦ 223 ¦ 1 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦ 1 ¦ 11011111 ¦
+------------------------------------------------------------------------+
二进制地址11000110001100110110010011011111
+------------------------------------------------------------------------+
¦ OCTET ¦ BINARY ¦ 7 ¦ 6 ¦ 5 ¦ 4 ¦ 3 ¦ 2 ¦ 1 ¦ 0 ¦ DEC ¦
¦-------+----------+-----+-----+-----+-----+-----+-----+-----+-----+-----¦
¦ 1 ¦ 11000110 ¦ 128 ¦ 64 ¦ 0 ¦ 0 ¦ 0 ¦ 4 ¦ 2 ¦ 0 ¦ 198 ¦
¦ 2 ¦ 00110011 ¦ 0 ¦ 0 ¦ 32 ¦ 16 ¦ 0 ¦ 0 ¦ 2 ¦ 1 ¦ 51 ¦
¦ 3 ¦ 01100100 ¦ 0 ¦ 64 ¦ 32 ¦ 0 ¦ 0 ¦ 4 ¦ 0 ¦ 0 ¦ 100 ¦
¦ 4 ¦ 11011111 ¦ 128 ¦ 64 ¦ 0 ¦ 16 ¦ 8 ¦ 4 ¦ 2 ¦ 1 ¦ 223 ¦
+------------------------------------------------------------------------+
记住学校的真值表(在二进制数学中,0
是假的,1
是真的)。
+--------+ +--------+
¦ RESULT ¦ ¦ RESULT ¦
+---------------------+--------¦ +-------------+--------¦
¦ False ¦ AND ¦ False ¦ FALSE ¦ ¦ 0 ¦ AND ¦ 0 ¦ 0 ¦
¦ False ¦ AND ¦ True ¦ FALSE ¦ ¦ 0 ¦ AND ¦ 1 ¦ 0 ¦
¦ True ¦ AND ¦ False ¦ FALSE ¦ ¦ 1 ¦ AND ¦ 0 ¦ 0 ¦
¦ True ¦ AND ¦ True ¦ TRUE ¦ ¦ 1 ¦ AND ¦ 1 ¦ 1 ¦
+------------------------------+ +----------------------+
+--------+ +--------+
¦ RESULT ¦ ¦ RESULT ¦
+---------------------+--------¦ +-------------+--------¦
¦ False ¦ OR ¦ False ¦ FALSE ¦ ¦ 0 ¦ OR ¦ 0 ¦ 0 ¦
¦ False ¦ OR ¦ True ¦ TRUE ¦ ¦ 0 ¦ OR ¦ 1 ¦ 1 ¦
¦ True ¦ OR ¦ False ¦ TRUE ¦ ¦ 1 ¦ OR ¦ 0 ¦ 1 ¦
¦ True ¦ OR ¦ True ¦ TRUE ¦ ¦ 1 ¦ OR ¦ 1 ¦ 1 ¦
+------------------------------+ +----------------------+
+--------+ +--------+
¦ RESULT ¦ ¦ RESULT ¦
+-------------+--------¦ +---------+--------¦
¦ NOT ¦ False ¦ TRUE ¦ ¦ NOT ¦ 0 ¦ 1 ¦
¦ NOT ¦ True ¦ FALSE ¦ ¦ NOT ¦ 1 ¦ 0 ¦
+----------------------+ +------------------+
*如果您执行 IPv4 数学多年,您可能会在头脑中执行十进制/二进制转换,并且您似乎能够以十进制进行 IPv4 数学。即使您可以在脑海中做到这一点,在对生产网络进行更改之前,请务必使用 IP 计算器仔细检查,或转换为二进制并执行数学运算。
IPv4 点分十进制表示法,例如 ,198.51.100.223
只是为了让人们更容易阅读地址。这四个独立的部分,称为八位字节,对 IPv4 没有任何意义。不要犯认为八位字节有特殊含义的常见错误。地址实际上是一个 32 位二进制数,这就是网络设备查看和使用 IPv4 地址的方式。
示例点分十进制地址 ,对于网络上的设备198.51.100.223
来说是二进制11000110001100110110010011011111
的。您可以看到,点分十进制表示确实确实使人类更容易。每个八位字节是 32 位地址的八位(因此常用术语“八位字节”),因此有四个八位字节 ( 32 address bits / 8 bits per octet = 4 octets
)。示例 32 位二进制地址分为四个八位字节,然后将每个二进制八位字节转换为十进制数*。
二进制地址:11000110001100110110010011011111
+-----------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦---------+----------+----------+----------+----------¦
¦ BINARY ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ DECIMAL ¦ 198 ¦ 51 ¦ 100 ¦ 223 ¦
+-----------------------------------------------------+
因为每个八位字节的长度为 8 位,所以每个八位字节都有一个介于0
和之间的值255
(任何大于的值255
都是无效的)。原因是:(二进制数基数)的(每八位字节八位)的幂等于八位八位字节可以表示的不同值的数量。请记住,第一个值是,因此第 256个值将比可以表示的值的总数少一个 ( )。2
8
= 256
2
8
256
0
256 – 1 = 255
要正确执行 IPv4 数学运算,您必须以二进制形式执行,否则您会犯错误,从而导致问题和挫败感。这意味着您必须在尝试操作之前将点分十进制表示法转换为二进制。
点分十进制:198.51.100.223
+-----------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦---------+----------+----------+----------+----------¦
¦ DECIMAL ¦ 198 ¦ 51 ¦ 100 ¦ 223 ¦
¦ BINARY ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
+-----------------------------------------------------+
*点分十进制 IPv4 地址中的前导零可能会被某些应用程序和编程语言解释为八进制 (base 8
) 而不是十进制 (base 10
),从而导致错误,对于点分十进制 IPv4 表示应避免前导零,但前导零对于二进制地址八位位组是必需的,因为它们代表完整地址中的位位置,而省略位位置会缩短地址并更改二进制值。
网络掩码用于将地址分为两部分:网络和主机。因为 IPv4 地址的长度是固定的 32 位,所以更大的网络意味着更小的主机,反之亦然。除法可以是任何位数,因此它可能落在一个八位字节内,而不是八位字节边界上(许多人错误地认为它总是如此)。网络掩码与地址(位)的大小相同32
,它以点分十进制表示法表示,与您以点分十进制表示法表示地址的方式相同(四个 8 位八位字节,由句点分隔)。例如,255.255.248.0
。
网络掩码由连续1
位(表示网络)、0
位数(表示主机)到总32
位(地址长度)组成。位数1
加上0
总32
位数,IPv4 地址或网络掩码中的位数。例如,网络掩码255.255.248.0
.
+--------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦---------+----------+----------+-------------+----------¦
¦ DECIMAL ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
¦---------+----------+----------+-------------+----------¦
¦ BINARY ¦ 11111111 ¦ 11111111 ¦ 11111 ¦ 000 ¦ 00000000 ¦
¦---------+-----------------------------+----------------¦
¦ # BITS ¦ 21 Network ¦ 11 Host ¦
+--------------------------------------------------------+
如您所见,使用此掩码的地址的网络和主机之间的划分属于八位字节,而不是八位字节边界。
网络掩码通常由掩码中的连续1
位数表示。这被称为网络掩码长度或前缀长度,它表示为 a/
后跟1
网络掩码中的连续位数。1
计算示例总数中的连续位数21
,可以表示为/21
。
给定掩码长度,您可以计算掩码的点分十进制表示。简单地记下1
掩码长度的位数,并在最后添加足够的0
位到总32
位。将生成的二进制数转换为点分十进制表示。
+--------------------------------------------------------+
¦ # BITS ¦ 21 Network ¦ 11 Host ¦
¦---------+-----------------------------+----------------¦
¦ BINARY ¦ 11111111 ¦ 11111111 ¦ 11111 ¦ 000 ¦ 00000000 ¦
¦---------+----------+----------+-------------+----------¦
¦ DECIMAL ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
¦---------+----------+----------+-------------+----------¦
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
+--------------------------------------------------------+
示例198.51.100.223
地址传统上可以用示例网络掩码表示为198.51.100.223
255.255.248.0
,也可以用更现代的 CIDR(无类域间路由)表示法表示为198.51.100.223/21
。任何一种表示都是有效的,您可以根据需要在掩码和掩码长度之间轻松转换(操作系统和应用程序将需要特定的表示)。
网络地址是所有主机位都设置为 的地址0
。网络地址可以通过AND
地址和网络掩码的二进制表示中的相应位按位计算。对齐位,AND
对每对相应位执行按位运算,然后将结果的各个八位字节转换回十进制。
例如,IPv4 地址198.51.100.223
和网络掩码255.255.248.0
+-------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ BINARY MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦ 198 ¦ 51 ¦ 96 ¦ 0 ¦
+-------------------------------------------------------------+
的网络地址198.51.100.223/21
是198.51.96.0
。请注意,您不能依靠八位字节来区分网络和主机。
此方法用于确定两个地址是否在相同或不同的网络上*。例如,如果您想确定您的示例地址是否与目标地址位于同一网络上198.51.102.57
,请找到示例网络地址(如上)。接下来,使用相同的网络掩码找到目标网络地址(同一网络上的地址使用相同的网络掩码,您可能没有目标掩码,只有目标地址)。
+-------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS ¦ 11000110 ¦ 00110011 ¦ 01100110 ¦ 00111001 ¦
¦ BINARY MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦ 198 ¦ 51 ¦ 96 ¦ 0 ¦
+-------------------------------------------------------------+
比较目标网络地址和示例网络地址,注意网络地址是相等的,这意味着示例和目标地址在同一个网络上。
现在,测试示例地址是否与74.125.69.100
Google 地址在同一网络上。
+-------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-----------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS ¦ 01001010 ¦ 01111101 ¦ 01000101 ¦ 01100100 ¦
¦ BINARY MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE AND ¦ 01001010 ¦ 01111101 ¦ 01000000 ¦ 00000000 ¦
¦-----------------+----------+----------+----------+----------¦
¦ DECIMAL NETWORK ¦ 74 ¦ 125 ¦ 64 ¦ 0 ¦
+-------------------------------------------------------------+
将目标网络地址与示例网络地址进行比较,注意网络地址不同,这意味着示例和目标地址不在同一个网络上。
*这是源用于确定目标是否与源在同一网络上的方法。发往不同网络的数据包必须发送到路由器以转发到不同网络。
IPv4 寻址的一个有用但经常被忽视的值是主机掩码。主机掩码只是NOT
网络掩码的倒数(按位)。
网络掩码到主机掩码
+-----------------------------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦---------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ BITWISE NOT ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦---------------------+----------+----------+----------+----------¦
¦ HOST MASK ¦ 0 ¦ 0 ¦ 7 ¦ 255 ¦
+-----------------------------------------------------------------+
主机掩码到网络掩码
+--------------------------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ BITWISE NOT ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
+--------------------------------------------------------------+
可以使用减法从网络掩码创建主机掩码,或者通过从最长掩码(/32
全为掩码255.255.255.255
)中减去起始掩码从主机掩码创建网络掩码。
二进制网络掩码到主机掩码
+-----------------------------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦---------------------+----------+----------+----------+----------¦
¦ BINARY /32 MASK ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦
¦ BINARY NETWORK MASK ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦ SUBTRACTION ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦---------------------+----------+----------+----------+----------¦
¦ HOST MASK ¦ 0 ¦ 0 ¦ 7 ¦ 255 ¦
+-----------------------------------------------------------------+
二进制主机掩码到网络掩码
+--------------------------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY /32 MASK ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦ 11111111 ¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ SUBTRACTION ¦ 11111111 ¦ 11111111 ¦ 11111000 ¦ 00000000 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
+--------------------------------------------------------------+
十进制网络掩码到主机掩码
+------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦------------------+-----+-----+-----+-----¦
¦ DECIMAL /32 MASK ¦ 255 ¦ 255 ¦ 255 ¦ 255 ¦
¦ NETWORK MASK ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
¦------------------+-----+-----+-----+-----¦
¦ HOST MASK ¦ 0 ¦ 0 ¦ 7 ¦ 255 ¦
+------------------------------------------+
十进制主机掩码到网络掩码
+------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦------------------+-----+-----+-----+-----¦
¦ DECIMAL /32 MASK ¦ 255 ¦ 255 ¦ 255 ¦ 255 ¦
¦ HOST MASK ¦ 0 ¦ 0 ¦ 7 ¦ 255 ¦
¦------------------+-----+-----+-----+-----¦
¦ NETWORK MASK ¦ 255 ¦ 255 ¦ 248 ¦ 0 ¦
+------------------------------------------+
网络广播地址是所有主机位都设置为 的网络地址1
。有几种方法可以计算网络广播地址。
例如,地址198.51.100.223
和网络掩码255.255.248.0
。
OR
您可以使用主机掩码对地址或网络地址执行按位运算。
+---------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-------------------+----------+----------+----------+----------¦
¦ BINARY ADDRESS ¦ 11000110 ¦ 00110011 ¦ 01100100 ¦ 11011111 ¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ BITWISE OR ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦-------------------+----------+----------+----------+----------¦
¦ BROADCAST ADDRESS ¦ 198 ¦ 51 ¦ 103 ¦ 255 ¦
+---------------------------------------------------------------+
您可以简单地将主机掩码的值添加到网络地址的值(而不是主机地址),您可以使用十进制或二进制来执行此操作。
十进制
+-------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-------------------+-----+-----+-----+-----¦
¦ DECIMAL NETWORK ¦ 198 ¦ 51 ¦ 96 ¦ 0 ¦
¦ DECIMAL HOST MASK ¦ 0 ¦ 0 ¦ 7 ¦ 255 ¦
¦-------------------+-----+-----+-----+-----¦
¦ BROADCAST ADDRESS ¦ 198 ¦ 51 ¦ 103 ¦ 255 ¦
+-------------------------------------------+
二进制
+--------------------------------------------------------------+
¦ OCTET # ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦ BINARY HOST MASK ¦ 00000000 ¦ 00000000 ¦ 00000111 ¦ 11111111 ¦
¦ ADDITION ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦------------------+----------+----------+----------+----------¦
¦ NETWORK MASK ¦ 198 ¦ 51 ¦ 103 ¦ 255 ¦
+--------------------------------------------------------------+
网络的主机地址总数是2
主机位数的幂,即32
(IPv4 地址位数)减去网络位数。例如,对于/21
(网络掩码255.255.248.0
)网络,有11
主机位(32 address bits – 21 network bits = 11 host bits
)。这意味着网络中有2048
总的主机地址/21
( )。2
11
= 2048
除/31
( 255.255.255.254
) 和/32
( 255.255.255.255
) 网络外,网络中可用主机地址的数量是网络主机地址总数减去2
(因为网络和广播地址对于网络上的主机地址不可用,必须从数量中减去它们)可用的主机地址)。例如,在/21
( 255.255.248.0
) 网络中,有2046
可用的主机地址 ( )。2
11
- 2 = 2046
除了/31
( 255.255.255.254
) 和/32
( 255.255.255.255
) 网络,第一个可用的网络主机地址是网络地址加上(加法或按位OR
)1
(网络地址不可用于网络主机地址)。例如,在198.51.96.0/21
网络中,第一个可用的网络主机地址是198.51.96.1
(198.51.96.0 + 1 = 198.51.96.1
或198.51.96.0 OR 1 = 198.51.96.1
)。将二进制网络地址的低位设置为1
。
+------------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦----------------------+----------+----------+----------+----------¦
¦ BINARY NETWORK ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000000 ¦
¦ 1 ¦ 00000000 ¦ 00000000 ¦ 00000000 ¦ 00000001 ¦
¦ ADD (OR) ¦ 11000110 ¦ 00110011 ¦ 01100000 ¦ 00000001 ¦
¦----------------------+----------+----------+----------+----------¦
¦ FIRST USABLE ADDRESS ¦ 198 ¦ 51 ¦ 96 ¦ 1 ¦
+------------------------------------------------------------------+
除了/31
( 255.255.255.254
) 和/32
( 255.255.255.255
) 网络,最后可用的网络主机地址是网络广播地址减去1
(网络广播地址不能用于网络主机地址)。例如,在198.61.96.0/21
网络中,最后一个可用的网络主机地址是198.51.103.254
( 198.51.103.255 - 1 = 198.51.103.254
)。将二进制 IPv4 网络广播地址的低位设置为0
.
+----------------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦--------------------------+----------+----------+----------+----------¦
¦ BINARY BROADCAST ADDRESS ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111111 ¦
¦ 1 ¦ 00000000 ¦ 00000000 ¦ 00000000 ¦ 00000001 ¦
¦ SUBTRACT ¦ 11000110 ¦ 00110011 ¦ 01100111 ¦ 11111110 ¦
¦--------------------------+----------+----------+----------+----------¦
¦ LAST USABLE ADDRESS ¦ 198 ¦ 51 ¦ 103 ¦ 254 ¦
+----------------------------------------------------------------------+
/31
( 255.255.255.254
) 网络最初,/31
(255.255.255.254
)网络不可用,因为只有一个主机位,给您两个网络主机地址,但可用网络主机地址的数量是网络主机地址的总数减去2
(2 total host addresses - 2 = 0 usable host addresses
)。
点对点链路只需要两个主机地址(链路两端各一个)。分配 IPv4 网络的传统方式需要使用/30
( 255.255.255.252
) 网络进行点对点链接,但这会浪费一半的网络主机地址,因为一个/30
网络总共有四个网络主机地址,但只有两个是可用的网络主机地址 ( ) .2
2
– 2 = 2
由于 IPv4 地址严重短缺,因此创建了一个标准(RFC 3021,在 IPv4 点对点链路上使用 31 位前缀)以允许将/31
网络用于点对点链路。这是有道理的,因为不需要在此类网络上进行广播:网络上的主机发送的任何数据包都将发往网络上唯一的其他主机,从而有效地进行广播。在/31
网络中,网络地址是第一个可用的主机地址,广播地址是最后一个可用的主机地址。
不幸的是,并非所有供应商(尤其是 Microsoft)都支持在/31
点对点链路上使用网络的标准,而且您经常会看到使用网络的点对点链路/30
。
/32
( 255.255.255.255
) 网络A /32
( 255.255.255.255
) 网络既是一个没有主机地址的网络,又是一个主机地址本身。网络中只有一个地址,那就是网络地址。由于网络上没有其他主机,因此必须将流量路由到该网络地址和从该网络地址路由。
这些地址通常用在设备内部定义的虚拟网络接口上,该设备可以在其虚拟接口和物理接口之间路由数据包。这方面的一个例子是在网络设备中创建一个虚拟接口,用作设备本身的源或目标。虚拟接口不会因为物理问题而掉线,例如电缆拔出,并且如果设备有多个路径进入其中,当设备的物理接口对于某些设备的物理接口无法操作时,其他设备仍然可以使用虚拟接口地址与设备通信原因。
例如网络地址198.51.100.223
和掩码255.255.248.0
(或198.51.100.223/21
),我们可以计算网络信息。*
+--------------------------------------------+
¦ HOST ADDRESS ¦ 198.51.100.223 ¦
¦ NETWORK MASK ¦ 255.255.248.0 ¦
¦ NETWORK MASK LENGTH ¦ 21 ¦
¦ HOST MASK ¦ 0.0.7.255 ¦
¦ HOST MASK LENGTH ¦ 11 ¦
¦ NETWORK ADDRESS ¦ 198.51.96.0 ¦
¦ FIRST USABLE HOST ADDRESS ¦ 198.51.96.1 ¦
¦ LAST USABLE HOST ADDRESS ¦ 198.51.103.254 ¦
¦ NETWORK BROADCAST ADDRESS ¦ 198.51.103.255 ¦
¦ TOTAL HOST ADDRESSES ¦ 2048 ¦
¦ USABLE HOST ADDRESSES ¦ 2046 ¦
+--------------------------------------------+
*在给定主机地址和掩码(或掩码长度)的情况下,网络教育类考试和认证测试将要求您能够快速计算这些值。您可以使用以下提示快速检查您的答案:
1
,奇数)1
,偶数)上述提示不适用于/31
( 255.255.255.254
) 或/32
( 255.255.255.255
) 网络。
如果您有足够的考试时间,并且一个问题有多种方法可以得出答案,您应该使用多种方法来仔细检查答案。
在第 2 部分继续...
接第 1 部分...
对网络进行子网划分是从网络地址和掩码创建多个更长的网络。基本思想是从原始网络地址的Host借用高位,扩展网络。
假设您要从原始198.51.96.0/21
网络地址创建 14 个大小相等的子网。由于你是从原网络的 Host 借用高位,你会得到一个数字,它是 的幂2
,但14
不是 的幂2
,所以你必须得到 的下一个更高的幂2
,恰好是16
( 16 = 2
4
) . 2
在这种情况下,的幂4
是为了创建子网的数量而从主机借用的位数。您可以使用数学公式来确定所需的位数:,向上舍入到下一个整数值。Log
2
(X subnets) = Y borrowed bits
Log
2
(14 subnets) = 3.807354922, rounded up = 4 borrowed bits
例如,14
从原始198.51.96.0/21
网络创建大小相等的子网,从0
第一个子网的 s* 开始,添加1
到子网部分以获得下一个子网。
+-------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+----------------------------------------+-------------------¦
¦ BORROW 4 BITS ¦ 25 Network ¦ 7 Host ¦ ¦
¦------------------+------------------------------+---------+-------------------¦
¦ SUBNET 1 /25 ¦ 110001100011001101100 ¦ 0000 ¦ 0000000 ¦ 198.51.96.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 2 /25 ¦ 110001100011001101100 ¦ 0001 ¦ 0000000 ¦ 198.51.96.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 3 /25 ¦ 110001100011001101100 ¦ 0010 ¦ 0000000 ¦ 198.51.97.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 4 /25 ¦ 110001100011001101100 ¦ 0011 ¦ 0000000 ¦ 198.51.97.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 5 /25 ¦ 110001100011001101100 ¦ 0100 ¦ 0000000 ¦ 198.51.98.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 6 /25 ¦ 110001100011001101100 ¦ 0101 ¦ 0000000 ¦ 198.51.98.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 7 /25 ¦ 110001100011001101100 ¦ 0110 ¦ 0000000 ¦ 198.51.99.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 8 /25 ¦ 110001100011001101100 ¦ 0111 ¦ 0000000 ¦ 198.51.99.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 9 /25 ¦ 110001100011001101100 ¦ 1000 ¦ 0000000 ¦ 198.51.100.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 10 /25 ¦ 110001100011001101100 ¦ 1001 ¦ 0000000 ¦ 198.51.100.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 11 /25 ¦ 110001100011001101100 ¦ 1010 ¦ 0000000 ¦ 198.51.101.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 12 /25 ¦ 110001100011001101100 ¦ 1011 ¦ 0000000 ¦ 198.51.101.128/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 13 /25 ¦ 110001100011001101100 ¦ 1100 ¦ 0000000 ¦ 198.51.102.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ SUBNET 14 /25 ¦ 110001100011001101100 ¦ 1101 ¦ 0000000 ¦ 198.51.102.128/25 ¦
¦------------------+----------------------------------------+-------------------¦
¦ LEFTOVER ¦ 24 Network ¦ 8 Host ¦ ¦
¦------------------+-----------------------------+----------+-------------------¦
¦ UNUSED 1 /24 ¦ 110001100011001101100 ¦ 111 ¦ 00000000 ¦ 198.51.103.0/24 ¦
+-------------------------------------------------------------------------------+
可以将网络地址划分为不同大小的子网(每个网络地址,无论大小,都是网络的子网0.0.0.0/0
),如我们上面的示例,其中未使用的地址是/24
子网,但这需要仔细规划,以便生成的子网从子网大小的正确位开始。
例如,假设我们需要网络中的一个子网/26
和一个/27
子网198.51.96.0/21
。有两种方法可以做到这一点:从/26
子网开始或从子网开始/27
。
从/26
子网开始:
+--------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+-----------------------------------------+-------------------¦
¦ BORROW 5 BITS ¦ 26 Network ¦ 6 Host ¦ ¦
¦------------------+-------------------------------+---------+-------------------¦
¦ SUBNET /26 ¦ 110001100011001101100 ¦ 00000 ¦ 000000 ¦ 198.51.96.0/26 ¦
¦------------------+-----------------------------------------+-------------------¦
¦ BORROW 1 BIT ¦ 27 Network ¦ 5 Host ¦ ¦
¦------------------+--------------------------------+--------+-------------------¦
¦ SUBNET /27 ¦ 110001100011001101100 ¦ 000010 ¦ 00000 ¦ 198.51.96.64/27 ¦
+--------------------------------------------------------------------------------+
请注意,第二个/26
子网/27
是定义子网的位置,并且效果很好,因为27
它大于26
.
从/27
子网开始:
+--------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+-----------------------------------------+-------------------¦
¦ BORROW 6 BITS ¦ 27 Network ¦ 5 Host ¦ ¦
¦------------------+--------------------------------+--------+-------------------¦
¦ SUBNET /27 ¦ 110001100011001101100 ¦ 000000 ¦ 00000 ¦ 198.51.96.0/27 ¦
¦------------------+-----------------------+--------+--------+-------------------¦
¦ UNUSED /27 ¦ 110001100011001101100 ¦ 000001 ¦ 00000 ¦ 198.51.96.32/27 ¦
¦------------------+-----------------------------------------+-------------------¦
¦ RETURN 1 BIT ¦ 26 Network ¦ 6 Host ¦ ¦
¦------------------+-------------------------------+---------+-------------------¦
¦ SUBNET /26 ¦ 110001100011001101100 ¦ 00001 ¦ 000000 ¦ 198.51.96.64/26 ¦
+--------------------------------------------------------------------------------+
请注意,在下一个未使用的寻址中,主机部分(5 个主机位)没有足够的位来支持/26
子网,这需要 6 个主机位 ( 32 address bits - 26 network bits = 6 host bits
)。如果我们使用它作为/26
子网的起始位置,我们将重叠前一个子网和下一个/26
子网。我们需要为/27
子网的起始位置留出一个子网大小的间隙/26
。
子网必须/26
始终从/26
边界开始:每 2个子网 /27
边界、每 4个 /28
子网边界、每 8个 /29
子网边界等。此规则适用于任何子网大小:子网必须从更长的子网的边界开始,即等于2
较长子网大小减去子网大小的幂。例如,/23
子网必须在每 4个 /25
网络 ( ) 上启动。2
(25 - 23)
= 2
2
= 4
尝试使用从错误位边界开始的网络地址配置设备将导致奇怪的、难以解决的问题,或者设备会给您一个有关重叠网络的错误。有些人尝试用点分十进制来做到这一点,这会导致错误。例如,198.51.96.0/27
网络地址范围是198.51.96.0
through 198.51.96.31
。如果您知道这一点并尝试使用198.51.96.32/26
网络,您将遇到问题,因为该网络从错误的位边界开始并与/27
网络重叠(通过使用AND
地址和网络掩码按位检查:198.51.96.32 AND 255.255.255.192 = 198.51.96.0
,与/27
网络)。在二进制中很明显,但在点分十进制中则不那么明显。你可以学到/26
网络必须从十进制的倍数64
边界开始,但是以二进制形式查看它可以确定您是否犯了错误。
*有一个长期存在的神话,即对于子网,对于主机地址,不能使用全零和全一子网,但多年前随着有类网络的弃用,这个神话被消除了。不幸的是,这个神话延伸到一些网络教育课程,那些(不正确的)课程的正确答案是使用第 2到第 15个子网。
常见考试题将为您提供一个网络,并要求您根据每个子网的主机数量提出几个不同大小的子网。如果可以,请说明主机数量是基于网络上的主机地址总数,还是基于网络上可用主机的数量。例如,如果问题要求子网有256
或255
主机,/24
网络会给你256
总的主机地址,但只有254
可用的主机地址。这样的问题可能是一个技巧问题,正确答案取决于问题是指总主机地址还是可用主机地址。
给定198.51.96.0/21
网络,为以下部门划分子网:
500 hosts
100 hosts
200 hosts
1000 hosts
正如我们在子网 IPv4 网络部分中看到的,最简单的方法是首先按主机数量从多到少对部门进行排序,以避免处理可能需要比给定起始网络中可用的更多地址的网络间隙。
1000 hosts
500 hosts
200 hosts
100 hosts
您可以将每个四舍五入到 的下一个高次方,2
以获得每个子网所需的总主机地址数,然后从 的幂的指数中得出所需的主机位数2
。
1024 total hosts = 2
10
= 10 host bits
512 total hosts = 2
9
= 9 host bits
256 total hosts = 2
8
= 8 host bits
128 total hosts = 2
7
= 7 host bits
您还可以使用公式来查找子网所需的位数,以确定每个子网所需的主机位数:,向上舍入到下一个整数值。Log
2
(X hosts) = Y host bits
Log
2
(1000 hosts) = 9.96578428466209, rounded up = 10 host bits
Log
2
( 500 hosts) = 8.96578428466209, rounded up = 9 host bits
Log
2
( 200 hosts) = 7.64385618977472, rounded up = 8 host bits
Log
2
( 100 hosts) = 6.64385618977473, rounded up = 7 host bits
一旦获得每个子网所需的主机位数,然后执行二进制数学以获得每个部门的特定子网。请记住添加1
到子网以获取下一个子网的起始地址。
+-------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+----------------------------------------+-------------------¦
¦ BORROW 1 BIT ¦ 22 Network ¦ 10 Host ¦ ¦
¦------------------+---------------------------+------------+-------------------¦
¦ DEPARTMENT 4 ¦ 110001100011001101100 ¦ 0 | 0000000000 ¦ 198.51.96.0/22 ¦
¦------------------+----------------------------------------+-------------------¦
¦ BORROW 1 BIT ¦ 23 Network ¦ 9 Host ¦ ¦
¦------------------+----------------------------+-----------+-------------------¦
¦ DEPARTMENT 1 ¦ 110001100011001101100 ¦ 10 ¦ 000000000 ¦ 198.51.100.0/23 ¦
¦------------------+----------------------------------------+-------------------¦
¦ BORROW 1 BIT ¦ 24 Network ¦ 8 Host ¦ ¦
¦------------------+-----------------------------+----------+-------------------¦
¦ DEPARTMENT 3 ¦ 110001100011001101100 ¦ 110 ¦ 00000000 ¦ 198.51.102.0/24 ¦
¦------------------+----------------------------------------+-------------------¦
¦ BORROW 1 BIT ¦ 25 Network ¦ 7 Host ¦ ¦
¦------------------+------------------------------+---------+-------------------¦
¦ DEPARTMENT 2 ¦ 110001100011001101100 ¦ 1110 ¦ 0000000 ¦ 198.51.103.0/25 ¦
¦------------------+-----------------------+------+---------+-------------------¦
¦ UNUSED ¦ 110001100011001101100 ¦ 1111 ¦ 0000000 ¦ 198.51.103.128/25 ¦
+-------------------------------------------------------------------------------+
可能会要求您提供给定网络地址的特定子网的网络信息。例如,您可能会被要求提供网络地址的第 23 个子网 /26
的网络信息198.51.96.0/21
。由于您需要第 23个子网,因此您将 decimal 22
(记住0
是第一个子网,所以第 23 个子网将是22
*)转换为 binary 10110
。在地址的子网部分使用转换后的二进制数。
+--------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+-----------------------------------------+-------------------¦
¦ BORROW 5 BITS ¦ 26 Network ¦ 6 Host ¦ ¦
¦------------------+-------------------------------+---------+-------------------¦
¦ SUBNET 23 /26 ¦ 110001100011001101100 ¦ 10110 ¦ 000000 ¦ 198.51.101.128/26 ¦
+--------------------------------------------------------------------------------+
一旦确定了第 23 个网络地址,198.51.101.128/26
就可以计算其他网络信息(如前面部分所述)。
+---------------------------------------------+
¦ NETWORK ADDRESS ¦ 198.51.101.128 ¦
¦ NETWORK MASK ¦ 255.255.255.192 ¦
¦ NETWORK MASK LENGTH ¦ 26 ¦
¦ HOST MASK ¦ 0.0.0.63 ¦
¦ HOST MASK LENGTH ¦ 6 ¦
¦ FIRST USABLE HOST ADDRESS ¦ 198.51.101.129 ¦
¦ LAST USABLE HOST ADDRESS ¦ 198.51.101.190 ¦
¦ NETWORK BROADCAST ADDRESS ¦ 198.51.101.191 ¦
¦ TOTAL HOST ADDRESSES ¦ 64 ¦
¦ USABLE HOST ADDRESSES ¦ 62 ¦
+---------------------------------------------+
*有一个长期存在的神话,即对于子网,对于主机地址,不能使用全零和全一子网,但多年前随着有类网络的弃用,这个神话被明确地消除了。不幸的是,这个神话延伸到了一些网络教育课程,对于那些(不正确的)课程的正确答案是在我们的等大小子网示例中使用第 24个(23
十进制,10111
二进制)子网,而不是实际的第 23个(22
十进制,10110
二进制)子网。
可能会要求您查找给定网络的特定主机的主机地址。例如,您可能会被要求提供网络中第 923 台主机的主机地址198.51.96.0/21
。由于您需要第 923台主机,您可以转换923
为 binary 1110011011
。将转换后的二进制数添加到网络地址:
+--------------------------------------------------------------------------------+
¦ ORIGINAL BITS ¦ 21 Network ¦ 11 Host ¦ ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ ORIGINAL NETWORK ¦ 110001100011001101100 ¦ 00000000000 ¦ 198.51.96.0/21 ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ ADD 923 ¦ 000000000000000000000 ¦ 01110011011 ¦ ¦
¦------------------+-----------------------+-----------------+-------------------¦
¦ HOST 923 ¦ 110001100011001101100 ¦ 01110011011 ¦ 198.51.99.155/21 ¦
+--------------------------------------------------------------------------------+
您可能会获得两个(或更多)不同的地址,并要求您提供包含这些地址的最大网络(最小主机)。例如,找到 和 的最大公共网络198.51.100.223
地址198.51.101.76
。
将地址转换为二进制。从最高位(最左边)开始,比较每个位位置的二进制地址,直到同一位置的位不匹配。
+----------------------------------------------------------------+
¦ OCTET ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦
¦-----------------+----------+----------+-------------+----------¦
¦ 198.51.100.223 ¦ 11000110 ¦ 00110011 ¦ 0110010 ¦ 0 ¦ 11011111 ¦
¦ 198.51.101.76 ¦ 11000110 ¦ 00110011 ¦ 0110010 ¦ 1 ¦ 01001100 ¦
¦-----------------+----------+----------+---------+---+----------¦
¦ MASK /23 ¦ 11111111 ¦ 11111111 ¦ 1111111 ¦ 0 ¦ 00000000 ¦
¦-----------------+----------+----------+---------+---+----------¦
¦ 198.51.100.0/23 ¦ 11000110 ¦ 00110011 ¦ 0110010 ¦ 0 ¦ 00000000 ¦
+----------------------------------------------------------------+
计算匹配位数,23
在这种情况下,得到掩码长度。然后,您可以获取任一地址并AND
使用网络掩码按位执行以获得公共网络。在两个地址上执行此操作应该会导致相同的网络,如果不是,那么您要么计数错误,要么错过了不匹配的位位置。
您可以使用相同的方法进行网络聚合(有时被错误地称为超网)。这将像处理主机地址一样处理网络地址,但请记住,它可能包含您无法控制的网络,因此在聚合网络以进行广告时要小心。
*您可能会看到这称为最小公共网络(或一些变体,例如最小网络或掩码)。最小的网络是0.0.0.0/0
(0
网络位),它是所有网络和地址的最小公共网络。由于许多人查看网络中的主机数量并将该数字与网络的大小混淆,因此出现了混淆。请记住,网络越大,主机越小,反之亦然。
网关是网络中知道如何将数据包转发到其他网络的主机,它可以被分配任何可用的主机地址。有些人只是将网关地址随机分配给任何可用的网络主机地址,有些人总是将第一个可用的主机地址分配给网关,有些人总是将最后一个可用的主机地址分配给网关。您分配给网关的可用主机地址并不重要,但您应该尽量保持一致。
IPv4 本身没有公共寻址和私有寻址的概念,也没有区别。IPv4 私有地址是任意选择的,根据协议,ISP 不会使用私有地址空间中的地址在公共 Internet 上转发数据包,但是网络设备和主机不知道地址是公共地址还是私有地址。
IPv4 私有寻址定义了三个地址范围:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
您可以在自己的私有网络中自由使用任何或所有私有 IP 寻址,但您不能在公共 Internet 上的三个私有地址范围中的任何一个中使用任何地址,并且您必须使用解决方法,例如 NAT 的某些变体,从专用寻址网络使用公共 Internet。
最初,IPv4 地址被划分为网络类别。有类寻址在几十年前就被弃用了(1993 年,比 1995 年商业互联网早两年),现代网络基于 CIDR(无类域间路由),但不幸的是,许多网络教育课程和认证考试坚持测试你的分类寻址的知识。在了解有类寻址之前,请先学习并熟悉本文档中所有以前的 IPv4 数学和子网划分。
IPv4 地址类别均基于地址的第一位:
+-------------------------------------------------------------------+
¦ CLASS ¦ START ¦ BITS ¦ ADDRESS RANGE ¦ SIZE* ¦
¦-------+--------------+------+-----------------------------+-------¦
¦ A ¦ First 1 bit ¦ 0 ¦ 0.0.0.0 - 127.255.255.255 ¦ /8 ¦
¦ B ¦ First 2 bits ¦ 10 ¦ 128.0.0.0 - 191.255.255.255 ¦ /16 ¦
¦ C ¦ First 3 bits ¦ 110 ¦ 192.0.0.0 - 223.255.255.255 ¦ /24 ¦
¦ D ¦ First 4 bits ¦ 1110 ¦ 224.0.0.0 - 239.255.255.255 ¦ - ¦
¦ E ¦ First 4 bits ¦ 1111 ¦ 240.0.0.0 - 255.255.255.255 ¦ - ¦
+-------------------------------------------------------------------+
D类地址用于组播,其中每个地址单独用于表示订阅组播地址的主机的目的组地址,但组播地址不能用于主机或源地址。这意味着 D 类地址通常没有网络掩码的概念。尽管掩码或掩码长度通常用于指定多播地址的范围,但它与网络地址不同。
E 类地址是保留的,它们不能用于任何事情。对此有一个例外,那就是 的有限广播地址255.255.255.255
,这是一个网络上的每个主机都将视为自己的地址。这意味着发送到的任何内容都255.255.255.255
将被网络上的每个主机接收和处理。
因为每个类都有一个默认的网络大小,一些问题假设给定地址的默认掩码,所以任何计算都需要基于默认网络掩码进行。例如,198.51.100.223
地址:
二进制:11000110 00110011 01100100 11011111
请注意,前三个地址位是110
,这意味着这是一个 C 类地址,并且没有任何掩码或掩码长度,网络掩码被假定为255.255.255.0
( /24
),从而使网络地址198.51.100.0
。
*不要犯常见的错误,认为网络掩码决定了网络类别,事实恰恰相反。例如,许多人认为任何/24
网络都是 C 类网络,但事实并非如此。例如,给定一个10.11.12.0/24
网络,由于/24
网络掩码,许多人错误地将其称为 C 类网络,即使地址的第一位是0
,使其成为 A 类网络,尽管网络掩码比默认值长A 类网络掩码,表示它是 A 类网络的子网,而不是 C 类网络。RFC 1166,互联网号码定义了网络地址类别。