为了完成路由选择,每个数据链路(网络)都必须有一个惟一的地址;
另外,数据链路上的每台主机也必须有一个地址,这个地址不仅标识主机为一个网络成员,还可以把主机与网络上的其他主机区分开来。
粗放使用IPv4地址
在目前位置,一个A类、B类或C类地址仅仅能用在一个单一网络中。
为了建立一个网络,每个数据链路都必须使用不同的地址,以便这些网络可以被惟一地标识。
如果每一个数据链路都使用一个单独的A类、B类或C类地址,那么即使使用尽所有的IPv4地址,也只能给少于1700万个数据链路分配地址。
所以这样使用资源是不明智滴。
使用子网实现梯度使用
使A类、B类或C类地址实用化的惟一方法是对主网地址进行划分,例如将172.21.0.0划分为子网地址。
注意到两个事实:
- IPv4地址的主机部分可以随意使用
- IPv4地址的网络号由分配给接口的地址掩码确定
对于一个B类地址172.21.0.0,标准的地址掩码是16位。现在为了对子网进行划分,这里使IP地址的前24位都被解释为网络位。换句话说,掩码使路由器和主机把读取的前8位主机网络作为网络地址的一部分。
结果是:
- 主网络地址用于整个网络,而每一个数据链路则变为一个子网(subnet);一个子网是一个主A类、B类或C类地址空间的一个子集。
- 现在IPv4地址包括了3个部分:网络部分、子网部分和主机部分。
- 地址掩码现在变为子网掩码,或比标准掩码长的掩码。
实例
现在地址的前两个八位组依然是172.21,但第3个八位组——主机位已经由子网位代替——的变化范围位0~255。
下图中的网络有子网1、2、3、4和5(172.21.1.0~172.21.5.0),图1中用红色圈圈圈出来的就是5个子网咯。
图1 子网划分案例,子网掩码使得单一网络地址可以用于多个数据链路
注意事项
比如对于B类地址172.21.0.0来说,如果以第三个八位组作为子网划分依据,那么这样就有172.21.0~172.21.255一共256个子网。但我们需要注意的是并不是其中所有的子网都可以实际拿来使用的。
原因:
并不是所有的路由选择协议都支持子网地址,如果子网位全为0或者全为1。
因为这些协议是有类别化协议,它们并不能区分一个全0子网和主网络号。
例如,在图1中,子网0为172.21.0.0;而主网IP地址也为172.21.0.0。没有更多的信息来区分二者。
同样,有类别路由选择协议也不能区分全1子网的广播地址和一个所有子网的广播地址。
例如,图1中全1子网为172.21.255.0,对于这个子网,广播地址是172.21.255.255,但是这也是主网172.21.0.0的所有子网上所有主机的广播地址。
第一版的RIP协议和IGRP协议都是有类别路由选择协议,不能区分上述地址。无类别路由选择协议则可以真正地使用全0或者全1子网。
对子网的理解
类似图1中,对B类地址的第3个八位组进行子网划分是非常普遍的。但是会出现其他错误的表述:
"B类地址使用C类地址掩码"或者"将B类地址划分为C类地址",这两种表述都是错误的,会引起会子网涉及不正确的理解。
对图1的解释应该是:
"使用8位进行子网划分的B类地址"或者"一个带有24位掩码的B类地址"。
可以用以下3中格式中的任何一种表示子网掩码:
点分十进制:255.255.255.0
位计数:172.21.0.0/24
十六进制:0xFFFFFF00
与点分十进制相比,位计数格式可以更清楚地描述掩码的实际作用。