网掩码是每个网络工程师必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。根据寡人在不同公司面试时的考试来看,一般的公司招聘网络人员基本都会考这类题目。但是寡人发现,身边很多做网络的朋友,对子网掩码的理解还是有一种半生不熟的感觉。下面,把自己掌握的、网络搜集的关于子网掩码的资料整理出来,供大家学习参考。
想要了解子网掩码,得先了解IP的结构,IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。那么IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。
什么是子网掩码
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码的设定必须遵循一定的规则。与IP地址相同,子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示;右边是主机位,用二进制数字“0”表示。
例如IP地址为“192.168.1.1”和子网掩码为“255.255.255.0”的二进制对照应该为:
192.168.1.1 = 11000000 10101000 00000001 00000001
255.255.255.0 =11111111 1111111 11111111 00000000
在掩码中,其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;“0”有8个,代表与此相对应的IP地址右边8位是主机号。这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。
默认子网掩码
在Windows系统中,如果给一个网卡指定IP地址,系统会自动填入一个默认的子网掩码:255.255.255.0,使用该子网掩码,网络内最大可容纳254台设备,如果一个网络的规模不超过254台设备,采用“255.255.255.0”作为子网掩码就可以了。
IP地址的子网掩码设置不是任意的。
子网掩码设置过大:也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的判断而认为目的机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目的机,导致网络传输错误;
子网掩码设置过小:那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。
根据以上两个原因,子网掩码应该根据网络的规模进行设置。
说了这么多,下面说说实际计算问题:
子网掩码快速算法
大家都应该知道2的x次方值吧?下面是2的0次到10次方的计算值分别是:
1 2 4 8 16 32 64 128 256 512 1024。
实例
如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip位址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。到这一步,你就可以算屏蔽了。
这个方法就是:最后一位屏蔽就是256减去你每个子网所需要的ip位元址的数量,那么这个例子就是256-8=248,那么算出这个,你就可以知道那些ip是不能用的了,
依此类推:0-7,8-15,16-23,24-31,……,写在上面的0、7、8、15、16、23、24、31……都是不能用的,你应该用某两个数字之间的IP,那个就是一个子网可用的IP。
再试验一下,就拿200台机器分成4个子网来做例子吧。
200台机器,4个子网,那么就是每个子网50台机器,设定为192.168.10.0,C类的IP,大子网掩码应为255.255.255.0,对吧,但是我们要分子网,所以按照上面的,我们用32个IP一个子网内不够,应该每个子网用64个IP(其中62位可用,足够了吧),然后用我的办法:子网掩码应该是256-64=192,那么总的子网掩码应该为:255.255.255.192。不相信?算算:0-63,64-127,128-191,192-255,这样你就可以把四个区域分别设定到四个子网的机器上了。