互联网上每一台设备都需要一个唯一的标识,这个标识就是IP地址。就像现实中每栋建筑都有门牌号一样,IP地址让数据包能够在复杂的网络中找到正确的目的地,没有它网络通信就失去了最基本的寻址依据。
IP地址目前主要使用IPv4,由三十二个二进制位组成。为了方便人类阅读,通常将这32位分成四个八位组每组转换为十进制数,中间用圆点分隔,这就是点分十进制表示法。比如192.168.1.1,每个数字取值范围0到255,因为八位二进制能表示的最大值是255。一切子网划分和路由计算的逻辑都发生在二进制层面,没有二进制思维后续的计算会非常吃力。
IP地址由网络号和主机号两部分构成。网络号标识一个具体的网络,主机号标识该网络中的一台设备,如同电话号码中区号和个人号码的关系。那么在一个三十二位的IP地址中,多少位是网络号、多少位是主机号呢?这就需要子网掩码来界定。
早期的互联网采用了分类编址方案,将IP地址划分为A类、B类、C类、D类和E类。A类地址以0开头,取值范围1到126,网络号占8位主机号占24位,可容纳超过一千六百万台主机。B类地址以10开头,取值范围128到191,网络号和主机号各占16位,可容纳约六万五千台主机。C类地址以110开头,取值范围192到223,网络号占24位主机号占8位,最多容纳254台主机。127段被保留用于回环测试。
A、B、C三类单播地址是我们日常接触最多的。但分类编址有个严重缺陷:地址浪费。一个机构如果需要一千个地址,C类最多254个不够用,B类六万五千多个只用一千个太浪费。这种低效率直接推动了CIDR技术的发展。熟练掌握二进制与十进制的快速转换,是所有网络层协议的基础功,也是网络工程师软考最基本的计算能力要求。
子网掩码也是三十二位二进制数,结构非常特殊:前面一串连续的1,后面一串连续的0,1对应网络号,0对应主机号。最常见的255.255.255.0写成二进制就是24个1加8个0,表示前24位网络号后8位主机号。连续性要求是子网掩码的铁律,出现1和0交错如255.255.255.160就是完全非法的。
把IP地址和子网掩码进行按位逻辑与运算,得到的就是网络地址。运算本质是:任何数与1进行AND等于本身,与0进行AND等于0,所以子网掩码中1对应的部分保留原值、0对应的部分全部清零,最终提取出纯网络号。比如192.168.1.100配上255.255.255.0,与运算得192.168.1.0就是网络地址。这个计算虽然简单但考试中很多人因不习惯二进制运算而失分,需要反复练习形成条件反射。
广播地址是向网络中所有主机发送数据的特殊地址,计算方法是主机号部分全部置1。上例中主机号是最后8位,全部置1得255,广播地址就是192.168.1.255。可用主机地址范围从网络地址加1到广播地址减1,所以192.168.1.0网络的可用地址是192.168.1.1到192.168.1.254共254个。网络地址和广播地址都不能分配给设备使用,这是初学者最容易忽略的细节。
子网掩码还有前缀长度表示法,在IP地址后面加斜线和数字,如192.168.1.1/24表示掩码中有24个连续1。这种表示法简洁明了,/24等价于255.255.255.0,/16等价于255.255.0.0,/8等价于255.0.0.0。常见前缀/25对应255.255.255.128,/26对应255.255.255.192,/27对应255.255.255.224,这些在软考中高频出现建议直接记住。
子网掩码有两个核心功能:第一,帮助设备判断目标IP是否与本机在同一网络中,网络号相同则直接通信否则经网关转发。第二,决定网络规模——n位主机号的可用地址数是二的n次方减二。注意一个边界情况:如果主机位只剩1位,二的1次方等于2减去2等于0,这个子网没有任何可用地址属于无效划分,软考中会专门出题考察这种极端情况。
子网划分的本质是从主机号中借用若干位作为子网号,将一个大网络切割成多个小子网。此操作发生在网络内部,对外部路由器来说这些子网仍是同一个网络。动机通常有两个:减少广播域提高性能,精细分配IP地址避免浪费。理解借位机制是整个技术的核心,掌握了这个逻辑所有计算都迎刃而解。
借位的核心操作是从原有的主机位中拿出一部分变成子网位。假设我们有一个C类网络192.168.1.0/24,默认主机位是8位。如果我们借用2位作为子网位,子网掩码就变成了/26也就是255.255.255.192。此时子网位有2位,可以组合出四种子网号:00、01、10、11,产生四个子网。每个子网剩余6个主机位,可用地址数是二的6次方减2也就是62个。子网数量等于二的子网位数次方,借n位就产生二的n次方个子网,这个公式在任何类型的网络中都是通用的。
子网划分的计算涉及三个关键数值。第一是子网数量,等于二的子网位数次方,借2位就是4个子网。第二是每个子网的主机容量,等于二的主机位数次方减二,借2位后剩6位主机位每个子网62个可用地址。第三是块大小,即相邻子网网络地址的间隔,等于二的主机位数次方,6位主机块大小就是64。有了块大小就能列出所有子网网络地址:第一个192.168.1.0,加64得第二个192.168.1.64,类推得到第三第四个。这套流程在软考中是必考内容,需要达到不假思索的程度。
在实际操作中,我们需要根据需求反向推导应该借用多少位。比如一个公司有四个部门,分别需要50台、30台、20台和10台主机。对于需要50台主机的部门,必须保证二的n次方减二大于等于50,n最小为6,也就是说主机位至少需要6位。C类网络默认8个主机位,可以借出2位作为子网位,正好满足四个子网的需求。但四个部门规模不同,如果统一借2位分成四个完全一样大小的子网,每个子网62个地址,对于只需要10台主机的部门就浪费了五十多个地址。这种统一尺寸的子网划分虽然计算简单,但在地址利用率上表现很差,VLSM技术正是为此而生。
VLSM也就是可变长子网掩码,允许我们根据实际需求为不同的子网分配不同长度的子网掩码。上面的例子中,可以先借2位把网络分成四个/26的子网,然后从其中一个/26子网中再借出若干位进一步细分。比如把192.168.1.192/26这个子网再借1位变成两个/27的子网,每个有30个可用地址,甚至还可以继续细分把其中一个/27再借1位变成两个/28的子网,每个14个可用地址。这样层层递进,最终每个部门都能分配到恰好满足需求的地址块。
VLSM的精髓在于逐级细分,形成层次化的地址分配结构。路由器通过最长前缀匹配原则来选择路由,子网掩码越长匹配越精确。当数据包到达时,路由器会检查所有匹配的路由条目,选择子网掩码最长的那一条。这也是路由表中可以同时存在192.168.1.0/24和192.168.1.64/26两条路由的原因,后者更精确会被优先匹配。理解这个匹配原则对掌握路由器工作机制很有帮助,也是软考考题中经常考察的理论要点。
使用VLSM进行地址规划时,有一个关键的原则必须遵守:按照主机数量从大到小的顺序来分配地址块。大需求必须先安放在大块的连续地址空间上,如果先把小块分配出去,留下的空间可能被碎片化,导致无法容纳后面的较大需求。比如你有一个/24的地址空间,如果先分配了一个/27的小子网,它可能正好位于地址空间的中间位置将剩余空间分割成两块,后续需要分配一个/25的大子网时任何一块单独的空间都不够用,即使总空闲地址充足也无济于事。按照从大到小的顺序规划就能有效避免地址碎片化问题。
CIDR全称是无类别域间路由,是上世纪九十年代为了解决IP地址即将耗尽和路由表膨胀两大危机而提出的技术方案。在CIDR出现之前,互联网采用分类编址,路由表必须为每个网络都保存一条条目。随着互联网的爆炸式增长,路由器的路由表已经大到无法承受,同时IPv4地址的分配效率也极其低下,双重危机迫使互联网工程任务组提出了这个革命性的解决方案。
CIDR彻底抛弃了A类、B类、C类的概念,取而代之的是统一的网络前缀表示。任何IP地址都可以用斜线加前缀长度的方式表达,不再受分类边界的约束。一个机构如果需要一千个IP地址,可以申请一个/22的地址块提供1024个地址,恰好满足需求,不再需要申请一个包含六万五千个地址的B类网络。这种按需分配的机制从根本上改变了IP地址的管理方式,有效延长了IPv4的使用寿命。
CIDR最具革命性的创新在于路由聚合,其原理是将多个连续的网络地址块合并成一个更大的地址块,用一条路由代替多条。比如四条路由分别指向19
本篇完!