子网划分时利用IP地址系统把物理网络分解为更小的逻辑实体(称为子网)的一种手段。
IP地址必须同时表明主机以及主机所在的网络。在上一篇讲到IP地址分类系统可以让我们区分地址中的网络部分和主机部分。但是,这种地址分类系统的灵活度不够,于是子网划分出现了。子网划分可以将网络分解称为子网的较小单元。子网的概念最早源自于地址分类系统,而且在A类、B类、C类网络中能够以很好的展现。
上一篇讲到,数据报到达网关,然后传输到99.0.0.0地址空间。但如果要考虑数据报在传输到99.0.0.0地址空间之后是如何进行传递的,这个图示会变得非常复杂。为了在大型网络里实现更高效得数据传递,地址空间被划分为较小的网段。子网划分就是在网络ID之下提供的第2层逻辑组织。路由器能够把数据报发送到网络里的某个子网地址,而当数据报到达子网后,就会被ARB解析为物理地址。 那么子网地址从何而来呢?32位的IP地址不是被划分为网络ID和主机ID了吗?TCP/IP的设计者借用了主机ID里的一些位来形成子网地址。一个名为子网掩码的参数知名了地址中多少位用于子网ID、保留多少位作为实际的主机ID。
子网掩码是一个32位的二进制值,它的形式能够说明与之相关的IP地址的子网ID。下图为一个IP地址/子网掩码对。子网掩码里的每一位代表IP地址中的一个位,用1表示IP地址中属于网络ID或子网ID的位,用0表示IP地址中属于网络ID或子网。 下图为子网网络和非子网网络的对比: 数据报使用网络ID字段被路由器到网络,而这个网络ID是由地址类别所决定的。当数据报到达网络之后,它使用子网ID路由到正确的子网。在到达这个网段之后,再使用主机ID将数据报传输到正确的计算机。 网络管理员通常把子网掩码作为TCP/IP配置的一部分分配给每个主机。如果主机通过DHCP获得IP地址,DHCP服务器在分配IP地址的同时,还会分配一个子网掩码。
利用针对IP地址的地址转换技术,可以把二进制子网掩码转换为点分十进制形式。对应于地址中网络ID和子网ID的子网掩码位是1,表示IP地址里主机ID的掩码位是0。 例如这个掩码: 11111111.11111111.11110000.00000000 对应的十进制形式为255.255.240.0 子网ID的分配取决于你的配置。如果你的计算机是一家ISP网络的一部分,则很可能会通过DHCP接收到一个IP地址和一个子网掩码。
由于地址分类系统相对而言不够灵活,需要使用子网划分系统来更细致地控制地址空间。而无类别域间路由时一种更加流畅和灵活的技术,可以在路由表中定义地址块。CIDR系统不依赖于预定义的8位,16位,24位网络ID,而是使用一个名为CIDR前缀的值指定地址中作为网络/子网ID的位数。这个前缀有时也被称位变长子网掩码。 CIDR标记使用一个斜线(/)分隔符,后面跟一个十进制数值来表示地址中网络部分所占的位数。例如,在CIDR地址205.123.196.183/25中,/25表示地址中的25位用于网络,相应的子网掩码就是255.255.255.128。