彻底讲透CIDR:无分类编址、子网划分与路由聚合

发布时间:2026/10/8 20:02:51

彻底讲透CIDR:无分类编址、子网划分与路由聚合 学网络的朋友应该都有一个共同的体验走到 IP 编址这一块最难过的一关就是从“分类编址”到“无分类编址 CIDR”的思维切换。很多人一直记着 A 类最大、C 类最小看到 IP 第一反应就是“这是不是一个 B 类地址”结果一到做题要么把子网算错要么根本不知道为什么要用 CIDR。今天这篇就专门把“无分类编址 CIDRClassless Inter-Domain Routing无分类域间路由选择”拆开讲透它到底解决了什么问题、怎么计算、路由聚合怎么做以及准备 408 考试、刷《计算机网络》练习题时最容易踩的那些坑。先说清楚 CIDR 是什么。它 1993 年正式取代传统的分类编址核心就一句话不再按 A、B、C 类固定死网络号占多少位而是用“a.b.c.d/n”这样的斜杠记法自己定义前缀长度。这个改动看似简单却同时按住两个命门一是把地址浪费降了下来二是让路由表大幅瘦身。无论你是考研党、自学《计算机网络自顶向下》的开发者还是日常要规划云上 VPC 的 DevOps 工程师这一篇都值得看完。下面我按照“为什么要有它、概念怎么理解、计算怎么做、聚合怎么玩、考场上怎么避坑”的顺序把自己的实操经验和备考总结一次性写出来。1. 为什么非要用 CIDR分类编址的两个死穴1.1 分类编址的本质地址段切得太粗要理解 CIDR 的意义得先回到分类编址。早期 IP 地址按最前面的几个比特分成 A、B、C 三类类别首比特第一字节范围网络号位数默认掩码每网络可用主机数A01 ~ 1268255.0.0.02^24 - 2约 1677 万B10128 ~ 19116255.255.0.02^16 - 2约 65534C110192 ~ 22324255.255.255.02^8 - 2254这个设计在 ARPAnet 时代是合理的小型网络拿 C 类中型网络拿 B 类大型网络拿 A 类。但互联网规模一放大问题立刻暴露出来——类别是固定的现实需求却不是整数级别的。一家公司明明只有三千台设备按分类编址只能去申请一个 B 类地址段一下子多占六万多个地址想省着点用 C 类吧254 个地址又不够塞牙缝。这种“要么撑死、要么饿死”的分配方式让 IPv4 地址空间的浪费极其严重。我见到很多刚开始学网络的同学会觉得“反正 IPv4 不够用是运营商的事跟我有什么关系”。真等自己去规划一个网络的时候就知道了你申请到一个 10.0.0.0/24 的段想在里面再分一个能容纳 30 台设备的子网和一个能容纳 60 台设备的子网分类编址根本做不到因为它不允许你把一个 C 类地址段按需求切成不整齐的小块。CIDR 给出的答案就是网络号到底占多少位由你自己定不按类别一刀切。1.2 路由表爆炸分类编址无法按需聚合分类编址的另一个死穴在路由器的路由表。互联网上的路由器要为每个网络记录一条转发条目直到今天很多核心路由器的路由表里都有几十万条甚至上百万条记录。你想象一下如果每个小网络都得独立出现在路由表里转发效率会低到什么程度内存和 CPU 都会扛不住。分类编址的问题在于网络号的边界被类别锁死一个 B 类网络和一个 C 类网络网络号位数不同前缀天然对不齐想聚合也聚不到一起去。CIDR 的思路正好相反只要若干个相邻地址块在二进制前缀上有一致的高位它们就可以合并成一条“更短前缀”的路由。换句话说从“按类别定边界”改成“按二进制对齐边界”原本需要几十条路由记录的地址范围合并之后可能只需要一条。这就是后文说的“路由聚合”也叫“超网”它是 CIDR 能延续到今天最核心的工程价值。1.3 从“按类分配”到“按需分配”CIDR 的分配哲学CIDR 推出后ISP 给客户分配地址的逻辑彻底变了。以前你想用 2000 个地址对不起要么拿一个 B 类65534 个地址浪费大部分要么拿一堆 C 类然后面对一堆无法聚合的路由条目。有了 CIDRISP 可以根据你的实际需求直接分给你一个 10.0.0.0/21 的地址块里面正好 2048 个地址完全贴合需求而且因为前缀统一对外只发布一条路由。这种“按需分配”听起来平平无奇但把地址空间的利用效率提升了一大截。尤其配合后面的 VLSM可变长子网掩码一个大地址块可以被切成多个大小不一的子网每个子网的主机数都尽量贴近实际需求。CIDR 和 VLSM 经常被混着提实际上一个偏“分配规则”一个偏“子网划分操作”两者合在一起才真正让 IPv4 地址得到了精细化使用。可以说没有 CIDR 撑着IPv4 在 IPv6 全面普及之前早就撑不下去了。2. 弄清 CIDR 的几个核心概念别被斜杠搞晕2.1 斜杠记法的本质前缀长度 nCIDR 的地址表示格式是“a.b.c.d/n”这里的 n 表示网络前缀长度也就是从 IP 地址的最高位开始有多少位属于网络部分。举个例子192.168.1.0/24意思是前 24 位是网络位剩下的 8 位是主机位。换成掩码来理解就是 255.255.255.0。同理10.0.0.0/8 的前 8 位是网络位掩码是 255.0.0.0。这里要注意一个容易绕晕的点n 和掩码是可以互相换算的。掩码的本质就是“前 n 位全是 1后面全是 0”。所以 255.255.255.0 的二进制就是 24 个 1 加 8 个 0对应的前缀长度就是 /24。只要你能熟练换算掩码和前缀长度CIDR 的很多计算就能直接用十进制思考不用每次都把整个 IP 展开成二进制。还有个细节有了 CIDR 之后“子网掩码”这个叫法其实更准确的称呼就是“掩码”或“前缀掩码”。因为传统的子网划分是“在固定类别内再借位”而 CIDR 里网络位本身就靠前缀长度定义谈不上什么“默认掩码”。不过考试和很多教材里仍习惯叫“子网掩码”这倒不致命关键是心里明白mask 长度就等于前缀长度 n。2.2 网络地址、广播地址、可用主机数一条公式走天下CIDR 场景下所有计算本质上只围绕两个值前缀长度 n 和主机位位数32 - n。给你一个 CIDR 地址块你必须张口就来三样东西网络地址主机位全部置 0广播地址主机位全部置 1可用主机数2^(32-n) - 2。为什么要减 2因为主机位全 0 的地址是网络本身全 1 的地址是广播地址都不能分配给真实设备。比如 192.168.1.0/24网络地址就是 192.168.1.0广播地址是 192.168.1.255可用主机是 192.168.1.1 到 192.168.1.254一共 254 台。如果是 10.0.0.0/30主机位只有 2 位可用主机数是 2^2 - 2 2 个所以 /30 经常用在路由器之间的点对点链路刚好够两台路由器互连。我自己第一次学的时候总爱把 2^n 和 2^(32-n) 混在一起后来找到一个不会错的思路先看主机位有几“位”。前缀越长主机位越少地址数越少前缀越短主机位越多地址数越多。记住“前缀长度 网络位 决定块大小”就不会再颠倒了。2.3 前缀长度与掩码速查表做题的时候最高频出现的掩码就那么几个。把下面这张表记熟省去每次手动转换二进制的痛苦。前缀长度对应掩码地址块大小可用主机数/30255.255.255.25242/29255.255.255.24886/28255.255.255.2401614/27255.255.255.2243230/26255.255.255.1926462/25255.255.255.128128126/24255.255.255.0256254/23255.255.254.0512510/22255.255.252.010241022这张表我自己备考时贴在电脑前刷题刷到后面看到 /27 直接就能反应出“块大小 32、可用 30”不用停下笔来算。别小看这个速度考场上省下的每一分钟都能留给后面的应用题。3. 实操计算三种最常见的题目场景3.1 场景一把地址块划分成多个大小不同的子网先从一个最典型的案例说起。假设你手上有一个 200.100.50.0/24 的地址块需要把它划分成两个子网一个要能容纳 100 台主机另一个能容纳 60 台主机怎么分第一步反推每个子网需要的主机位数 m。可用主机数公式是 2^m - 2要求它大于等于目标主机数。所以要 100 台2^7 - 2 126 100所以 m 7前缀长度是 32 - 7 /25。要 60 台2^6 - 2 62 60所以 m 6前缀长度是 /26。第二步按照从大到小的顺序分配地址块。为什么先分大的因为子网的起始地址必须是对齐的/25 的块大小是 128所以 /25 子网的起始地址必须是 128 的整数倍/26 的块大小是 64起始地址必须是 64 的整数倍。如果先把小的 /26 分在 0 段剩下 192 个地址尽管够一个 /25但 128 对齐会导致中间留下空洞后面的规划就会很别扭。正确的分法是子网网络地址广播地址可用地址范围100 台 → /25200.100.50.0200.100.50.127200.100.50.1 ~ 200.100.50.12660 台 → /26200.100.50.128200.100.50.191200.100.50.129 ~ 200.100.50.190分完之后剩余的 200.100.50.192/26 还能继续留给后续扩容。这里的关键是地址分配必须连续、对齐、从大到小否则很容易出现“看起来还剩不少地址但就是凑不出一个完整子网”的尴尬局面。这个坑几乎每个做网络规划的人都踩过后面我会单独再讲。3.2 场景二判断两个 IP 是否在同一网络判断两个 IP 是否属于同一个网络最稳妥的办法就是“拿掩码做与运算”把两个地址都换算成网络地址再看是否相同。比如 192.168.1.130/25 和 192.168.1.66/25两者的掩码都是 255.255.255.128因为 /25。把 130 转成二进制是 10000010和掩码最后一段 10000000 相与得到 10000000也就是网络地址的末段为 128把 66 转成二进制是 01000010相与后得到 01000000也就是网络地址的末段为 64。两个网络号一个末段 128、一个末段 64所以不在同一网络。这个例子很多人一看 IP 都是 192.168.1.x就会想当然地说“在同一网络”。实际上 /25 已经把第三段之后的高位重新切分了192.168.1.0/25 覆盖 .1 ~ .126192.168.1.128/25 覆盖 .129 ~ .254这两段是并列的两个网络。所以做题时千万别只看前几段相同就下结论一定要把掩码相与的结果算出来再判断。再看一个更极端的例子192.168.1.65/26 和 192.168.1.70/26。块大小是 64所以 .64 和 .127 是第一个 /26 子网的边界.65 和 .70 都在这个范围内属于同一网络。但如果第二个地址改成 192.168.1.130/26它属于 192.168.1.128/26跟前面那个就不在同一网络了。这种题目考察的就是对“块大小”和“边界对齐”的敏感度。3.3 场景三给定地址块求所有子网边界还有一类高频题是“把某个地址块等分成若干个子网”。例如 202.120.10.0/24 需要划分成 4 个等长子网。因为 4 2^2所以要把 2 个主机位变成网络位前缀从 /24 扩到 /26。每个子网的地址块大小是 2^(32-26) 64于是起始地址按 64 递增子网编号网络地址广播地址可用地址范围1202.120.10.0/26202.120.10.631 ~ 622202.120.10.64/26202.120.10.12765 ~ 1263202.120.10.128/26202.120.10.191129 ~ 1904202.120.10.192/26202.120.10.255193 ~ 254看到规律没有网络地址永远是每个块的第一个地址广播地址永远是最后一个地址。块大小由后缀决定/26 是 64/25 是 128/27 是 32。只要把起始地址列出来每个块的网络地址、广播地址就都出来了。这里强烈建议大家把“块大小 2^(32-n)”这个公式背进肌肉记忆它能直接帮你跳过完整二进制展开的繁琐过程。4. 路由聚合让路由表瘦身的杀手锏4.1 什么情况下才能聚合成一个前缀路由聚合是 CIDR 最直观的收益点也是最容易被考到的一个知识点。先看它成立的条件被聚合的若干地址块必须连续且它们的二进制高 n 位完全相同同时这些地址都通过同一个下一跳转发。举个例子一个公司申请了从 192.168.0.0/24 到 192.168.3.0/24 共 4 个连续 C 类地址块。把这四个块的第三段转成二进制0 → 000000001 → 000000012 → 000000103 → 00000011可以看到前 6 位都是 000000只有最后 2 位在变化。前两段 192.168 完全相同所以总共相同的前缀位是 16 6 22 位。于是这 4 个 /24 地址块可以聚合成一个 192.168.0.0/22 的超网路由表从 4 条变成 1 条。对外发布的时候公司只需要向运营商通告一条 192.168.0.0/22 的路由运营商就知道整个 1024 个地址都往这个方向走。反过来如果要聚合成 /21那覆盖范围就变成了 192.168.0.0 ~ 192.168.7.255共 8 个 /24 块。所以聚合的前缀长度不能凭空定而是要看这些地址块实际占满的二进制范围到底有多大。范围越大前缀位数越少。4.2 路由聚合的反面案例凑不齐就别硬聚聚合看起来美好但有个大坑如果中间的地址块缺失你就不该把它们合并。比如你有 192.168.0.0/24 和 192.168.2.0/24想聚合成 192.168.0.0/22这个 /22 实际上覆盖了 0、1、2、3 共 4 个 /24 块其中 192.168.1.0/24 和 192.168.3.0/24 你根本没有。一旦这么聚合发往 192.168.1.x 和 192.168.3.x 的流量也会被扔到你这台路由器上结果就是丢包或错路。这在现实中会带来一个比较隐蔽的问题如果你对外发布了 192.168.0.0/22但内部并没有完整实现这 4 个段的连通性那流量进来后就成了黑洞。所以做地址规划时我一直强调“连续分配”四个字。ISP 给你划分地址段时尽量拿一整块连续空间不要东拼西凑不然以后想聚合都聚不成只能一条条往路由表里堆。4.3 最长前缀匹配路由器选路的默认规则当路由表里同时存在一条聚合路由和一条更具体的路由时路由器必须有一个确定的选路规则这个规则就是最长前缀匹配。前缀越长代表路由越具体优先匹配长度更长的条目。举个例子路由表里同时有 192.168.0.0/22聚合路由指向运营商出口和 192.168.1.0/24指向公司内部服务器区。此时有一个目的地址是 192.168.1.5 的数据包它同时匹配这两条路由但 /24 比 /22 更长、更具体所以路由器会走 /24 指向的下一跳而不是把它甩到运营商出口去。为什么需要这个规则因为聚合提高了效率但必然牺牲精度。如果没有最长前缀匹配路由器非要按“先到先得”或者“顺序匹配”来选路一个编号靠前的粗粒度路由就可能把大量流量引导到错误方向。最长前缀匹配保证了“越具体的路由越优先”这是整个 BGP 和内部路由协议选路逻辑的基石。理解这个原则对后面看路由表、配置策略路由都有直接帮助。5. 刷题和实战中的高频失分点5.1 还在说“A 类还是 B 类”先改掉这个习惯我发现很多人学 CIDR 最大的障碍不是算不对而是思维惯性。看到一个 IP 就开始分类“10.x.x.x 是 A 类192.168.x.x 是 C 类”。这种判断在 CIDR 时代没有任何意义。10.0.0.0/16 可能是某个公司内部网段的规划它用 /16 前缀10.0.0.0/24 也可以是另一个场景的规划。同一个 10 开头的地址前缀长度完全取决于网络管理员的需求而不是它的“类别”。当然考试偶尔还会考分类编址的原始概念比如“B 类地址默认掩码是多少”“A 类地址范围是几到几”。这类题目通常明说“按照分类编址”你要能切换回旧规则。但凡是涉及子网划分、路由聚合、可用主机数的题一律按 CIDR 来处理别再用“B 类借 3 位主机位”这种旧思维去做。5.2 忘记减 2 和广播地址算错减 2 这个细节是新手失分率最高的地方。可用主机数 2^(32-n) - 2这个 2 就是网络地址和广播地址。有人会问现在很多局域网里广播已经用得少了能不能把网络地址或广播地址也拿来当主机用严格来说不行因为网络协议栈对“主机位全 0”和“主机位全 1”的地址有特殊语义尤其在子网划分的标准考试中必须按保留处理。只有在 P2P 链路上偶尔会用 /31 这种只有两个地址但都用于两台设备的特例那属于 RFC 3021 的特殊优化常规计算里不要这么用。做题时可以快速校验看到一个前缀长度立刻反应出可用主机数。/26 是 62、/25 是 126、/24 是 254这些数字要像乘法口诀一样熟练。反过来题目告诉你“要容纳 50 台主机”你要立刻知道至少用 /26因为 /27 的 30 个不够。这种双向换算考场上特别提分。5.3 子网分配顺序从大到小别小气前面那个 100 台和 60 台的例子我要再强调一次分配顺序。很多人第一次做会想着先把小的 60 台安排了剩下 192 个地址再给 100 台。理论上也能凑出两个子网但代价是地址碎片严重。因为子网起始地址有对齐要求你用一个 /26 占掉 0~63 之后剩余空间想再分一个 /25128 个地址起始地址必须落在 128 的倍数上也就是 128这样 64~127 这 64 个地址就闲置了后续怎么都用不整齐。反过来先把 128 个地址的 /25 分在 0 段再把 64 个地址的 /26 分在 128 段剩余 192 段还能继续规划整体非常规整。真实网络规划里这种“从大到小分配”是铁律。云上 VPC 划分子网也一样先划出大的段再在大段里细分小的避免以后扩容时地址对不齐。5.4 VPC 规划和真正的业务场景里 CIDR 的价值最后说点干活之外的体会。做 DevOps 或者系统运维的朋友在云上规划 VPC 时一定会遇到 CIDR。阿里云、腾讯云、AWS 上创建 VPC第一件事就是选一个私网网段比如 10.0.0.0/16然后再往里面切 /24 甚至更小的子网。这时候你有没有发现所有云厂商的控制台都强制要求你写 CIDR而不允许你填一个单纯“A 类”或“C 类”的地址因为它们全都是按 CIDR 模型来设计 API 的。我自己在规划内网环境时有一个习惯一开始就预留一整段连续的地址空间比如整个站点用 10.10.0.0/16业务网段从 10.10.0.0/24 开始管理网段放在 10.10.200.0/24。这样以后不管是写防火墙规则、做路由表聚合还是排查二层环路看到前缀长度就能快速定位地址范围省下的沟通成本远比当初多花几分钟规划要高得多。这也是我为什么一直建议大家学 CIDR 别只盯着考试题目多想想它在真实网络里是怎么帮路由器和运维人员省事的。说回备考这件事。我个人最深的体会是CIDR 的计算没有高深的数学唯一需要的就是把二进制对齐这个概念刻进脑子里。刷题时不要总依赖计算器试着把关键地址段在草稿纸上展开成二进制多画几次你自己就能总结出“看第几位开始分叉前缀就到第几位”这个规律。只要想通这一步从分类编址到无分类编址的这道坎就算彻底迈过去了。
延伸阅读

更多相关文章

2026/10/8 20:02:51

llcbench:用缓存延迟曲线量化LLC性能,精准定位服务器瓶颈

简介:LLCbench(Low-Level Characterization Benchmarks)是一套面向Linux平台的底层表征基准测试工具集,集成了MPBench、CacheBench与BLASBench三大测试方法。本压缩包聚焦CacheBench,用于在不同硬件配置下评估缓存层级…

2026/10/8 21:08:11

marketingskills:AI营销技能库实战指南,从SEO到CRO全流程拆解

1. 从“marketingskills”说起:一个被低估的AI营销技能库第一次看到marketingskills这个词,是在一个做独立站的朋友群里。有人甩了个链接,说“这套东西把SEO和CRO的活儿全拆成AI能执行的技能了”。我当时没太在意,直到自己手头一个…

2026/10/8 21:08:11

minio配置自启动(windows),环境配置

需要获取完整包下载地址: 链接: https://pan.baidu.com/s/1heVB_JVxgChR4GcL1_iklw?pwdtyiv 提取码: tyiv 通过 PowerShell 启动脚本读取 minio.env,再用 NSSM 注册 Windows 服务。 最终目录 D:\minio\ ├── bin\ │ ├── minio.exe │ ├── …

2026/10/8 21:08:11

Superpowers技能包实战:从安装到调优,让AI按流程干活

最近好多人在问 superpowers 这东西到底怎么用——先别急着把它理解成什么神秘魔法,它其实就是一个给 AI 助手装“技能包”的开放项目。我断断续续折腾了两周,把安装、引入、调优、踩坑这几步都完整跑了一遍,今天就把我个人摸出来的流程整理出…

2026/10/8 21:08:11

claude-mem 记忆层设计:存储、检索与注入实战

1. 从零认识 claude-mem:它到底解决什么问题第一次看到claude-mem这个名字,很多人会以为它又是一个套壳的对话客户端。其实不是。claude-mem的核心定位是给 Claude 这类大模型补上一块“长期记忆”的拼图——让模型在跨会话、跨项目的场景下,…

2026/10/8 21:08:11

Claude记忆管理协议:三类Memory Slot工程实践

1. “claude-mem”不是产品,而是开发者圈内正在自发演化的技术共识最近在几个核心开发者社区——包括 Hacker News 的 nightly threads、GitHub trending 的 Python/TypeScript 项目评论区,以及几个专注 LLM 工具链的 Discord 频道里,“claud…

2026/10/8 21:03:10

大模型工程化落地实战:选型、智能体开发与私有化部署

1. 这波热搜到底在说什么腾讯把AI Lab整合进混元大模型体系,MiniMax在海外调用量榜单上持续领跑,这两个消息放在同一天被顶上热搜,其实指向的是同一件事:大模型竞争已经从“谁的参数多”转向“谁的工程化落地能力强”。我翻了一圈…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:02:17

自然数立方等于连续奇数之和:从证明到编程验证

十几年来我一直游走在数学科普和编程教学这两块内容之间,对“看起来像魔法、拆开全是数学”的结论总是格外敏感。最近翻资料时又撞见一句话:任何一个自然数 m 的立方,都可以写成 m 个连续奇数之和。2 的立方等于 3 加 5,3 的立方等…

2026/10/8 0:02:17

C#上位机SSH连接实战:用SSH.NET补齐超时、批量与密钥认证

简介:这是一份基于 C# 开发的 SSH 连接功能半成品工程,原本作为另一个主项目的子功能模块,现独立打包分享。工程采用 WinForms 界面,包含源码、解决方案、安装部署工程、NuGet 依赖包及说明文档,适合正在做远程连接、网…

2026/10/8 0:02:17

Java SpringBoot一体化智能售后系统设计与实现全解析

毕业设计年年做,Java Web 方向的题目翻来覆去就那么几个,但“一体化智能售后系统”这个题,每次看到我都觉得值得认真聊一聊。它不是一个简单 curd 堆出来的管理系统,而是把客户、工单、派单、处理、回访、统计整条链路串起来的一套…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑