子网掩码到底是什么?

子网掩码到底是什么?

IP 是什么

要了解子网掩码我们需要先来了解一下 IP 是什么。
IP 其实是一种网络数据包,而这个数据包的报头最重要的就是那个 32 位的来源与目标地址。为了方便记忆,也称这个 32 bits 的数值为 IP 网络地址。
IP 是由 32 个 0 与 1 组成的一串数字。为了顺应人们对于十进制的依赖,这一串数字会被分成四段并被分别换算成十进制。但当思考所有跟 IP 有关的参数时,最直观且万无一失的方式就是将 IP 地址换算回 32 位的数据,即它本来的样子。

IP 表示
00000000.00000000.00000000.00000000  ==> 0.0.0.0

这串数值,又被分为网络号码(Net_ID)和主机号码(Host_ID)两部分。

以 192.168.0.0 为例
11000000.10101000.00000000.00000000
|----------Net_ID---------|Host_ID|
前面三组数字(192.168.0)就是网络号码,最后面一组数字则是主机号码。

在同一个网段内,主机的 IP 具有相同的网络号码,并且具有独特的主机号码。

IP 的分级

Inter NIC 将整个 IP 网段分为了五种等级,每种等级的范围主要与 IP 的 32 bits 数值的前面几个位有关。
IP 分级

其中 D 类时用来作为组播的特殊功能,E 类则是保留没有使用的网段。因此,能够用来设定在一般系统上面的,就只有 A、B、C 三种等级的 IP。

每个种类的网络号再加上前面固定二进制数值,构成一个网段。在这个网段内,可以容纳后面主机号所构成数量的主机。

IP 范围

这时就出现一个问题,在同一个 A 类的网段内,可以容纳的主机数量太大了(256 * 256 *256 -2 = 16777214)。目前还没有这样规模的企业存在。事实上,不可能将一个 A 类仅划定为一个局域网。因为用不了那么多主机,其他的就浪费掉了。

那么如何将 A 类的网段变小,将网络切的更细一些以避免浪费呢?

子网掩码

IP 地址中的主机号码可以被用来作为网络号码,例如 C 类的网络号码原本占用了 24 位,但现在可以让网络号码占用 25位,主机号码缩减为 7 位。这一个 C 类网络就被分为了两个子网,每个子网就有256/2 - 2 = 126个可用的 IP 了。而子网掩码(Netmask)就是用来表示子网的划分的。

以 192.168.0.0 ~ 192.168.0.255 这个网络为例来展示子网掩码的表示方式

第一个 IP:11000000.10101000.00000000.00000000
最后一个: 11000000.10101000.00000000.11111111
         |----------Net_ID----------|Host_ID|
子网掩码: 11111111.11111111.11111111.00000000  <== 子网掩码二进制
            255   .  255  .   255   .   0     <== 子网掩码十进制
子网掩码也是 32 位的,在数值上,位于 Net_ID 的为 1,而 Host_ID 为 0

主机号码全部为 0 以及全部为 1 的时候该 IP 是不可以使用的,因为主机号码全部为 0 时,表示 IP 是该网段的网络号(Network),而全部为 1 的时候就表示该网段的最后一个 IP,也称为广播地址(Broadcast)。如果向广播地址发送信息的话,该网段的所有主机都会收到该信息。

在 192.168.0.0 ~ 192.168.0.255 这个 IP 网段里面的相关网络参数有以下几个:

子网掩码: 255.255.255.0
网络号:   192.168.0.0
广播地址: 192.168.0.255
可以设定为主机的 IP:
192.168.0.1 ~192.168.0.254 共 254 个

一般来说,如果知道了网络号和子网掩码后,就可以定义出该网络的所有 IP 了,所以常常会以网络号以及子网掩码来表示一个网络

网络号/子网掩码
192.168.0.0/255.255.255.0
192.168.0.0/24   <== 表示有 24 位代表网络号码

参考资料

  1. 鸟哥的Linux私房菜 - 服务器架设篇(第三版)
  2. 网络是怎样连接的
  3. 刘超·趣谈网络协议
# 网络 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×