子网掩码(Subnet Mask)

首先什么掩码?它的作用是什么?


  • 掩码(Musk),在计算机科学和数字逻辑中,它指的是一串二进制数字。
  • 掩码通过与目标数字按位操作,来达到屏蔽指定位,实现需求的作用。

什么是子网掩码?它的作用是什么?它在IPv4中怎么表示?


  • 子网掩码(Subnet Mask),它是一种用来指明一个IP地址的哪些位标识的是主机所在的网络地址以及哪些位标识的是主机地址的位掩码(即区分IP地址中的网络地址和主机地址)。
  • 通常情况下,子网掩码的表示方法和地址本身的表示方法是一样的。在IPv4中,就是点分十进制四组表示法。

IPv4的前三类IP地址默认的子网掩码分别是什么?

  • A类:255.0.0.0
  • B类:255.255.0.0
  • C类:255.255.255.0

这样默认的原因何在?

以C类地址为例,C类地址的前24位为网络号,后8位为主机号。所以其子网掩码的前24位为8个二进制1,后8位均为二进制0。如果沿用IPv4点分十进制四组的表示方法,即为255.255.255.0
该网络可以容纳最多 256 台主机,也就是主机号从 0 到 255。
当然,实际情况没有这么多,有一些特殊数字有保留用处(广播、网关等)。

因为IP地址的网络号和主机号长度并不确定,因此给出一个IP地址,就可以用子网掩码来区分该IP哪部分是网络号,哪部分是主机号。

那怎么用子网掩码来查看IP地址的网络号和主机号?


例如有一C类地址192.168.0.16,其缺省的子网掩码为255.255.255.0
将该IP地址写成二进制即为:11000000 10101000 00000000 00010000
也将子网掩码写成二进制为:11111111 11111111 11111111 00000000
将IP地址和子网掩码按位相与(&)可得11000000 10101000 00000000 00000000,写成点分十进制为192.168.0.0,这个即为此IP的网络号。对比IP地址可知,16就是它的主机号了(也可将子网掩码按位取反,再和IP地址按位相与也可得到主机号)。

广播地址(Broadcast Address),在使用TCP/IP 协议的网络中,主机号为全1的IP地址为广播地址,广播的分组将传送给主机号所涉及的所有计算机。
根据定义,上述例子中,IP地址192.168.0.16对应网段的广播地址为192.168.0.255

子网划分


如果子网掩码并非缺省的,和A、B、C类地址对应的默认子网掩码不同,那么其广播地址也会发生变化。上述例子子网掩码是C类地址默认的,可知192.168.0.16这个IP地址并未进行子网划分。那什么是子网划分呢?

当我们对一个网络进行子网划分时,基本上就是将它分成小的网络。言下之意子网划分就是把广播域中的网络节点划分为更多更小的网络,每个子网由
路由器界定并分配一个新的子网网络地址,子网地址是借用基于每类的网络地址的主机部分创建的。

那么进行了子网划分的IP地址怎么计算其子网掩码呢?


  • 通过子网数来计算子网掩码

例如,将IP172.16.0.0划分成30个子网络,它的子网掩码是多少?

  1. 30个子网,将30转化为二进制为11110
  2. 11110为5位二进制数
  3. 此IP为B类地址,默认的子网掩码为255.255.0.0,转化为二进制为11111111 11111111 00000000 00000000,将B类地址的子网掩码255.255.0.0主机地址部分的前5位变成1,即为11111111 11111111 11111000 00000000(根据子网划分的定义,子网地址是借用基于每类的网络地址的主机部分创建的。而要能表示30个子网,至少需要5位二进制数才可以),转化为对应的点分十进制四组为255.255.248.0,即为其子网掩码。
  • 利用主机数目计算子网掩码

例如,把B类地址172.16.0.0划分成若干子网络,每个子网络能容纳500台主机,它的子网掩码是多少?

1.把500转换成二进制表示111110100
2.统计一下这个二进制的数共有9位
3.将子网掩码255.255.255.255从后向前的9位变成0
4.这就得到了所要的子网掩码(11111111 11111111 11111110 00000000255.255.254.0

同理,反过来,我们也可以根据子网掩码来求最大有效子网数最大有效主机数,具体过程不再赘述。


参考
[1] 网络号和主机号等的分析和计算
[2] 子网掩码的计算及与子网数、主机数关系

你可能感兴趣的:(子网掩码(Subnet Mask))