"子网" 掩码, 顾名思义, 它就是拿来划分子网的, 更准确的说, 划分子网的同时, 还能通过它知道主机在子网里面的具体 ip 的具体地址.
用途
那么划分这个子网有什么用呢?
方便管理, 不同的子网可以相互隔离
我们知道, IPv4 的 ip 地址资源比较紧张, 实际上整个互联网就是一个巨大的局域网, ip 地址有限, 那么通过划分子网, 如何再在子网里面分配 ip 地址给子网的主机, 这个时候同一一个 ip 就可以给一整个子网所共用, 就解决了互联网 ip 不够的问题
原理
既然要划分子网, 要有一个规则, 告诉路由器, IP 的哪一部分是表示子网, 哪一部分表示我在这个子网里面具体的地址
所以, 实际上 IP 细来讲又分为三部分: 网络部分 (network) 子网段部分 (subnetwork) 和主机部分(host)
一般大家喜欢把网络部分和子网部分合并成为网络地址(网络号), 把子网看做是网络的一部分, 主机部分称为主机地址(主机号)
通俗理解:
网络号(subnetwork), 表示我住哪个小区
主机号(host), 表示我家门牌号是多少
或者说网络号就是我们平时打电话的区号, 主机号是你的电话号码, 如 010-80220110, 010 是网络号, 80220110 是主机号
我们平常看到的 192.168.0.x 这样的 IP, 这是给我们看的地址, 计算机内部计算把 ip 变成二进制, 每一个 IP 被 4 个点分成 4 部分, 每一部分有 8 位, 也就是一个 IP 实际上是一个一共 32 位的二进制数
如 192.168.0.3 换成二进制是 11000000 10101000 00000000 00000011
然后, 这个 32 位的数根据需要被分为五大类分, 由 IANA(全球互联网地址指派机构)配给大家使用
IP 地址的分类:+ 共分五类, A 类, B 类, C 类, D 类和 E 类, 人们常用的 IP 地址属于前三类. jpg
一般来说这五类的用途大致分为:
A 类保留给政府机构(0.0.0.0 到 127.255.255.255)
B 类分配给中等规模的公司(128.0.0.0 到 191.255.255.255)
C 类分配给任何需要的人(192.0.0.0 到 223.255.255.255)
D 类用于组播(224.0.0.0---239.255.255.255)
E 类用于实验(240.0.0.0---247.255.255.255)
A,B,C 三类中 IP 地址 = 网络地址 + 主机地址, 而 D,E 两类不区分网络地址和主机地址
特殊说明:
(1)A 类中的 10.X.X.X 是私有地址; 127.X.X.X 是保留地址
(2)B 类中的 172.16.0.0~172.31.255.255 是私有地址
(3)C 类中的 192.168.X.X 是私有地址
那么, 是怎么样计算出来网络号和主机号的呢?
子网掩码会把一个 IP 地址按这个划分成这两部分, 计算方法是通过把 IP 地址变成二进制, 子网掩码也转成二进制后, 两个二进制数按位做 与运算.
比如, 一个 C 类地址, ip: 192.168.0.3 , 子网掩码是: 255.255.255.0
第一步先转而进制
ip: 192.168.0.3> 11000000 10101000 00000000 00000011
网掩码: 255.255.255.0> 11111111 11111111 00000000 00000000
2. 然后两个二进制按位做与计算
- 11000000 10101000 00000000 00000011
- &
- 11111111 11111111 00000000 00000000
- =
- 11000000 10101000 00000000 00000000
3. 把这个而结果 : 11000000 10101000 00000000 00000000 每个 8 位转化回变成: 192.168.0.0
192.168.0.0 这个就是我们的网络段(包括了上面说的网络部分和子网部分)
3 就是我们的主机号(主机在子网络里面的标识)
CIDR(无类别域间路由)/VLSM(可变长子网掩码)
上面这个算法看起来有点难理解, 另外一种 CIDR(无类别域间路由)/VLSM(可变长子网掩码)的表示法跟容易看懂, 如下面这个:
192.168.0.3/24
24 表示这个 ip 的 32 位二进制数的前 24 位是网络标识的前缀, 剩下的 8 位是主机标识, 严格来, 剩下的 8 位里面, 全部是 0 是这个网络的标识, 全部是 1 是这个网络的子网内广播地址, 其他是这个子网网络的可用地址
192.168.0.3 => 11000000 10101000 00000000 00000011
网络标识的前缀: 11000000 10101000 00000000 --(前 24 位)换算位 10 进制: 192.168.0
网络标识: 11000000 10101000 00000000 00000000 -- 剩下 8 位全是 0, 转 10 进制是: 192.168.0.0
广播地址 11000000 10101000 00000000 11111111 -- 剩下 8 位全是 1, 转 10 进制是: 192.168.0.255
大家看, 这个就很容易理解了, 除了网络标识和广播地址这两个特殊地址, 剩下 8 位里面其他二进制数就是其他主机的标识.
实际上, 这个 192.168.0.3/24 , 前 24 位全 1, 就是等于 255.255.255.0, 这个就是这个网络的子网掩码, 而无类别域间路由是基于可变长子网掩码 (VLSM) 来进行任意长度的前缀的分配的, 所以这个 24 也可以变成其他数, 如 16
192.168.0.3/16
只有前 16 位是网络, 后面是地址 16 标识, 换算回来就是
192.168.0.0 是网络标识(后 16 位二进制全位 0)
192.168.255.255 这个是域内广播地址(后 16 位二进制全为 1)
那么 192.168.0.0 - 192.168.255.255 间所有的其他地址就是这个子网的可以容纳的主机地址
所以这个子网的地址数量明显比 192.168.0.3/24 那个要大多了
那么的子网掩码也很容易计算, 就是前面 16 位全是 1 后面 16 位全是 0, 换算成 10 进制就是 255.255.0.0
更多的 CIDR/VLSM 例子:
2020-03-05 22-33-24 的屏幕截图. PNG
来源: http://www.jianshu.com/p/8029f74fbfdf