linux网络基础---子网掩码和子网划分
子网掩码
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
例:我们常用的内网IP地址:192.168.0.100,默认子网掩码:255.255.255.0,指明前3个字节是网络位,第4个字节是主机位。两者可以写成:192.168.0.100/24 (前3个字节,每个字节是8位)
IP地址是以网络号和主机号来标示网络上的主机的,我们把网络号相同的主机称之为本地网络,网络号不相同的主机称之为远程网络主机,本地网络中的主机可以直接相互通信;远程网络中的主机要相互通信必须通过本地网关(Gateway)来传递转发数据。
为什么要使用子网掩码?
两台主机通信,要先判断是否处于同一网段,如果相同,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。
A主机要与B主机通信,A和B各自的IP地址与A主机的子网掩码进行And与运算,看得出的结果:
1、结果如果相同,则说明这两台主机是处于同一个网段,这样A可以通过ARP广播发现B的MAC地址,B也可以发现A的MAC地址来实现正常通信。
2、如果结果不同,ARP广播会在本地网关终结,这时候A会把发给B的数据包先发给本地网关,网关再根据B主机的IP地址来查询路由表,再将数据包继续传递转发,最终送达到目的地B。
子网掩码和IP地址的逻辑与运算
运算规则:0&0=0;0&1=0;1&0=0;1&1=1;例:
IP地址:192.168.1.120
子网掩码:255.255.255.0
11000000 10101000 00000001 01111000
11111111 11111111 11111111 00000000
———————————————————
11000000 10101000 00000001 00000000
即计算出来的网段是192.168.1.0
为什么要划分子网?
比如我们使用192.168.0的网段,该网段最大能容纳253个主机(主机ID位0特指这个网段,主机ID位全为1指广播地址即该网段所有主机,还有一个网关地址如192.168.0.254,所以256-3=253),而我们只有50台主机,如果不划分子网的话,就会造成地址浪费,降低性能。子网划分的好处:
1.避免地址产生浪费
2.降低广播风暴问题
3.降低网络拥塞,减轻路由器的压力。
子网划分的计算方法
原理:借位计算。
①将一个大的子网拆分成多个小的子网
②借用主机位,变为网络位
③调整划分的网络子网掩码
④获得每个子网的主机范围
/24 代表255.255.255.0
/25 代表255.255.255.128
解释:向主机ID借一位,255.255.255.0000 0000 ===》255.255.255.1000 0000
依次类推:
/26 代表255.255.255.192,255.255.255.0000 0000 ===》255.255.255.1100 0000 借两位
/27 代表255.255.255.224,255.255.255.0000 0000 ===》255.255.255.1110 0000 借三位
/28 代表255.255.255.240
/29 代表255.255.255.248
/30 代表255.255.255.252
/31 代表255.255.255.254
/32 代表255.255.255.255
选定的子网掩码会创建几个子网?
2^x个,x为子网掩码借用的主机位数。
每个子网能包含几台主机?
2^y-2个,y为剩余的主机位数,-2是将主机位全为0或1的两个去掉。
计算子网的步长(增量)
如 /26 是255.255.255.192,子网的步长即为256-192=64
实例1:
将192.168.0.*的网段划分为4个子网
因为4=2^2,所以要向主机ID借2位,也就是/26
子网的步长=256-192=64,所以合法的子网为0 64 128 192
实例2:
公司有5个部门,分别有5、10、12、20、50台电脑,使用10.10.1.*/24网段,请划分子网。
按人数从多到少设部门为ABCDE(这里暂不计算网关,所以每个网段还要+2数目即网段位和广播地址位):
A:50+2 < 2^6=64 即借8-6=2位,子网掩码/26即255.255.255.192,步长256-192=64,地址范围10.10.1.[0-63]
B:20+2 < 2^5=32 即借8-5=3位,子网掩码/27即255.255.255.224,步长256-224=32,地址范围10.10.1.[64-95]
C:12+2 < 2^4=16 即借8-4=4位,子网掩码/28即255.255.255.240,步长256-240=16,地址范围10.10.1.[96-111]
D:10+2 < 2^4=16 即借8-4=4位,子网掩码/28即255.255.255.240,步长256-240=16,地址范围10.10.1.[112-127]
E:5+2 < 2^3=8 即借8-3=5位,子网掩码/29即255.255.255.248,步长256-248=8,地址范围10.10.1.[128-135]