IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。 
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。

python利用ipaddres计算掩码长度 已知ip求掩码_tcp/ip

概念

特征

网络范围

默认掩码

A类地址

第1个8位中的第1位始终为0

0-127.x.x.x

255.0.0.0/8

B类地址

第1个8位中的第1、2位始终为10

128-191.x.x.x

255.255.0.0/16

C类地址

第1个8位中的第1、2、3位始终为110

192-y.x.x.x

255.255.255.0/24

IP地址包含 网络地址+主机地址,即IP地址=网络地址+主机地址

 

那么,问题来了 :

怎么划分子网网段?

为什么要遮掩IP地址?怎么个遮掩法?

现在我们有这么个IP地址:192.168.1.129

我们并不知道它的网络号,也不知道它属于哪部分子网网段。我们现在就需要一个东西来划分出子网网段,这个东西就叫:子网掩码

再,我们给出具体子网掩码:255.255.255.0

什么要这么给?因为子网掩码的长度要和IP地址相同32位,每8位预先被划分为一段。255的二进制就是1111 1111。

那么我们把子网掩码设置为255.255.255.193行不行?

这需要看它的二进制,子网掩码还需要满足一个条件才可以使用:它的二进制中1和0必须是连续的。

255.255.255.193的二进制:
1111 1111.1111 1111.1111 1111.1100 0001
可以看出它1并不连续,所以255.255.255.193不能作为子网掩码使用。
255.255.255.0就很符合条件。
那子网掩码怎么用?
答:用乘法来遮掩IP地址。1×1=1、1×0=0、0×0=0、0×1=0
IP地址:192.168.1.129
二进制:
1100 0000.1010 1000.0000 0001.1000 0001
子网掩码:255.255.255.0
二进制:
1111 1111.1111 1111.1111 1111.0000 0000

计算:

1100 0000.1010 1000.0000 0001.1000 0001
1111 1111.1111 1111.1111 1111.0000 0000
————————————————————
1100 0000.1010 1000.0000 0001.0000 0000

计算后的这段二进制代码相比于原来的IP地址,后面8位被用0遮掩了。

为什么要遮掩?因为我们不必关心后面8位是1还是0了。子网网段已经被划分出来了。

1100 0000.1010 1000.0000 0001.0000 0000的十进制:192.168.1.0

也就是说,从192.168.1.0到192.168.1.255都是同一个子网网段,里面的0—255号可以分配给不同的机器。

0—255号都是机器的号码,IP地址显示的就是其中129号。

192.168.1.0就是所谓的网络号,也可以写作192.168.1或者192.168.1.0\24(24指的是IP地址中有24位未被遮掩)

IP地址的意思就很明白了,网段(网络号)加上机器号码。同一个IP地址根据不同子网掩码,会划分出不同的网络号和机器号。

—————————————————————————————————————

但是,现在就出现了个问题,我子网掩码的最后8位全是0,要是最后8位不全为0怎么办?又是什么意思呢?

现在我们就要看上面子网掩码为255.255.255.0的时候机器号码是从0到255的,那如果我想在0到255里再划分一部分呢?

给出IP地址:192.168.1.188 再给出新的子网掩码:255.255.255.224

现在IP的网络号就不是192.168.1.0了,不再是网段192.168.1.0到192.168.1.255了

1100 0000.1010 1000.0000 0001.1011 1100
1111 1111.1111 1111.1111 1111.1110 0000
————————————————————
1100 0000.1010 1000.0000 0001.1010 0000

不再是24位未被遮掩了,而是27位未被遮掩。被遮掩的后5位,我们不必再关心它是1还是0了。

这就意味着:后5位不论怎么变换,都是在同一个网段里。

后5位的变化是在

1100 0000.1010 1000.0000 0001.1010 0000

1100 0000.1010 1000.0000 0001.1011 1111

之间的。

它的十进制:192.168.1.160到192.168.1.191是由新的子网掩码划分出来的子网网段。

我们称192.168.1.160\27是它的网络号,它的机器号是在160到191之间任意分配出去。之前的IP地址:192.168.1.188属于其中。

总结:子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段。