在第9部分的LFCA系列中,我们介绍了IP地址的基础知识。为了更好地理解IP地址,我们需要更加关注这两种类型的IP地址表示方式——二进制和点分十进制。如前所述,IP地址是一个32位的二进制数,通常以十进制格式表示以便于阅读。
二进制格式仅使用数字1和0。这是您的计算机理解的格式,也是通过网络发送数据的方式。
然而,为了使地址易于人类阅读。它以点分十进制格式传达,计算机随后将其转换为二进制格式。正如我们之前所述,一个IP地址由4个八位字节组成。让我们解析IP地址192.168.1.5。
在点分十进制格式中,192是第一个八位字节,168是第二个八位字节,1是第三个,最后,5是第四个八位字节。
以二进制格式表示的IP地址如下:
11000000 => 1st Octet 10101000 => 2nd Octet 00000001 => 3rd Octet 00000101 => 4th Octet
在二进制中,一个位可以是开或关的。‘开’位由1表示,而关闭位由0表示。以十进制格式,
要得到十进制数,需要对所有二进制位的2次幂进行求和。下表给出了八位字节中每个位的位置值。例如,1的十进制值等同于二进制00000001。

更好的格式可以表示如下。
2º = 1 = 00000001 2¹ = 2 = 00000010 2² = 4 = 00000100 2³ = 8 = 00001000 2⁴ = 16 = 00010000 2⁵ = 32 = 00100000 2⁶ = 64 = 01000000 2⁷ = 128 = 10000000
让我们尝试将点分十进制格式的IP地址转换为二进制。
将十进制格式转换为二进制
让我们以192.168.1.5为例。要从十进制转换为二进制,我们将从左到右开始。对于表中的每个值,我们问一个问题,您能从IP地址中的十进制值中减去表中的值吗?如果答案是“YES”,我们写下“1”。如果答案是“NO”,我们写下零。
让我们从第一个八位字节开始,即192。您能从128中减去192吗?答案是肯定的“YES”。因此,我们将写下对应于128的1。

192-128 = 64
您能从64中减去64吗?答案是“YES”。同样,我们写下对应于64的1。

64-64 = 0由于我们已经用尽了十进制值,我们将剩余的值分配为0。

所以,192的十进制值转换为二进制为11000000。如果您将底部表中对应1的值相加,最终得到192。即128 + 64 = 192。有道理吧?
让我们继续到第二个八位字节 – 168。我们可以从168中减去128吗?是的。

168-128 = 40
接下来,我们可以从40中减去64吗?不行。所以,我们分配一个0。

我们继续到下一个值。我们可以从40中减去32吗?是的。我们分配值1。

40 - 32 = 8
接下来,我们可以从8中减去18吗?不行。我们分配0。

接下来,我们可以从8中减去8吗?是的。我们分配值1。

8-8 = 0
由于我们已经用尽了十进制值,所以将在表中剩余的值分配为0,如下所示。

最终,十进制168转换为二进制格式10101000。同样,如果您将底部行中对应1的十进制值相加,最终得到168。即128 + 32+8 = 168。
对于第三个八位字节,我们有1。我们可以完全从表中减去的唯一数字是1。因此,我们将在表上为1分配值1,并添加前导零,如下所示。

因此,1的十进制值等于二进制00000001。
最后,我们有5。从表中,我们可以完全从5中减去的数字从4开始。左侧的所有值将被分配为0。
我们可以从5中减去4吗?是的。我们将4分配为1。

5-4 = 1
接下来,我们可以从2中减去1吗?不行。我们分配值0。

最后,我们能够从1中减去1吗?是的。我们将1赋值。

数字5的十进制数字对应于二进制00000101。
最后,我们有以下转换。
192 => 11000000 168 => 10101000 1 => 00000001 5 => 00000101
因此,192.168.1.5 转换为二进制形式为11000000.10101000.00000001.00000101。
理解子网掩码/网络掩码
我们先前已经说明,TCP/IP 网络中的每个主机都应该有一个唯一的 IP 地址,这在大多数情况下是由路由器使用 DHCP 协议动态分配的。DHCP 协议(动态主机配置协议)是一个为 IP 网络中的主机动态分配 IP 地址的服务。
但是,您如何确定 IP 的哪一部分保留用于网络部分,哪一部分可供主机系统使用?这就是子网掩码或网络掩码发挥作用的地方。
A subnet is an additional component to an IP address that distinguishes the network & host portion of your network. Just like an IP address, the subnet is a 32-bit address and can be written in either decimal or binary notation.
子网的目的是在 IP 地址的网络部分和主机部分之间划定边界。对于 IP 地址的每个位,子网掩码或网络掩码分配一个值。
对于网络部分,它打开该位并分配值1,对于主机部分,它关闭该位并分配值0。因此,所有位设置为1对应于 IP 地址中代表网络部分的位,而所有位设置为0对应于 IP 地址中代表主机地址的位。
A commonly used subnet mask is the Class C subnet which is 255.255.255.0.
下表显示了十进制和二进制中的网络掩码。

这是我们网络基础知识系列的第二部分。我们已经讨论了十进制到二进制IP转换、子网掩码以及每个IP地址类别的默认子网掩码。
Source:
https://www.tecmint.com/learn-binary-and-decimal-numbers-in-networking/