子网划分并不难,但是我经常看到有经验的网络工程师也在寻找子网计算器或试图用手指数二进制。那么快速入门呢?

要了解子网,请记住什么是子网,并考虑二进制IP地址。

子网描述了本地网络

A 子网 是IP地址范围。同一子网中的所有设备都可以直接相互通信,而无需通过任何路由器。大多数情况下,网络接口仅连接到一个子网,并且只有一个IP地址。我的笔记本电脑位于一个子网中,该子网中还包括一台服务器,一台打印机,两个其他工作站和一个路由器。所有这些设备都在同一子网中。

如果要与子网中的设备通信,可以直接向其发送数据包。如果它不在我的子网中,则需要先将数据包转发到路由器。通过查看我自己的IP地址和我的计算机,我的计算机知道子网中有另一个设备。 子网掩码.

假设我的IP地址是192.168.101.15,子网掩码是255.255.255.0。 IP地址中有32位,掩码中有相同的数字。我们总是将这32位写成四个8位数字,通常称为 八位位组。令人困惑的是,我们对这些8位数字中的每个数字都使用了十进制表示法。

以二进制表示的十进制数字255是八个1的字符串。因此,我们的示例子网掩码非常简单:在二进制文件中,它是三组,每组8个1,然后是8个0。

让我们与掩码一起查看IP地址:

192.168.101.15 = 11000000.10101000.1100101.00001111
255.255.255.0  = 11111111.11111111.1111111.00000000

面罩上有1的任何地方都是 网络 地址的一部分。蒙版中任何一个为0的地方都是 主办 地址的一部分。网络部分为192.168.101.0,主机部分为xx.xx.xx.15。

具有相同网络部分的任何其他设备都是我的子网的一部分。因此192.168.101.1是我的子网的一部分,而192.168.101.100是我的子网的一部分,但是192.168.102.15不是’在子网的一部分中,我需要通过路由器才能到达它。

使用CIDR标记节省时间

我们一直在谈论传统的网络掩码表示法。但是,在我们进行进一步讨论之前,让我谈谈另一个称为 CIDR(无类域间路由).

传统的网络掩码表示法的麻烦在于,纵观它,您可能会认为自己可能具有1和0的任意序列。然后,您可以将任意两个地址设为同一子网的一部分。幸运的是您无法做到这一点,因为那真的很令人困惑。

所有1必须在左侧,而所有0必须在右侧。因此,真正重要的是有多少个1。您甚至不需要分别计算0,因为总共必须有32位。

在我们的示例中,掩码为255.255.255.0。这是三组,每组八个1,然后是八个0。因此我们可以简单地指定存在24个1(3×8 = 24),我们将其写为/ 24。因此,在CIDR表示法中,我们的示例地址和子网信息可以写为192.168.101.15/24。

如果您不喜欢CIDR表示法,那很好。一开始我也不喜欢,但是在写地址时确实节省了很多时间和空间。

了解特殊主机地址

仅考虑地址的主机部分。在我们的示例(192.168.101.15/24)中,主机部分为.15。掩码为/ 24,地址中有32个可能的位。这意味着主机可以使用八位。

如果我用二进制写15,则得到00001111。(通常将这8位二进制值写成两组,每组四个,中间有一个空格,因为这样更容易阅读。)

此子网范围内的最小值是0000 0000,它是十进制数字0。最大值是1111 1111,它是十进制数字255。这就是我说全0和全1时的意思。这两个值都是保留的用于子网上的本地广播。您不能将它们分配给任何主机—尽管此规则有一个例外,我将在稍后讨论。

使用通用子网掩码

/ 24是非常常见的子网大小。很容易理解,因为地址的网络部分是前三个八位字节,而主机部分是最后八位字节。您可以只读取子网信息。具有相同的前三个八位位组的任何两个地址都在同一子网中。

我真的很喜欢使用/ 24子网,因为它们很容易阅读和记住。我的个人规则之一 网络设计 是有人在凌晨三点打电话给我 解决问题,如果我不必太刻苦思考,那可能是最好的选择。

但是有时候您需要使用其他东西。例如,您可能想要保留地址或创建一个包含数百个设备的子网。在这两种情况下,您都希望使用不同的子网大小。

如果您的子网掩码为/ 25,则只有7位,而不是地址的主机部分的8个空闲位。 2 ^ 7是128。您不能使用全0或全1主机地址,这将留下126个可能的主机。

下表显示了/ 25和其他几个有用的子网大小。

CIDR表示法 网络掩码符号 2 ^(32-n) 可用主机 注意
/0 0.0.0.0 4,294,967,296 4,294,967,294 整个互联网
/8 255.0.0.0 16,777,216 16,777,214 A级
/16 255.255.0.0 65,535 65,533 B级
/24 255.255.255.0 256 254 C级
/25 255.255.255.128 128 126
/26 255.255.255.192 64 62
/27 255.255.255.224 32 30
/28 255.255.255.240 16 14
/29 255.255.255.248 8 6
/30 255.255.255.252 4 2
/31 255.255.255.254 2 2*
/32 255.255.255.255 0 1*

我已经在表格中添加了老式的班级名称,但是重要的是要知道互联网不再能够识别班级的概念。

看一下最后两个条目,它们违反了所有0和1主机地址都是非法的规则。曾经确实存在,使用两个设备获得点对点子网的唯一方法是使用/ 30子网。但是/ 30子网的问题在于,它浪费了整个范围的一半,因为每个/ 30子网都有四个主机地址,其中两个是全0和全1地址。

所以 RFC 3021 引入是为了允许/ 31子网专门用于不需要本地广播的点对点链接。在这些网络中,一个节点发送的任何数据包都必须用于另一节点,因为没有其他可能性。

/ 32子网用于内部环回地址之类的东西,其中子网中只有一个设备。

确定子网范围内的地址

到目前为止,我希望所有这些听起来都很简单。确定子网只有一个困难的部分:知道特定范围内包括哪些地址。有一些技巧可以帮助您。

第一个技巧是,全0地址是一个二进制数字,必须以零结尾,这意味着它始终是偶数。全1地址始终是奇数。因此,除/ 31子网外,任何范围内的第一个可用地址始终为奇数。

第二个技巧是记住上表中间栏中的数字,即2的幂。但是,您真正需要记住的是两个2的幂,直到2 ^ 8。然后,您可以用适当的2的幂来计数。

这就是我的意思。如果我使用的是/ 28子网,那么我首先要从32中减去28(即4)。我记得(或计算一下我的记忆是否使我失望)2 ^ 4是16。然后我用16秒计数。第一个子网是xx.xx.xx.0,该范围内的第一个主机是xx.xx.xx.1。要获取第二个子网,请添加16:xx.xx.xx.16。

此值告诉我第二个范围中的第一个主机是xx.xx.xx.17,第一个范围中的最后一个主机是xx.xx.xx.14。 (请记住,它不能是xx.xx.xx.15,因为那将是全1地址。)

下一个子网是什么?我只是再次添加16并得到xx.xx.xx.32。因此,第二个子网中的最后一个地址是xx.xx.xx.30,第三个范围中的第一个地址是xx.xx.xx.33。

好的,因此确定子网地址实际上并不那么困难。如果您花一分钟时间思考自己的工作,那么您实际上不需要这些子网计算器之一。而且,实际上,思考自己的工作可能还是个好主意。