2020-02-13   更新

20 划分 IP 地址范围(下)
Oscar

网络协议那些事儿

Oscar · 一线大厂高级软件工程师

生活永远不像我们想像的那样好,但也不会像我们想像的那样糟。

——莫泊桑

内容简介


  1. 前言
  2. 用神奇方法来划分
  3. 巩固练习
  4. 总结

1. 前言


上一课我们练习了一些复杂情况下的 IP 地址范围的划分。

我们又学习了神奇方法,用神奇方法可以非常方便地计算出地址范围,都不需要进行复杂的二进制计算。

这一课我们继续学习 IP 地址范围的划分。

2. 用神奇方法来划分


神奇方法的改进

之前学习的神奇方法已经很不错了。但是,我们还可以继续优化神奇方法。

当然,这个优化也不是特别颠覆性的… 只是不计算神奇数字的所有倍数,而只计算那些必要的倍数。

让我们举一个新的例子:10.45.185.24 / 255.255.248.0。

神奇数字是:256 - 248 = 8。子网掩码的有效字节是第三个字节,对应于 IP 地址中的 185。

我们要找到小于或等于 185 的 8 的倍数中的最大值,我们没有必要从 0 开始计算 8 的倍数。

8 * 10 = 80,80 比 185 小。

8 * 20 = 160,160 还是小于 185,但是已经比较接近了。

因此,我们可以从 160 开始计算 8 的倍数:160,168,176,184,192 … 停!因为 192 已经大于 185 了。

和第一个地址有关的的数值是 184,和最后一个地址有关的数值是 191(192 - 1 = 191)。

因此,网络的第一个地址是 10.45.184.0,最后一个地址是 10.45.191.255。

很简单,不是吗?

确实,找到一个地址范围内的第一个和最后一个地址很有用,但是将地址范围内的地址划分成子网通常更为有用。神奇方法将被证明是很强大的!

划分的具体例子


我们再来看一个例子:假设你负责一个公司的某部门的网络,是 192.168.160.0 / 255.255.224.0。

这个部门中有三个群组:

  • 550 名技术人员;
  • 130 名商务人员;
  • 10 名经理。

因此,你需要从网络中划分出三个子网。

第 1 步:计算网络的地址范围

你将看到神奇方法确实比普通方法快很多。

我们开始吧!

  1. 首先,神奇数字是 256 - 224 = 32;

  2. 地址的有效字节是 160,160 正好是 32 的倍数!160 是和网络的第一个地址有关的数值;和最后一个地址有关的数值是 160 + 32 - 1 = 191;

  3. 因此,网络的第一个地址是 192.168.160.0,最后一个地址是 192.168.191.255。

现在,我们来计算每个子网的地址范围。

第 2 步:计算子网掩码

从哪里开始计算呢?

我们知道三个群组各自的人数。很好,我们知道一个网络的地址范围的大小取决于其子网掩码,因此,如果我们知道所需的地址数量,就可以推导出子网掩码。我们再次使用这个公式:

网络中可用的 IP 地址数 = 2 的 “子网掩码中 0 的个数” 次方。

对于 550 名技术人员,网络需要包含 1024(2 的 10 次方)个地址。因此,子网掩码有 10 位都是 0,即 11111111.11111111.11111100.00000000。以点分十进制表示就是 255.255.252.0。

对于 130 名商务人员:130 小于 2 的 8 次方(是 256),子网掩码为 255.255.255.0。

对于 10 名经理:10 小于 2 的 4 次方(是 16),子网掩码为 255.255.255.240。

我们得出了三个子网的子网掩码,接下来,我们只需计算出地址范围即可。

第 3 步:计算子网的地址范围

这是神奇方法派上用场的地方,因为它使确定地址范围内的第一个和最后一个地址变得很容易。

我们将从技术人员的网络开始。

上面我们经过计算,得知你负责的部门的网络是从 192.168.160.0 开始,我们将从该地址开始技术人员的网络,并通过子网掩码找到最后一个地址。

让我们计算一下神奇数字:256 - 252 = 4。160 之后的 4 的下一个倍数是 164,164 - 1 = 163。因此,技术人员的网络的最后一个地址是 192.168.163.255。

对于商务人员的网络,我们将紧跟技术人员的地址范围之后开始,第一个地址是 192.168.164.0。这次我们不需要借助神奇数字了,因为子网掩码(255.255.255.0)中的划分正好发生在两个字节之间,因此商务人员的网络的最后一个地址是 192.168.164.255。

之后,经理的网络也将紧跟商务人员的地址范围,第一个地址是 192.168.165.0。神奇数字是 256 - 240 = 16。16 - 1 = 15,因此经理的网络的最后一个地址是 192.168.165.15。

结果

这样,我们就确定了三个地址范围:

  • 技术人员的网络:192.168.160.0 / 255.255.252.0,地址范围是从 192.168.160.0 到 192.168.163.255;

  • 商务人员的网络:192.168.164.0 / 255.255.255.0,地址范围是从 192.168.164.0 到 192.168.164.255;

  • 经理的网络:192.168.165.0 / 255.255.255.240,地址范围是从 192.168.165.0 到 192.168.165.15。

我们注意到:经理的网络中,地址 192.168.165.15 是广播地址,即使它不是以 255 结尾。

一切进展顺利,但是我们知道按地址范围从大到小来划分子网是比较容易的,而按地址范围从小到大来划分子网则是比较复杂的。但是不需要担心,因为我们有神奇方法!

当情况变得复杂时


假设,有 120 位女秘书进驻我们的网络!

少年,淡定,淡定!

这只是一个例子,在现实生活中,你应该不会看到公司一下子来 120 名女秘书的。

我们也要为这 120 位秘书选取一个子网,但又不能影响现有的那三个子网。如果我们采用与以前相同的方法,则会行不通。

让我们看看为什么。

我们知道经理的网络的最后一个地址是 192.168.165.15,因此我们试着从地址 192.168.165.16 处开始秘书的地址范围。

因为 120 小于 2 的 7 次方(是 128),因此秘书的子网掩码是 255.255.255.128。神奇数字是 256 - 128 = 128。128 - 1 = 127,因此秘书的网络的最后一个地址是 192.168.165.127。秘书的地址范围从 192.168.165.16 到 192.168.165.127。

但这样是行不通的!

首先,这个地址范围没有足够的地址。从 16 到 127,我们只有 112 个地址(127 - 16 + 1 = 112),不足以分配给 120 位秘书。

更糟糕的是,这个地址范围和我们想象得不一样。如果重新使用神奇方法,将得出以下结果:神奇数字是 128。128 的倍数是 0,128,256。我们的地址将从 0 到 127,而不是从 16 到 127!但这样,我们就侵犯了经理的地址范围!

那应该怎么办呢?

其实,只要取神奇数字的下一个倍数即可!

我们将不从 192.168.165.16 这个地址开始秘书的网络,而从 192.168.165.128 开始,到 192.168.165.255 结束。

这回,我们确定了一个包含 128 个地址(255 - 128 + 1 = 128)的网络,应该足够分配给 120 位秘书,而且该网络的地址范围也没有侵犯经理的网络!

然而,我们没有使用 192.168.165.16 到 192.168.165.127 之间的 112 个地址,这个地址范围成为了一个“空洞”。这其实是很正常的,也没什么关系。如果需要,我们以后可以将这些没有用到的地址用于更小型的子网。

当在一个大的地址范围内选取一个子网,这个子网比在它之前的子网更大时,有必要跳过一定范围的地址,并在大的地址范围内留一个“空洞”。

原理很简单:我们子网的大小都是 2 的倍数(因为都是根据那个公式来计算的,是 2 的多少次方,所以肯定是 2 的倍数),因此小型的子网的地址范围始终可以在较大的子网的倍数上开始。

例如,16 的任意倍数肯定也是 8 的倍数:

  • 16 的倍数:0,16,32,48 …
  • 8 的倍数:0,8,16,24,32,40,48 …

因此,我们总是可以将一个较小的子网放在一个较大的子网之后。有时我们也可以将较大的子网放在较小的子网后面,但是在这种情况下,需要三思而后行,也需要妥善使用神奇方法。

现在该做些练习来巩固一下所学的知识了。

3. 巩固练习


请不要轻看这些练习,做完之前请不要查看答案。

第一个例子


将 10.47.192.0 / 255.255.240.0 这个网络划分为三个子网,三个子网分别包含以下的群组:

  • 880 名技术人员;
  • 400 名商务人员;
  • 60 名经理。

注意,在计算经理的地址范围时有一个小技巧是需要你去发现的!

首先,计算每个子网的子网掩码:

  • 技术人员的网络:880 小于 2 的 10 次方(是 1024),因此子网掩码是 255.255.252.0;

  • 商务人员的网络:400 小于 2 的 9 次方(是 512),因此子网掩码是 255.255.254.0;

  • 经理的网络:60 小于 2 的 6 次方(是 64),因此子网掩码是 255.255.255.192。

但是这里有一个小陷阱!

如果为经理的网络选择 255.255.255.192 作为子网掩码,则网络最多只能包含 64 个地址,除去广播地址和网络本身的地址,只有 62 个地址可以分配给主机。这对 60 名经理来说有点“拮据”,因为他们每个人可能不止拥有一台电脑,还可能有打印机等等。

因此,为经理的网络选择一个允许有更多地址的子网掩码是比较明智的。192 转成二进制是 11000000,我们可以少用一位 1,改为 10000000,也就是十进制的 128。

因此,我们为经理的网络选取了子网掩码 255.255.255.128,这样经理的网络就有 128 个地址(其中包含 126 个可用地址)。

可以得出:

  • 技术人员的网络:因为 880 小于 2 的 10 次方(是 1024),因此子网掩码是 255.255.252.0;

  • 商务人员的网络:因为 400 小于 2 的 9 次方(是 512),因此子网掩码是 255.255.254.0;

  • 经理的网络:因为 60 也小于 2 的 7 次方(是 128),因此子网掩码是 255.255.255.128。

好的,我们首先计算技术人员的地址范围:神奇数字是 256 - 252 = 4。第一个地址为 10.47.192.0(题目给出的整个网络的第一个地址),最后一个地址为 10.47.195.255。

然后是商务人员的地址范围:神奇数字是 256 - 254 = 2 。第一个地址为 10.47.196.0(紧跟在技术人员的地址范围之后),最后一个地址为 10.47.197.255。

最后是经理的地址范围:神奇数字是 256 - 128 = 128 。第一个地址是 10.47.198.0(紧跟在商务人员的地址范围之后),最后一个地址是 10.47.198.127。

第二个例子,和第一个例子一样…


实际上,给定的条件和第一个例子是相同的,但是要求你从经理的地址范围开始,然后是商务人员,最后是技术人员。

好消息是,子网掩码保持不变:

  • 技术人员的网络的子网掩码:255.255.252.0;
  • 商务人员的网络的子网掩码:255.255.254.0;
  • 经理的网络的子网掩码:255.255.255.128。

因此,我们首先计算经理的网络:神奇数字是 128。

第一个地址是 10.47.192.0(题目给出的整个网络的第一个地址),最后一个地址是 10.47.192.127。

我们很想在经理的地址范围之后紧跟商务人员的地址范围,但是我们知道可能会冒险(因为将较大的子网放在较小的子网后面时,需要三思)。

对于商务人员的网络,神奇数字是 2。因此,网络的第一个地址的第三个字节(对应子网掩码中的有效字节)必须是偶数。

我们不能从 192 开始,因为有一些地址已经被经理的地址范围占用。所以我们可以从 194 开始。

这样,商务人员的网络的第一个地址是 10.47.194.0,最后一个地址是 10.47.195.255。

最后是技术人员的网络:神奇数字是 4。192 是 4 的倍数,但是经理的网络已经使用了它。所以,我们可以用 196。

这样,技术人员的网络的第一个地址是 10.47.196.0,最后一个地址是 10.47.199.255。

概述一下:

  • 经理的网络:10.47.192.0 / 255.255.255.128,地址范围是从 10.47.192.0 到 10.47.192.127;
  • 商务人员的网络:10.47.194.0 / 255.255.254.0,地址范围是从 10.47.194.0 到 10.47.195.255;
  • 技术人员的网络:10.47.196.0 / 255.255.252.0,地址范围是从 10.47.196.0 到 10.47.199.255。

搞定!

但是,我们这次划分的三个子网的结束地址(10.47.199.255)比第一个练习的结束地址(10.47.198.127)要更靠后,我们不会“浪费”(指没有用到)更多的地址吗?

不会。事实上,我们“浪费”了完全相同的地址数目。这个练习中我们看得比较清楚,因为“浪费”的地址是在每个子网之间的“空洞”中。第一个练习中,地址也有被“浪费”,只不过“浪费”的地址主要位于三个子网之后。

4. 总结


现在,你可以给自己出题:选择网络的地址范围,群组的数目,以及每个群组里的人员数目,来进行训练。只要你对于 IP 地址范围的划分还感到困惑或者还不是很熟练,就应该多多练习。

很好,

  • 你现在知道了如何将一个网络划分为不同的子网;
  • 你也知道了如何使用神奇方法来更快地进行地址范围的划分。

那么,接下去我们就要攻坚这个专栏最重要的内容之一咯,那就是:路由

一起加油吧~

精选留言 写留言

0 / 3
登录后可任选 3 个小节免费阅读
课程目录
取消 评论 发送