一、Subnetting(子网划分)
1、介绍
将原本A、B、C类等分类地址中的主机部分(Host ID),进一步划分为多个子网,解决IP地址利用率低和两级IP地址不够灵活的问题。
- 子网划分有助于对外部路由器隐藏组织(公司、学校、事业单位等)内部网络
- 外部网络无法知晓组织内部的子网划分,进入组织的网关后,由网关路由器进行寻址
- 子网划分有助于减少网络中路由表的条目
- 外部网络,只需要存储一条到达到达网段的路由即可
2、举例
以B类地址为例:
- 网络地址为172.16.0.0
- 掩码为255.255.0.0
将Host ID的高2位用于划分子网,则:
- Subnet ID范围:00、01、10、11
- 子网个数:4(2^2)
- 此时子网掩码变为:255.255.192.0
- 网络地址:全0的主机地址,如172.16.0.0
- 广播地址:全1的主机地址,如172.16.63.255
但是,划分子网是要付出代价的。本来一个B类IP地址可以容纳65534(2^16 - 2)个主机地址,划分出2位长的Subnet-id字段后,4个子网最多有4 x (2^14 - 2) = 65528个主机地址,比不划分子网时要少6个。
3、补充
子网个数、主机个数、块大小到底如何计算?
- 子网个数 = 2^m(其中m为subnet ID位数,如上例为2)
- 主机个数 = 2^n-2
- n为Host ID位数,如上例为14
- 去掉全1和全0的主机地址
- 块大小(block size) = 256 - 非255或0的十进制子网掩码
- 如上例,block size = 256 - 192 = 64
- 第一个子网网络号从0(在非255或0的十进制子网掩码位对应的位置)开始,后续各子网网络号以block size依次递加。此例中,四个子网段分别为172.16.0.0/18、172.16.64.0/18、172.16.128.0/18和172.16.192.0/18。
二、Subnet Mask(子网掩码)
1、介绍
子网掩码:由1和0组成的二进制数,用于标识哪些主机地址(host ID) 被用作 子网地址(Subnet ID),便于将大段网络划分为多个物理网络
即:
IP 地址 = 网络号(network ID) + 主机号(host ID)【包括:Subnet ID + host ID】
子网掩码(Subnet mask)
- 1位:表示 网络号(network ID) +子网号(Subnet ID )
- 0位:表示 主机号(host ID)
如上图所示:
- 子网掩码1:255.255.255.0
- 子网掩码2:255.255.255.192
2、 举例
1)子网掩码
举例:bsdi
- IP:140.252.13.66
- 子网掩码:255.255.255.224
经过作子网掩码标识后,原 IP 地址被划分为:
- network ID:140.252
- Subnet ID:13.64
- host ID:2
2)IP路由基于子网掩码的比较
假设本机地址为:140.252.1.1(B类地址),子网掩码为255.225.255.0(8位子网号、8位主机号)
- 如果目的地址为:140.252.1.22,网络号140.252相同,子网号1也相同,主机号不相同。说明是发送给同一子网的其它主机
- 如果目的地址为:140.252.4.5,网络号140.252相同,子网号不相同。说明是发给相同网络号的其它子网。
- 如果目的地址为:192.43.235.6,网络号不相同。说明是发送给不同网络
三、Subnet Addressing(子网寻址)
所有的主机都要求支持:子网寻址(Subnet Addressing)
- 外部路由器存在一条到达 140.252 网段的路由,当需要到达140.252网络号中的任何主机,外部路由器只要到达 网关140.252.104.1 即可(意味着只需要一条路由,就可以到达140.252中的所有主机)
- 子网划分对子网中的路由器是可见的,比如要到达目的地址为 140.252.57.1 ,网关(gateway)路由器知道子网号为 57 ,报文需要发送给kpno
- 报文到达kpno后,被送往 R55,然后再被送到 R57
四、计算题
为了更好的理解子网掩码、主机个数、子网个数、子网划分,可查看 CCNA子网掩码计算题
四、参考资料
1、书籍《TCP/IP Illustrated, Volume 1: The Protocols, W. Richard Stevens.》
2、子网划分-华为技术支持
3、子网划分实例与讲解-51cto
4、CISCO - IP Addressing and Subnetting for New Users