1 子网概述
1.1 从两级 IP 地址到三级 IP 地址
在 ARPANET 的早期,IP 地址的设计确实不够合理:
- IP 地址空间的利用率有时很低
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
- 两级的 IP 地址不够灵活
所谓两级的IP地址指的是如下网络号与主机号两级
三级 IP 地址:
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址
- 这种做法叫做划分子网 (subnetting) ,划分子网已成为互联网的正式标准协议
划分子网的基本思路:
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位
- IP地址 ::= {<网络号>, <子网号>, <主机号>} 如下图
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器,然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网,最后就将 IP 数据报直接交付目的主机
1.2 子网掩码
- 子网掩码就是用来计算某个IP地址所属网段的工具,通过与目标IP地址进行与
AND
运算,得到的结果就是子网号 - 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分,子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器,路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码,若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码
2 例题:按要求确定子网和子网掩码
2.1 题干
- 已分配了一个C类地址:
192.168.5.0
,假设需要20个子网,毎个子网有5台主机试确定各子网地址和子网掩码。
2.2 划分过程
- 对于这个问题,我们首先要确定的是,要从C类地址中的8位主机号中分出多少位来交给子网号使用,现在需要20个子网,若分出4位作为子网号,则 2 4 = 16 2^4=16 24=16 不够,若分出5位作为子网号,则 2 5 = 32 2^5 = 32 25=32,去掉全为0和全为1的子网,那么可分配的子网号有 30 30 30 个,可以满足要求,即 2 4 < 20 < 2 5 2^4<20<2^5 24<20<25,最后选择分出5位来交给子网号使用
- 检测剩余的位数能否满足对每个子网中主机个数的要求,由1可知可用于主机号分配的位数只有 8 − 5 = 3 8-5 = 3 8−5=3 位,即 2 3 = 8 2^3 = 8 23=8 每个子网中可以提供8台主机,而 8 > 5 + 2 8> 5+2 8>5+2(+2是因为主机号中全为0和全为1的主机号是不能分配的),所以得出主机号为3位是可以满足要求的
- 选择5位作为子网号后,子网掩码的最后8位为
11111000
,十进制为248
,从而推出子网掩码为255.255.255.248
- 接下来看看哪些子网地址是可用的,可以看出子网地址可在8、16、24、32、…、240共30个地址中任意选择20个来使用
- 为了避免网络和子网号混淆,所以我们一般不使用子网号全为0的情况,即
192.168.5.0
是不使用的,那么第一个可使用的子网号为192.168.5.00001000
,全十进制表示为192.168.5.8
,第二个可使用的子网号为192.168.5.00010000
,全十进制为192.168.5.16
,依次类推 - 为了避免子网号和广播地址混淆,所以全为1的子网号也不使用,即不使用
192.168.5.11111000
,那么最后一个可使用的子网号为192.168.5.11110000
,全十进制为192.168.5.240
- 所以所有可以使用的子网个数为 2 5 − 2 = 30 2^5-2 = 30 25−2=30 个,每个子网内可使用的主机号为 2 3 − 2 = 6 2^3-2 = 6 23−2=6 个