一楼回答的已经很形象了,说下自己的见解。拿邮政编码来类比一下,6位,分三段,每两位代表特别的含义,如:邮政编码是用来给投递所编码,IP地址是用来给主机编码。邮政编码是6位十进制数字表示,IP地址是若干位01编码表示,其中IPv4是32位,IPv6是128位邮政编码按照省县(市)投递所依次定位,IP地址先定位是哪个子网,再定位到主机在这个子网里的编号(前若干位理解成子网编号,后若干位是主机编号)邮政编码省市县都是按照两位数字表示,位数确定;IP地址表示子网的位数和表示主机编号的位数不一定(这就是子网掩码的用途来源)为什么IP地址当中表示子网的位数和主机编号的位数不一定呢?主要是为了充分利用IP地址。IP地址的位数有限,能表示的信息也是有限的。假如我们像邮政编码那样规定,例如:前8位为子网掩码,后24位为主机编号,也就是一个网段中最多可以有2^24-2台主机,再多的话就无法编码。假如一个网段中只有两台主机,那就根本不需要那么多位数来标识主机,就使大量的IP地址无法使用,假如这个网段中主机比较多,超过了24位所能表达的数目,那就会出现IP地址不够用的情况,因此如果规定了位数,就会非常不灵活,没办法更好地利用IP资源。子网掩码到底是什么鬼?既然定死位数不灵活,那就不定死呗。那么问题来了,给你一个IP地址,你该怎么解析呢?我们不知道拿前几位去找子网,然后拿剩下的位数去找主机。子网编号和主机编号,在不同的地方分隔会导致我们最终定位到的主机完全不同。子网掩码就是要告诉大家,子网占了多少位,主机编号占了多少位的。表示子网的位设为
1,主机编号为
0,转换成十进制,就是我们常见的子网掩码了。例如:前8位表示子网编号,后24位表示主机编号,最后的掩码就是255.0.0.0。