子网
IP地址的划分
IP地址是一个32位编码的地址表示,格式形如a.b.c.d,其中a,b,c,d为十进制数,范围为0-255,因此IP地址又称为点分十进制表示,每个部分为8位,一共长度为32位。因此,IP地址理论上一共有2^32个IP地址(大约有40亿个),现在这些IP地址已经不够用了,所以在开发IPv6。
子网
子网的建设在于便于网络管理,例如一台IP地址为172.16.1.1的路由器连接着3台主机,IP地址分别为172.16.1.2、172.16.1.3、172.16.1.4。是不是想起了校园网的IP地址,那个172.16.1.1就是网关,那三个IP地址就是上网时用的内网IP。同理,172.16.1.1也可以看作某一个子网的内网IP,如此逐渐往上层走,直到公网IP,也就是那40亿个IP之一。而172.16.1.2、172.16.1.3、172.16.1.4,这些不直接相连的内网主机就形成云,和路由器的172.16.1.1接口一起形成一个子网。
是不是很熟悉,这就是校园网管理,一个路由器会管理它内网中的所有IP地址。可以看出,内网中的IP地址172.16.1.2、172.16.1.3、172.16.1.4有相同的前缀,即172.16.1.*,也就是32位IP地址中的前24位是相同的,因此,该内网中所有的IP地址表示为172.16.1.0/24。172.16.1.0/24表示了所有172.16.1.*形式的IP地址都在其子网内。
注:主机和路由器接口相连形成子网,这里的主机可以是另一个路由器的接口,也可以是主机
子网分配
有了子网的表示,那么接下来就是子网的分配,路由器接口的IP地址有限,分配的方式也就有限,需要根据子网的需求以及规模合理地分配IP地址。
网络地址的分配策略称为无类别域间路由选择(CIDR)。也就是前面所说的172.16.1.0/24,一般化表示为a.b.c.d/x,其中IP地址a.b.c.d最高的x位构成网络ID,其余的32-x位构成主机ID。网络ID可以通过IP地址与子网掩码进行与运算获得,因此相同网络ID的网络设备都在一个子网内(和之前一个意思,只是换了网络ID的说法而已)。这种组织方式也称为地址聚合。我们常用的子网掩码与IP地址进行与运算,可以得到子网的网络ID。
x的不同被分为不同类别的IP地址,x取值为8,16,24分别被称为A,B,C类IP地址。
子网通信
具有相同网络ID的计算机可以直接通信,而具有不相同网络ID的计算机需要经过一层或者多层路由,在路由转发的时候,也只关心网络ID,进而大大减少了转发的长度。在通信时,使用地址的最长前缀匹配,即路由器会通知与目的地址拥有最长前缀匹配的IP。
源主机和目标主机通信时,由于其不知道目标主机的子网掩码,只知道IP地址,因此,源主机会将IP地址与自己的子网掩码进行与运算得到网络ID,进而判断是否在一个网段内,即网络ID是否相同。
例如,A主机的IP地址为192.168.1.100/24,B主机的IP地址为192.168.2.100/16。A主机的网络ID为192.168.1.0(子网掩码255.255.255.0),B主机的网络ID为192.168.0.0(子网掩码255.255.0.0)。
A主机将B主机的192.168.2.100与255.255.255.0进行与运算后得到网络ID为192.168.2.0,与A不在同一个网段,因此,主机A认为主机B不可达,将包发给路由器。
B主机将A主机的192.168.1.100与255.255.0.0进行与运算得到网络ID为192.168.0.0,与B在同一个网段,因此,主机B认为主机A可达。
因此在内网中,B发出的包A可以收到,A发出的包B收不到。
子网主机数
子网设备个数可以通过网络ID进行计算,例如172.16.1.0/24构成的子网,由于前24位构成的网络ID是相同的,也就是子网中所有设备的IP地址前24位相同,因此,只有8位主机ID可以用来分配子网的设备,因此网络中的设备数量为$2^8-2=254$台,这里2预留的有特殊用途的主机IP。因此,需要根据子网的规模以及需求合理地分配IP地址。
划分子网
当大的网络a.b.c.d/x,要进行子网划分时,x位网络ID要向32-x位的主机ID借位,即网络ID位变多,主机ID位变少,减少了可用的IP。同理,合并子网时,主机ID向网络ID借位。
公式总结:
- 主机数=2^主机ID位-2
- 网络数=2^可变的网络ID位
- 网络ID=IP和netmask 相与
- 划分子网数=2^网络ID向主机ID借的位数
- 划分子网损失IP数=2*(划分子网数-1)(因为每段子网中的第一个IP地址用来表示网络位,而最后一个IP地址都被用来表示本网段中的广播。)
举个栗子
(1)172.17.0.100/26
网络ID的位数为26,主机ID的位数为6
- 主机数=2^6-2=62
- 子网掩码为26个1,即11111111.11111111.11111111.11000000,转为十进制为255.255.255.192。
- 网络ID为172.17.0.01(000000),即172.17.0.64
(2)110.110.244.100/22
- 子网掩码为22个1,11111111.11111111.11111100.00000000,即255.255.252.0
- 主机数为:2^(32-22)-2=1022个
- 网络ID的值为:110.110.244.0
(3)10.100.222.100(子网掩码:255.255.248.0)
- CIDR表示:10.100.222.100/21
- 主机个数为:2^*(32-21)-2=2046个
- 网络ID为:10.100.216.0,即10.100.222.100与子网掩码做与运算
(4)172.200.249.200/22,划分16个子网
划分16个子网,网络ID要向主机ID借4位(因为2^4=16)
- 每个子网的子网掩码为26个1,即11111111.11111111.11111111.11000000,255.255.255.192
- 子网的主机数为:2^(32-26)-2=62
- 子网最小的网络ID为(即借来的网络ID位置处的子网掩码全为0):11111111.11111111.11111100.00000000,即为172.200.248.0/26
- 最大的子网IP范围为,即借来的网络ID位置处的子网掩码全为1,子网掩码为11111111.11111111.11111111.11000000,网络ID为172.200.249.192/26,对应的IP范围为172.200.249.193-172.200.249.254,注意开头的IP地址为193开始,最终到254。
(5)10.0.0.0/8 划分32子网,对第10个子网划分64个子网
对10.0.0.0/8划分32个子网,需要8位网络ID借5位,即网络ID为13位。由于第10个子网为10.72.0.0/13。(这里的72,即为借来的5位从00000开始依次加一加10次得到的01001,即IP地址第二段为01001000)。
因此,该问题等价于对10.72.0.0/13划分64个子网,即13位网络位再向主机位借6位主机位。
- 子网掩码为19个1,即11111111.11111111.11100000.00000000,即255.255.224.0
- 每个子网的主机数为:2^(32-19)-2=8190
- 最小的子网ID为:子网掩码中借来的6位全为0,即11111111.11111000.00000000.00000000,该子网掩码与10.72.0.0做与运算得到最小的网络ID吗,即为10.72.0.0
- 最大的IP地址范围为,借来的网络为的子网掩码全为1,即11111111.11111111.11100000.00000000,最后一个子网的网络ID为10.72.224.0/19,因此,IP地址范围为10.72.224.1-10.72.255.254(注意可用IP的范围)。