如何计算前缀,网络,子网和主机号?

计算网络掩码长度(也称为前缀):

将网络掩码的点分十进制表示形式转换为二进制。然后,从第一个八位位组的最高有效位(即二进制数的左侧)开始,计算连续的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

计算广播地址:

广播地址将所有主机位转换为1s ...

请记住,我们的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 masklength?通过返回包含100个主机所需的主机位数来计算前缀。一个需要7个主机位才能包含100个主机。正式地,这是用以下公式计算的:

主机位 =日志2(主机数)=日志2(100)= 6.643

由于IPv4地址的宽度为32位,并且我们使用的是主机位(即最低有效位),因此只需从32中减去7即可计算每个子网的最小子网前缀... 32-7 = 25。

将128.42.0.0/21分为四个相等子网的惰性方法:

由于我们只需要整个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和全0主机号是保留的。全零主机号是网络号;所有人的主机号是广播地址。

使用上面的示例子网128.42.0.0/21,主机数量为...

最大主机数 = 2 **(32-21)-2 = 2048-2 = 2046

查找包含两个IP地址的最大网络掩码(最小主机掩码):

假设有人给我们两个IP地址,并希望我们找到包含两个IP地址的最长网络掩码;例如,如果我们有:

  • 128.42.5.17
  • 128.42.5.67

最简单的方法是将两者都转换为二进制文件,并从地址的左侧寻找最长的网络位字符串。

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

注意:如果您尝试从右侧开始,请不要仅仅因为找到了一个匹配的位列就被欺骗了;除了那些匹配的位以外,可能还有其他不匹配的位。老实说,最安全的做法是从左侧开始。

### IP地址中网络号、子网主机号的概念 #### 网络号 (Network ID) 网络号是IP地址的一部分,用来标识特定的物理或逻辑网络。它决定了数据包应该发送到哪个网络。在一个A类、B类或C类标准分类下,不同长度的前缀被指定为网络部分[^3]。 对于IPv4来说,一个完整的IP地址由两部分组成——前面一部分代表网络编号,后面的部分则对应于该网络内的具体机器位置即主机编号。例如,在未加子网的情况下: - A类地址的第一个八位组定义了网络号; - B类地址的头两个八位组构成了网络号; - C类地址前三段共同构成其网络号[^1]。 #### 子网号 (Subnet ID) 当为了更细粒度地管理大型网络而将其分割成多个较小规模的独立子网时,则引入了额外的一层抽象叫做“子网”。通过设置不同的子网掩码可以灵活调整实际使用的网络位数来创建这些子网。因此,在这种情况下,原本属于主机ID的空间会被进一步划分为新的子网ID以及剩余可用作个体计算机身份识别用途的新版host ID[^2]。 #### 主机号 (Host ID) 主机号是指定给同一网络内部每一台设备的独特数值。它是相对于某个具体的网络而言的定位信息,确保即使在同一局域网上也能区分各个终端节点。在经典无子网结构里,这相当于整个后半截IP地址;而在有子网环境中,则仅指最末端那几位二进制数字。 ### 划分方法 要实现上述功能,主要依靠的是**子网掩码**(subnet mask),这是一种同样采用四个十进制整数组合表达的形式,用以指示哪几个比特应当解释成网络成分,其余的就是留给本地寻址之用了。比如常见的`255.0.0.0`意味着这是一个典型的Class A型布局下的全范围覆盖模式,表明首字节固定不变作为NET_ID, 后面三个字段都开放给了HOST_ID; 对应地,“斜杠记法”(/CIDR notation)会写作 `/8`, 表明最初的八个bit专供网络使用。 考虑如下例子: 假设有一个C类地址 `192.168.1.100` 默认子网掩码 `255.255.255.0 (/24)`: ```plaintext IP Address: 192 . 168 . 1 . 100 Binary Form: 11000000.10101000.00000001.01100100 Subnet Mask: 255 . 255 . 255 . 0 11111111.11111111.11111111.00000000 ``` 在这个配置下, - 前24位(也就是第一个至第三个八位)表示网络号 (`192.168.1`) - 最后的8位(第四个八位)全部留为主机号(`100`) 如果现在想要增加更多的子网控制能力,可以通过改变子网掩码的方式来进行细分。比如说改为 `255.255.255.192 (/26)` ,那么此时有效网络数量增加了,但每个子网内能容纳的最大主机数目减少了。因为这样做的结果就是把原来单纯分配给主机的那一串连续零变成了带有若干前置一的状态,从而使得某些原先归属于主机空间的位置转而去描述新增设的小型局部区域了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超翔之逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值