深入理解子网掩码的作用

今天有学生问起子网掩码的作用,干脆写下这篇文章,算是对子网掩码的一个介绍。

   无论在WINXP中还是LINUX中,每个网卡都得配置一个IP地址,与IP地址一起设置的必定还有子网掩码、默认网关、DNS服务器地址等。其实这四个要素中,必须要设置的只有IP地址和子网掩码,默认网关、DNS服务器地址有时可以不设。

  根据TCP/IP知识,IP地址分为A、B、C三大类,A类IP的第一个字节范围是1-126,B类IP的第一个字节范围是128-191,C类IP的第一个字节范围是192-223,所以看到192.X.X.X肯定是C类IP地址,这个时候,不需要子网掩码,因为大家根据IP地址的第一个字节的范围就能够推导出该IP属于A类还是B或C类。这时IP叫有类IP。

一、子网掩码的第一个作用是分割网络。
  但由于计算机数量不断增加,人们发展IP地址数量很快要不够用了,而有类IP的IP分类方法会造成许多IP地址的浪费,如某公司申请到一个A类IP地址范围,其有效IP数量可达2^24-2,即1600万之多,而公司中不可能有什么多电脑。于是人们想把着能不能把一个大的网络分割为若干个小网络。那如何来区别不同IP地址是否在同一网络呢?这里就需要使用子网掩码了,子网掩码与IP地址一样也是一个32位的二进制数,每个IP都规定一定子网掩码,把IP地址与子网掩码进行二进位的或,得到的就是网络号,如果网络号相同就表示二台电脑在同一网段,可以直接通讯,不需要路由器帮忙。这时的IP地址由于需要靠子网掩码来计算网络号,已经不再存在A、B、C类网络的概念了,这时的网络叫无类网络。我们也可以这样理解,需要靠IP地址的第一个字节数据的范围来区别网络号的称有类网络,靠子网掩码来计算得到网络号的叫无类网络。目前我的WINXP和LINUX在指定IP的同时都必须要指定一个子网掩码,所以都属于有类网络。

二、子网掩码的第二个作用是计算网络号
例1:A电脑IP地址为192.168.1.1,子网掩码为255.255.255.0;B电脑IP地址为192.168.1.2,子网掩码为255.255.225.0。大家都知道这二台电脑在同一网段,相互能PING通。

例2:A电脑的IP地址为192.168.1.1,子网掩码为255.255.255.0;B电脑的IP地址为192.168.2.1,子网掩码为255.255.0.0。大家分析一下二台电脑能相互PING通吗?
分析:这个问题需要大家理解子网掩码在网络通讯时的作用。不能简单的认为A电脑处在192.168.1.0网段,B电脑处在192.168.0.0网段,所以不能PING通。正确的分析应该如下:
⑴ 每台电脑事先会把自己IP和自己的子网掩码进行“与”操作,得到自己的网段号,如A电脑处在192.168.1.0网段,B电脑处在192.168.0.0网段。
⑵ B电脑向A电脑发数据包时,会把A电脑的IPB电脑的子网掩码进行“与”操作,得到网络号是192.168.0.0,B电脑会认为A电脑与自己在同一网段,所以数据包会顺利发出。
⑶ A电脑由于与B电脑在同一网段,肯定能收到B电脑发出的数据包,由于PING操作要求A电脑回应一个响应包。这样A电脑会把B电脑的IP与A电脑的子网掩码进行“与”操作,得到网络号192.168.2.0,A电脑发现网络号与自己所处的192.168.1.0不在同一网段,由于A电脑目前没有设置默认网关,所以对该数据包将进行丢弃操作,结果B电脑当然就无法收到A电脑的回应包,所以B电脑上会显示“Request timed out”,即网络超时。
⑷ 如果在A电脑上去PING B电脑,根据前面的分析,A电脑会认为B电脑与A电脑不在网段,而A电脑又没有设置默认网关,所以会显示“Destination host unreachable”,即目标主机不可达。

迮勤
2008.1.21