Linux网络基础三:子网分析

一、基于IPv4地址格式的计算

首先,对于任何子网,当得知主机位的位数时,就能够计算出该子网中主机IP地址的数量,其次,如果整个网络只使用一个掩码,那么得知该子网位的数量,就能计算出网络中子网的数量。 IPv4地址的长度为32位,我用以下字母来代替各个专有名词,

  • 子网中的主机数:2^H-2,其中H为主机位的数量。
  • 网络中的子网数:2^S,其中S为子网位的数量。

将子网掩码转换为CIDR格式,记为P。
A类网络N=8,B类网络N=16,C类网络N=24。
主机位记为H。

计算步骤:

  1. 将掩码转换为所需的CIDR格式为P。
  2. 基于网络分类,判断出N。
  3. 计算子网位S=P-N。
  4. 计算主机位H=32-P。
  5. 计算主机/子网数量:2^H -2。
  6. 计算子网数量:2^S。

示例1:
IP地址为8.1.4.5,子网掩码为255.255.0.0,按照上面计算步骤:

 1. 255.255.0.0 = /16,因此P=16
 2. 8.1.4.5的第1个八位组为1-126这个范围内,属于A类网络,因此N=8
 3. 子网位S=P-N=16-8=8
 4. 主机位H=32-P=32-16=16
 5. 主机/子网的数量:2^16 -2 = 65534
 6. 子网数量:2^8 = 256

示例2:
IP地址为200.1.1.1,子网掩码为255.255.255.252,按照上面计算步骤:

 7. 255.255.255.252 = /30,因此P=30
 8. 200.1.1.1的第1个八位组为192-223这个范围内,属于C类网络,因此N=24
 9. 子网位S=P-N=30-24=6
 10. 主机位H=32-P=32-30=2
 11. 主机/子网的数量:2^2 -2 = 2
 12. 子网数量:2^6 = 64

最好能牢记住CIDR和点分十进制计法的子网掩码的转换:
Linux网络基础三:子网分析_第1张图片

二、根据IP地址和掩码,计算子网ID和广播地址

尽管有3个掩码比较容易处理(255.0.0.0,255.255.0.0,255.255.255.0),但其他的掩码使用十进制数学运算会有点难度,我这里将介绍一个从《CCENT/CCNA ICNA(100-105)认证考试指南(第5版)》中看到的方法。

1.查找子网ID

 1. 如果掩码八位组是255,复制该十进制IP地址。
 2. 如果掩码八位组是0,写下十进制。
 3. 如果掩码都不符合以上两条:
 	A.计算出魔法数字,算式为256-掩码。
 	B.将子网ID的数值设为魔法数字倍数中最接近IP地址的一项,而无需查看所有地址。

示例1:
IP地址为130.4.102.1,掩码为255.255.240.0:
Linux网络基础三:子网分析_第2张图片
简单画的草图,只做示意。
说明:
前面两个八位组掩码数字时255,因此复制IP地址,写下子网ID的地方即可,IP地址的第4个八位组掩码为0,因此把0页写下来。
第3个八位组,按照上面的3A步骤,计算出魔法数值,256-240=16,得出,子网ID的第三个八位组必须是16的倍数。
然后按照3B步骤,计算出16的倍数,然后选择与IP地址最接近的数值,即0,16,32,64,80,96,112,以此类推,而ip地址的第三个八位组是102,最接近96,而无需再看102,即可算出子网ID的第3个八位组为96,则整体的子网ID就是130.4.96.0。

示例2:
IP地址167.77.88.99,掩码255.255.255.192:
Linux网络基础三:子网分析_第3张图片
按照3A步骤,计算魔法数字256-192=64。魔法数字64的倍数为0,64,128,192,256。IP地址第4个八组数值为99,最接近的是64,而无需再向后查看,则子网的ID地址为167.77.88.64。

2.查找子网广播地址

查找子网的广播地址也是一个相似的过程。简单的来说,该过程从查找子网ID开始,而非IP地址,对应步骤如下:

 1. 如果掩码八位组是255,复制该子网ID2. 如果掩码八位组是0,写下255.
 3. 如果以上两者都不是,则:
 	A.计算出魔法数字,算式为256-掩码。
 	B.将子网ID的数字与魔法数字相加,再减去1

示例3:
这里我沿用上面示例2中的IP地址和掩码,其子网ID为167.77.88.64。
Linux网络基础三:子网分析_第4张图片
则通过子网ID和子网广播地址可以得出有效地址范围:167.77.88.65-167.77.88.126

你可能感兴趣的:(Linux运维)