子网掩码的作用
子网掩码是一个32位的值,长度与IPv4地址相同,由连续的一段1位后跟连续的一段0位组成。1位标记出地址中哪些位用于标识该地址所属的网络,0位则标记出哪些位用于标识该网络内的某台具体主机。对IP地址和其掩码执行按位AND运算,会去除主机位,只留下网络地址。
例如,掩码255.255.255.0的二进制形式为11111111.11111111.11111111.00000000——24个1位后跟8个0位——这意味着前三个八位组用于标识网络,最后一个八位组用于标识该网络内的各台主机,该网络最多可容纳256个地址(其中254个可用)。
CIDR记法:/24到底是什么意思
CIDR(无类别域间路由,Classless Inter-Domain Routing)由RFC 4632定义,它将子网掩码写作斜杠后跟前导1位的数量,因此/24是掩码255.255.255.0的简写,/26是255.255.255.192的简写。CIDR取代了早期的分类编址系统——该系统中网络大小由地址的前几位(A类、B类或C类)严格固定——转而提供了灵活性,可以通过在/0到/32之间选择任意前缀长度,来定义几乎任意大小的网络。
前缀长度直接决定了掩码以及剩余主机位的数量:对于32位的IPv4地址,主机位数 = 32 − 前缀长度。/24网络有8个主机位(2⁸ = 256个地址),/26网络有6个主机位(2⁶ = 64个地址),/30网络有2个主机位(4个地址)——主机位数越少,网络就越小。
实例演算:192.168.1.10/26
以地址192.168.1.10配合/26前缀为例。/26掩码有26个1位,覆盖了前三个八位组的全部(24位)加上第四个八位组的最高2位,得出的掩码为255.255.255.192(192的二进制为11000000)。地址的第四个八位组为10,其二进制为00001010;将其与掩码的第四个八位组(11000000)进行AND运算,会把低6位清零,结果为00000000 = 0,因此网络地址为192.168.1.0。
第四个八位组中剩余的6个主机位,给出每个子网2⁶ = 64个地址的块大小,因此包含.10的子网范围为.0到.63。广播地址是该范围的顶端,即192.168.1.63(所有主机位都置1),可用主机范围则是网络地址与广播地址之间的所有地址:192.168.1.1到192.168.1.62——正好2⁶ − 2 = 62个可用主机地址。
子网划分存在的原因
子网划分由RFC 950标准化,用于解决一个实际问题:一个包含成千上万甚至数百万台设备的单一扁平网络效率低下且十分脆弱,因为广播域内的每台设备都会收到该域内发送的每一个广播数据包,而某个网段上的故障或广播风暴可能影响整个网络。将一个较大的地址块划分为更小的子网,可以把广播流量限制在各个子网内部,并让网络能够按物理或组织边界(例如一层楼、一个部门、一个数据中心机架)来组织,而不是作为一个不加分割的地址池。
子网划分还有助于节约地址资源并提升路由效率:一个组织可以让每个子网的大小大致匹配其实际所需的设备数量(两台路由器之间的/30点对点链路,不需要像/24办公网络那样占用254个地址),而CIDR的可变长度前缀让路由器能够将许多小子网聚合为单条路由表项,从而按照RFC 4632所述,防止互联网规模的路由表增长到难以管理的程度。
CIDR前缀参考表
下表列出了常见的CIDR前缀长度及其对应的点分十进制子网掩码,以及由此得出的可用主机地址数量,遵循标准的CIDR主机计数规则,即网络地址和广播地址被保留,不可分配给设备。
| 前缀 | 子网掩码 | 可用主机数 |
|---|---|---|
| /24 | 255.255.255.0 | 254 |
| /25 | 255.255.255.128 | 126 |
| /26 | 255.255.255.192 | 62 |
| /27 | 255.255.255.224 | 30 |
| /28 | 255.255.255.240 | 14 |
| /29 | 255.255.255.248 | 6 |
| /30 | 255.255.255.252 | 2 |
常见问题
什么是子网掩码?
子网掩码是一个32位的值,由连续的一段1位后跟连续的一段0位组成,用于将IPv4地址划分为网络部分和主机部分。对地址和其掩码执行按位AND运算即可得到网络地址;例如掩码255.255.255.0,将前24位标记为网络部分,后8位标记为主机部分。
IP地址中的/24是什么意思?
CIDR记法中的/24表示地址32位中的前24位用于标识网络,等同于子网掩码255.255.255.0。剩余的8位用于标识该网络内的各台主机,共给出2⁸ = 256个地址,在保留网络地址和广播地址后,其中254个可用。
如何求出192.168.1.10/26的网络地址和广播地址?
/26掩码为255.255.255.192,最后一个八位组留下6个主机位,块大小为2⁶ = 64个地址。由于10落在0-63这个区块内,网络地址为192.168.1.0(所有主机位清零),广播地址为192.168.1.63(所有主机位置1);可用主机范围为192.168.1.1到192.168.1.62,共62个地址。
为什么要进行子网划分?
子网划分将一个大型网络划分为更小、可独立管理的网段,这限制了广播流量的传播范围,将故障和无关流量隔离在网络的较小部分内,并让地址空间的分配能大致匹配实际设备数量,而不是在小型链路上浪费大量地址块。它还允许路由器将许多小子网聚合为更少的路由表项,这对于扩展互联网级别的路由至关重要。
/26网络中有多少个可用主机?
62个。/26前缀留下6个主机位(32 − 26 = 6),该子网共有2⁶ = 64个地址。其中,全0地址被保留为网络地址,全1地址被保留为广播地址,剩下2⁶ − 2 = 62个地址可分配给设备。
CIDR与旧的分类编址系统有什么区别?
分类编址根据地址的前几位,将网络大小固定为几种僵化选项之一(A类、B类或C类),这为那些实际需求介于这些固定大小之间的组织浪费了大量地址空间。RFC 4632定义的CIDR以斜杠记法(如/24、/26)表示的可变长度前缀取代了这一做法,让网络大小几乎可以设定为任意2的幂次边界,并让路由器能将多个网络聚合为更少的路由表项。
参考文献
- Mogul J, Postel J. Internet Standard Subnetting Procedure. RFC 950, IETF, 1985.
- Fuller V, Li T. Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan. RFC 4632, IETF, 2006.
- Postel J. Internet Protocol. RFC 791, IETF, 1981.
- Rekhter Y, Moskowitz B, Karrenberg D, de Groot GJ, Lear E. Address Allocation for Private Internets. RFC 1918, IETF, 1996.