【干货】码农也要懂点网络之《IPv4子网划分》
发布网友
发布时间:2024-10-06 13:06
我来回答
共1个回答
热心网友
时间:2024-10-06 13:23
在IP的世界里,掩码是个很重要的概念,打个不恰当的比喻:IP地址和掩码的关系就像是人和影子的关系,没有掩码的IP是无法正常工作的。
目前通行的IPv4地址是一个32 bit 的整数,在计算机中用一个长整形变量即可表示。取值范围:0~4294967295(2^32-1)。对于人脑来说,无论是使用十进制还是二进制表示这个32 bit 的整数都不是好的方法。因此,IPv4地址通常采用点分十进制表示。下面是同一个IP地址:122.70.156.25的不同表示方法: 点分十进制:122.70.156.25 十进制: 2051447833 二进制: 01111010.01000110.10011100.00011001 显然点分十进制更加容易记忆。
IP地址分为两个部分,即网络地址(也称作“前缀”)和主机地址。这就好像我们的邮政地址,例如:长安街10号,在这个地址中,长安街就相当于IP地址中的网络地址,10号则相当于IP地址中的主机地址,两者加到一起成为明确描述一个地点的地址。 掩码与IP等长,也是32 bit的整数,主要用于区分IP地址中的网络地址和主机地址,从左至右,网络地址的部分为全1,主机地址的部分为全0,然后将IP地址与掩码逐位进行“与”运算,即:1 & 1 = 1,1 & 0 = 0。 由此得到: 公式一:网络地址 = IP地址 & 掩码 公式二:主机地址 = IP地址 – 网络地址
掩码通常使用掩码长度来描述,比如,掩码长度为24则表示掩码:255.255.255.0,原理是每个255都等于二进制的8个连续的1,即:11111111。3个255连在一起,就相当于24个连续的1。同理掩码长度为25则表示掩码:255.255.255.128,前面3个255相当于24个1,紧跟着的128换成二进制是10000000,正好和前面的24个1一起组成25个1。 由此得到: 公式三:网络包含的IP地址数 = 2 ^ (32-掩码长度)
同时IP协议规定,每个网段的最后一个IP地址为该网段的广播地址,即主机地址部分全为1的地址。网络地址与广告地址不能分配给主机使用。 由此得到: 公式四:网络包含的可用(分配)IP地址数 = 2 ^ (32-掩码长度) – 2
套用以上公式,我们得到IP地址:192.168.100.100/255.255.255.0 的网络地址为192.168.100.0,主机地址为100,该网段有2 ^ ( 32 – 24 ) = 2 ^ 8 = 256个IP地址,去掉网络地址和广播地址后,还有可用IP地址 256-2 = 254个。
以上是IP和掩码的基本概念,下面是如何通过掩码来控制和划分子网,这也是IP规划的精髓所在… 前面说过,IP地址包括网络地址与主机地址两个部分,其实通过掩码的控制,可以实现网络地址的层次化,也就是子网的概念。
请看这个IP地址:北京.西城区.长安街.10号/255.255.255.0,通过掩码我们知道该IP的网络地址是:“北京.西城区.长安街.0”。现在我们将掩码设置为:255.255.0.0,则网络地址变为:“北京.西城区.0.0”,显然前者是后者的一部分,也就是说前者是后者的一个子网。如果你愿意,完全可以通过调整掩码为:255.0.0.0,这样网络地址就变为:“北京.0.0.0”可以用来表示整个北京了。
于是我们得到这样的层次化的IP网络: 北京.0.0.0 / 8 北京.西城区.0.0 / 16 北京.西城区.长安街.0 /24 北京.西城区.府右街.0 /24 北京.东城区.0.0 /16 ……. 同理,将上面的地面使用数字替代后得到: 192.0.0.0 / 8 192.168.0.0 / 16 192.168.100.0 /24 192.168.200.0 /24 192.169.0.0 /16 ……. 可用看出,所谓子网的划分,无非就是通过控制掩码长度来调整网络地址的大小,下面是一个具体的子网划分的例子。
某单位省公司从总部申请到网段10.100.0.0/16,省公司在每个地市还有分公司,一个13个分公司。现在要求每个地市平均分配,省公司适当保留一部分IP。
具体做法:
13个分公司+省公司,一共14个网段,8<14<16,因此需要先均分成16份(2^4);
父网段掩码长度为16,则此网段一共包含2^(32-16)= 65536 个地址,均分成16个子网,则每个子网包含 65536 / 16 = 4096 个IP地;
4096 = 2^12,因此子网的掩码是32-12=20;同时4096使用点分十进制表示为:0.0.16.0
综上所述,得到如下子网列表:
10.100.0.0/20 10.100.16.0/20 10.100.32.0/20 10.100.48.0/20
10.100.64.0/20 10.100.80.0/20 10.100.96.0/20 10.100.112.0/20
10.100.128.0/20 10.100.144.0/20 10.100.160.0/20 10.100.176.0/20
10.100.192.0/20 10.100.208.0/20 10.100.224.0/20 10.100.240.0/20
我们可以看到,后一个子网都是在前一个子网的基础上加上了“0.0.16.0”。到此,我们可以将前三个网段分配给省公司,剩下13个网段分别分配给分公司。分公司拿到IP后,还可以继续细分。例如,某分公司拿到地址:10.100.160.0/20,可以继续细分成:10.100.160.0/22,10.100.164.0/22,10.100.168.0/22,10.100.168.0/22 四个网段。