一、干什么用的
首先, IP地址分成两部分,网络位和主机位,我们可以把IP地址看作学号,学校把一串学号分给一个学院,学院再分给每个人,也可以按班再分给个人
IP地址根据容纳的地址数量有如下划分,这就是分类网络,用于解决IP地址浪费的问题

子网其实是在分类网络出现之前,允许一个单一的站点能拥有多个局域网。即使后来引入了分类网络后,我们依然可以把所有主机分为几个子网,可以类比于班级
这就可以引出子网掩码了,我们可以把 192.168.1.0 当作一串学号分给通信学院 2018 级,可以分配给 256 个人(不考虑不可用的IP号),一共四个班,每个班64人
- 192.168.1.0 - 192.168.1.63 给一班
- 192.168.1.64 - 192.168.1.127 给二班
- 192.168.1.128 - 192.168.1.191 给三班
- 192.168.1.192 - 192.168.1.255 给四班
我们可以使用子网掩码来表示每个班的学号段
- 一班 192.168.1.0/26
- 二班 192.168.1.64/26
- 三班 192.168.1.128/26
- 四班 192.168.1.192/26
二、怎么使用
上面的 /26 就是子网掩码,子网掩码其实形式上和IP地址一样,在IPv4里都是4组8位二进制数,只是连续的1和0
/26 是一种简写方法,叫做无类别域间路由(CIDR)表示法。表示从左到右连续26个1,其余为0,也就是6个0。用一般形式写出来就是255.255.255.192,192=256-2
为什么可以用192.168.1.0/26来表示一班的学号段?
把192.168.1.0和192.168.1.63换成二进制,可以很容易看出这两个前26位都是相同的,换句话说就是只有后6位是不同的,00000000到00111111。把192.168.1.64和192.168.1.127换成二进制也是一样的,01000000到01111111。而这6位的不同就足以表示64个学号,其实有点像上面的分类网络,每个班也就前几位不一样,分为了00,01,10,11四个班,可以叫做子网号
为什么子网掩码是26?这就牵扯到如何计算子网掩码了。
- 根据子网数
- 4个班,就需要2位不一样,00,01,10,11四个班,就是排列一下,如果是5个班就需要3位不一样了。而不一样的这几位恰巧要作为子网号,用来表示不同子网,子网号连同网络号都默认为1,其余为0。所以子网掩码为26=24+2
- 根据子网需要容纳的主机数
- 由于实际应用中,192.168.1.0和192.168.1.255是不会分配主机的。所以这里我们假定每个班只有60人。前面说了,每个班每个人学号的不同就是最后几位的区别,不同的这几位排列起来就是个数。60肯定也要当作64来算,需要6位,所以子网掩码为26=32-6
同理,我们也可以根据子网掩码来计算
- 最大有效子网数
- 就用192.168.1.0/26来举例,本身C类网络号就占来24位,只留下来2位用作子网号,所以最大有效子网数4=2
- 最大可用主机数
- 最大可用主机数需要减去不可用的两个,但我觉得并不是每一个子网都需要这么做。直接看为0的那几位,最大可用子网络62=2-2
- 子网络的起始地址
- 只需要知道每个子网络的主机数即可,这里可以不用考虑不可用的IP地址
三、为什么需要
发现没有,同一个班的学生学号和子网掩码进行按位与运算(同时为1才为1,否则为0),结果是一样的,我们就知道这是一个班的学生了,这是最大的作用,可以用来判断是否在同一子网中,同一子网就能 Ping 通。
现如今,每个IP不管是不是处于子网络,都必须默认一个子网掩码
- A类:/8
- B类:/16
- C类:/24
- D类和E类没有定义子网掩码,但是可以用/4修饰
这时的作用就是快速判断网络号,只需要按位与一下即可
- 这里有点问题,网络号并不包括前面的前缀,后面题的解释我可能都说错了。
- A类是0,7位网络号
- B类是10,14位网络号
- C类是110,21位网络号
附、分类网络
- A类地址(0.0.0.0到127.255.255.255),可以使用的网络号有2-2个(全0的网络号表示本网络,127的网络号用于本地软件环回测试,说人话就是不通往外网,127.0.0.1作为本地机,结合端口号可用于本地程序间通信)。每个网络号可以分配给2-2个主机,可用的主机地址总是2N - 2(N是所用的位数,全0表示当前主机,比如192.168.1.0,全1表示该网络上的所有主机,比如127.255.255.255)
- B类地址(128.0.0.0到191.255.255.255),可以使用的网络号有2-1个(128.0不使用)。每个网络号可以分配给22个主机
- C类地址(192.0.0.0到223.255.255.255),可以使用的网络号有2-1个(192.0.0不使用)。每个网络号可以分配给2-2个主机,我们一般就是用的C类
- D类地址(224.0.0.0到239.255.255.255),用于组播
- E类地址(240.0.0.0到255.255.255.254),保留地址,一般不用,255.255.255.255 是广播地址。
- 私有地址,一般用于内网 IP
- 10.0.0.0~10.255.255.255 = 10.0.0.0/8
- 172.16.0.0~172.31.255.255 = 172.16.0.0/12
- 192.168.0.0~192.168.255.255 = 192.168.0.0/16
