CIDR引入前的子网划分与超网技术相关技术问询
嘿,这个问题问到点子上了,正好戳中了早期IP网络从「类别化」转向「无类别化」的核心差异点。我来给你拆解清楚:
CIDR之前能不能实现任意前缀(比如192.0.0.0/7)?
完全不行。1993年CIDR出现前,整个IP网络遵循**类别化子网划分(Classful Subnetting)**规则:只能在所属类别的「主机位」范围内拆分子网,绝对不能动前面的「类别网络位」。比如192.x.x.x属于C类,默认网络位是24位(/24),你最多能把主机位再拆分出子网位(比如/25、/26直到/30),但绝不能把网络位缩减到24位以下——像/7这种跨类的前缀属于「超网(Supernetting)」概念,是CIDR才正式引入的,之前没有任何标准协议支持,路由器和其他网络设备根本不认这种配置。当时的子网是不是被严格限制在各自的网络类别里?
没错,是硬限制。类别化网络的规则是铁打的:- A类地址(0.0.0.0-127.255.255.255)默认掩码/8,只能在剩下的24位主机位里划分子网
- B类地址(128.0.0.0-191.255.255.255)默认掩码/16,只能在剩下的16位主机位里划分子网
- C类地址(192.0.0.0-223.255.255.255)默认掩码/24,只能在剩下的8位主机位里划分子网
而且当时的路由协议(比如旧版RIP v1)都是类别化路由,只会按地址类别识别网络,完全不支持跨类的路由条目转发。
早期Windows PC会不会阻止设置任意子网掩码?
操作系统层面其实不会拦着你——比如Windows 3.11、早期Windows 95这类系统,允许你手动输入任何格式合法的子网掩码。但问题出在网络层面的兼容性:
如果你给一个C类地址设了/7的掩码,系统本身可能不报错,但当你要和其他设备通信时,本地路由计算、ARP请求都会基于这个错误的掩码生成无效的网络地址,路由器也会因为地址类别和掩码不匹配,直接丢弃你的数据包——毕竟当时的路由器都是按类别化规则工作的,根本不承认这种「违规」的子网配置。
简单说,CIDR之前,你可以在操作系统里瞎设掩码,但整个网络生态不支持这种操作,等于白忙活。
备注:内容来源于stack exchange,提问作者user242114

