复习计网的时候最让人头疼的往往不是那些概念题——多背几遍总能混个眼熟。真正拉开分数差距的是最后那几道计算大题算带宽、算时延、验CRC、划子网、算窗口效率。你会发现这类题其实套路非常固定题型就那么十几种关键在于把每个模型的假设条件和公式对应关系捋清楚。我这篇就是把计网里常考的计算题型按自己的复习思路整理了一份从基础公式到大题推演把我踩过的坑、总结的经验都写进去适合正在备考计科专业计算机网络的同学参考也适合考前突击时用来对照自查。1. 为什么我决定系统整理这套计算题先交代一下背景。当时我把课本过完一遍之后做历年真题的计算题第一反应是“这都什么玩意儿”——明明每个知识点都眼熟但真正做题的时候总会在某一步卡住。后来我认真统计了一下发现计算题出错的原因通常不是公式背不出来而是不知道这道题到底在考哪个模型或者忽略了题目里的隐含条件。1.1 计网计算题的套路化特征计网计算题有个非常明显的特点它不会出偏题怪题几乎所有题目都围绕几个固定模型展开。数据通信基础部分考的是奈奎斯特和香农数据链路层考CRC校验和滑动窗口效率网络层考IP地址规划和路由聚合传输层考RTT估算和拥塞控制窗口变化局域网部分则离不开CSMA/CD的最小帧长问题。把这些考点列出来之后你会发现它们背后其实都有明确的计算公式和适用范围。比如奈奎斯特公式处理的是无噪声环境下的极限速率香农公式对应有噪声环境滑动窗口效率计算要先判断是在停等协议、后退N协议还是选择重传协议下CSMA/CD的最小帧长直接跟传播时延和数据速率挂钩。这就意味着计算题的复习完全可以通过“题型分类 公式速查 真题演练”三步走搞定。我在复习后期就按照这个思路把每类题型整理成标准解法先写已知条件再列出对应公式代入计算最后检查单位和量纲。这样一套流程走下来做题速度会明显提升。1.2 复习顺序与题型分布按照考试出题频率来看我建议的复习优先级是这样的数据速率和时延计算是底层基础几乎每套卷子都会涉及先搞定它们CRC和滑动窗口效率属于数据链路层的高频大题IP子网划分和路由聚合是网络部分的必考题TCP拥塞控制和CSMA/CD最少帧长出现频率稍低但一旦出现就是压轴级别。从易到难排的话我个人的体感是时延计算最友好因为公式简单、条件容易找CRC属于“流程长但每一步都不难”只要你把模2除法的规则练熟了就行子网划分和路由聚合需要一点二进制转换的功底但理解了本质之后就很简单滑动窗口效率题容易出错的地方在于——很多人会搞混“帧发送时间”和“确认帧发送时间”导致整个公式都算错CSMA/CD和TCP拥塞控制则需要结合时序图分析难度最大。2. 高频计算题型的公式速查与拆解计算题做得顺不顺手很大程度上取决于公式是否能“条件反射式”地出现在脑子里。我建议不要死记硬背单条公式而是理解每个公式是从什么物理场景中推导出来的。这个部分我按自己的记忆方式把最容易混淆的几个公式放在一起进行对比。2.1 奈奎斯特与香农别再把两个定理搞混这两个定理非常容易搞混因为它们的公式长得有点像。奈奎斯特定理说的是在无噪声信道中极限数据传输速率为 2W·log2(V)其中W是信道带宽V是信号电平的取值个数。这个公式重点在“无噪声”三个字它限制的是码元速率乘上每个码元能携带的比特数就得到了数据速率。我记得第一次做题时题目给了一个信噪比条件我直接用奈奎斯特公式算结果跟标准答案差了十万八千里。香农定理则专门处理有噪声信道公式是 C W·log2(1 S/N)S/N是信噪比。这里有两个特别容易踩的坑一是题目给的信噪比通常是dB单位必须先通过公式 S/N_dB 10·log10(S/N) 换算回来。比如信噪比为30dB时S/N 1000如果带宽是3kHz那么信道容量就是 3000×log2(1001) ≈ 29.9kbps。二是香农定理计算的是信道容量的上限它不考虑信号电平的分级问题。我复习时给自己编了一个助记口诀奈奎斯特管“无噪声极限”香农管“有噪声上限”——一个算的是理想情况一个算的是现实约束两者之间取较小值就是实际可用的传输速率上限。这个“取较小值”的规则在很多综合题里会用到千万记住。2.2 时延四兄弟的叠加计算时延计算看起来简单但送分题反而是最容易被扣分的因为很多人只算了发送时延漏掉传播时延。一个完整的数据传输过程包括四部分发送时延也叫传输时延是数据从第一bit到最后一bit进入信道所需的时间、传播时延电磁波在介质中传播所需的时间、处理时延和排队时延。考试里通常重点考前两个后两个会作为给定的条件值出现。发送时延的公式是数据长度/信道带宽。传播时延的公式是信道长度/电磁波传播速率。注意这个“电磁波传播速率”在题目里可能给的是真空光速 3×10^8 m/s也可能给的是铜缆或光纤中的 2×10^8 m/s一定要看清。我就因为默认按真空光速算白丢过好几分。更关键的一点是很多综合计算题会要求算“总时延”这时要把发送时延和传播时延分清“串行”的时间段。比如在一段链路上发送一个数据帧总耗时 发送时延 传播时延。但如果是经过多个路由器转发那就要把每一段的传播时延加起来再把每个节点的处理时延也加上。建议画一条时间轴把数据“第一个bit”和“最后一个bit”的关键时间点标出来这样就不容易漏项。3. 核心计算题型的逐类精讲有了公式基础之后接下来就是对高频题型逐一击破。这一节我挑了三类最常考的题型来做完整的拆解从题目条件到标准答案每一步的逻辑都写清楚。3.1 CRC循环冗余校验的完整推演CRC非常喜欢考通常题目会给你一段数据M和一个生成多项式G(x)让你算出余数R写出最终发送的码字并判断接收端收到的数据是否有错。先说基本步骤。第一步确定生成多项式的最高次幂r。比如G(x) x^3 x^2 1写成二进制是1101最高次幂是3所以r3。第二步在数据M后面补r个0得到新的被除数。第三步用模2除法——也就是异或运算——让新数据除以生成多项式得到的余数就是CRC校验码。余数必须保证小于r位如果不足r位要在前面补0。我拿一个具体例子演示。设数据M101001生成多项式G(x)1101。先在M后面补3个0得到101001000。然后做模2除法。这个除法跟普通除法的区别在于每一步都用异或而不是减法而且不借位。过程比较繁琐我建议在草稿纸上列竖式像我这样一步步写第一步101001000 与 1101 按位异或结果的高位为011101000第二步从剩下的11101000继续与1101异或得00111000第三步对111000与1101异或得001000第四步1000与1101异或得0101余数就是101。所以最终的发送码字是M拼接上余数即101001101。当接收端收到这个码字后用同样的生成多项式1101去除如果余数为0则认为数据无错误如果不为0则说明在传输过程中发生了变化。这里有一个值得注意的细节CRC只能发现错误不能正确定位和纠正错误——这是它在考试里常被问到的一个隐含知识点。我在做这类题时还总结了一条经验注意生成多项式最高次幂是否题目直接写明。有的题目会写成“G(x)x^8x^2x1”这种形式你需要自己把对应的二进制位写出来千万别漏掉最高位那个1。3.2 子网划分与路由聚合反向算术是核心IP子网划分是计算机网络中最“实用”的计算题类型出题方向基本集中在网络号、广播地址、可用主机范围、子网掩码长度这几项上。最稳妥的办法是把IP地址和掩码都转成二进制逐位对齐计算。拿一个经典题目练手某主机的IP为202.113.79.32/28问该主机所在子网的网络地址和广播地址是什么/28表示子网掩码是255.255.255.240等价于二进制中前28位为1主机位占4位。把202.113.79.32的后8位写成二进制是00100000前4位0010是子网部分后4位0000是主机部分。因此网络地址就是主机部分全为0即202.113.79.32广播地址是主机部分全为1即202.113.79.47可用主机IP范围是202.113.79.33到202.113.79.46共14个可用地址。这个例子很有代表性因为题目给的主机IP已经是一个网络地址很多人反而会被迷惑其实计算出网络号之后就非常简单了。考试里更常见的组合是一个公司申请了一个地址块需要按照部门数量划分若干个子网每个子网有固定数量的主机需求。这种题的核心逻辑是先根据“每个子网需要的主机数量”确定主机位数n2^n - 2 ≥ 主机需求再反推掩码长度。记住一个原则子网掩码中网络位是连续的1主机位是连续的0中间不会穿插。关于路由聚合CIDR路由汇聚核心是把多个连续地址段的网络前缀合并成一个更短的网络前缀原理就是找出这些IP地址的共同前缀。例如有202.113.79.0/24和202.113.80.0/24把它们并成一个超级网时关键看202.113和79、80的关系。79的二进制是0100111180的二进制是01010000所以从第7位开始出现不同最多只能聚合到202.113.64.0/21这样更宽的块——当然实际题目会给出更方便的边界。这类题的通用解法是把需要聚合的IP地址分别写成二进制从左侧开始逐位比较直到遇到不同的位相同位的个数就是新的网络前缀长度。3.3 滑动窗口协议的效率计算滑动窗口效率题几乎是数据链路层的压轴必备。先分清三种基本协议。停等协议发送一个帧后必须等确认效率 Tf/(Tf RTT)其中Tf是发送一个帧的发送时延RTT是往返时延。后退N协议允许连续发送多个帧但一旦出错要从错误的帧开始重传效率 W×Tf/(Tf RTT)前提是W是窗口大小而且W×Tf不超过TfRTT对应的数据量。选择重传协议只重传出错的帧效率一般高于后退N但窗口大小的上限约束不同题目里通常会直接给窗口大小。很多人会问为什么效率公式里要除以(Tf RTT)你可以这样理解在理想情况下信道始终在传输数据没有空闲等待实际收发的过程中发送方在等待确认的这段时间里信道是空闲的所以效率本质上是“实际发送数据的时间占总时间发送 等待的比例”。停等协议之所以效率低就是因为每个帧之间都夹着一个大大的RTT空档。举个例子加深印象。假设信道带宽为1Mbps帧长度为1000bitRTT为100ms使用停等协议。那么Tf 1000bit / 1Mbps 1ms效率 1 / (1 100) 0.99%几乎低到“惨不忍睹”。如果改用后退N协议窗口大小W7效率 7×1 / (1 100) ≈ 6.93%同样不高。从这里就能理解为什么实际网络中很少用停等协议来传输大流量数据。我在这个知识点上踩过一个坑题目里的RTT有时是“单向传播时延的两倍”有时是“至少一个RTT”有的题目还会把确认帧的发送时延也列为单独条件。稳妥的做法是画时序图发送一个帧然后经过传播时延到达接收端接收端处理并回发确认确认再经过传播时延返回发送方。你要把这个周期完整算出来再去套效率公式。4. 典型大题实操推演与易错点排查前面把公式和基础题型过了一遍现在来看两道综合性比较强的大题这两道题其实也是我在做真题时错得最多的类型。把它们完整演示一遍再把常见踩坑点整理成表。4.1 CSMA/CD最小帧长题的完整推导CSMA/CD载波监听多点接入/碰撞检测有一个核心设计约束发送方必须在发送完毕之前就能检测到碰撞否则检测到碰撞时帧已经发完了发送方会误以为传输成功。因此最小帧长必须满足发送时延 ≥ 2倍传播时延其中2倍传播时延指的是信号从发送方到最远端再返回的总时间。考试的标准问法通常是已知某以太网两站点之间距离为1000m电磁波传播速度为2×10^8 m/s数据速率为100Mbps求最小帧长。先算传播时延1000 / (2×10^8) 5μs往返时延为10μs。再用数据速率乘以往返时延100×10^6 × 10×10^-6 1000bit。所以在这个网络里帧长不能小于1000bit否则发送方无法在帧发送过程中感知到碰撞。如果把距离加大比如改成2500m那么传播时延变成12.5μs往返25μs最小帧长会变成2500bit——这也解释了大网络下帧长必须相应的加长否则就需要降低速率。我刚开始做这类题时总是把传播时延和发送时延搞混。其实它们是完全独立的两个概念传播时延是电磁波在介质中穿越的时间发送时延是数据帧从第一个bit到最后一个bit进入信道的时间。CSMA/CD的关键不等式“发送时延≥2倍传播时延”中的发送时延就是帧长除以数据速率。因此最小帧长 数据速率 × 2倍单程传播时延。这个公式建议直接记住但最好也能自己推导一遍。做综合题的时候还要注意一个场景题目可能只说“网络跨距”或“冲突域直径”而不是直接给两端点距离。冲突域直径包括电缆长度、网桥/集线器延迟等做题时要把它当成传播距离来用。有的题目还会附加中继器额外延迟需要把这部分加进去。遇到这种情况别慌无非是先把等效往返时延算出来再套上面的公式。4.2 TCP拥塞控制慢启动的阈值计算TCP拥塞控制的计算主要围绕慢启动、拥塞避免和阈值ssthresh的变化来出题。核心规则是慢启动阶段收到每个确认ACK后拥塞窗口加1相当于每经过一个RTT窗口大小翻倍指数增长窗口达到或者超过ssthresh后进入拥塞避免阶段每个RTT只增加1线性增长发生超时或者三个重复ACK时ssthresh会调整为当前窗口大小的一半cwnd根据情况重新开始。我给一个典型题初始ssthresh设为16经过几个RTT之后cwnd进入拥塞避免如果初始cwnd是1那么过程是第1个RTT后cwnd2第2个RTT后4第3个RTT后8第4个RTT后16。此时cwnd正好等于ssthresh通常下一轮就进入拥塞避免阶段。也就是说在cwnd ssthresh的这段时间段内是指数增长一旦cwnd达到阈值后就变得线性。另一种常见考法是给定一条拥塞窗口随RTT变化的曲线让你指出第几个RTT发生了超时以及之后cwnd和ssthresh如何变化。这种题目其实更简单如果你发现某个时刻cwnd突然从一个大值掉到一个很小的值比如从24掉到1说明发生了超时此时ssthresh被更新为12如果是从24掉到12说明是发生了三个重复ACK快速重传ssthresh被更新为12cwnd设为ssthresh而不是1。在做这种题时我建议先画一个随时间变化的阶梯图横轴是RTT编号纵轴是cwnd大小。然后按照“1,2,4,8,16...”的翻倍数列画到拐点再按线性递增画。只要图能画对答案基本不会错。另外还要留意有些题目会在慢启动阶段加入“每次接收到ACK都会增加”而窗口扩大是以ACK确认的数据量为单位的如果确认的不是一个整帧计算会复杂一些不过大多数教材出的题都会用“每个RTT翻倍”的简化解法我们按这个做即可。4.3 易错点速查与考场细节我把整个复习过程中遇到的高频错误整理成了下面的速查表每次考前都过一遍能避免很多无谓失分。易错点典型错误正确思路奈奎斯特与香农混用有噪声环境却用了无噪声公式先判断题目给没给信噪比给了就用香农信噪比单位换算忘记把dB换算成比值30dB要换成1000倍再用香农公式传播时延速率取值光速直接用3×10^8忽略了介质铜缆光纤等介质中约2×10^8看清题目CRC余数位数余数不足r位时没有补0余数长度固定为r位不足前面补0子网划分主机位数主机的可用地址数直接按2^n算必须减掉网络地址和广播地址两个滑动窗口效率忘记乘窗口大小W停等W1后退N要乘WCSMA/CD最小帧长只用单程传播时延而不是双程必须用往返时延计算TCP阈值更新超时和快速重传的cwnd变化搞混超时后cwnd1快速重传后cwndssthresh除表格之外还有几个考场细节经验。第一计算题一定要把单位和过程写清楚最好先用文字写出使用哪个公式再代入数据这样就算最后结果算错了步骤分还是能拿到。第二熟练做好二进制和十进制的转换是IP题的基础建议考前练几遍常见掩码对应的十进制值比如255.255.255.0、255.255.255.128、255.255.255.192这些。第三在看到“带宽”这个词的时候要立刻想到题目里可能说的是“数据传输速率”而不是“信道频率范畴”因为很多时延和效率计算里的带宽单位是bps跟通信原理里的带宽Hz不是一回事。5. 从复习到实战我的个人心得整理完这份计算题之后我最大的体会是计算机网络计算题并不追求数学的深度它更考验的是你对协议机制本身的理解程度。只要把每个协议“为什么这样设计”搞清楚公式自然而然地就进了脑子而不是死记硬背。比如你理解了CSMA/CD是因为要保证碰撞能被发送端检测到才能明白为什么要对最小帧长做限制你理解了滑动窗口是为了充分利用网络带宽才能明白效率公式里为什么会出现RTT这个量。最后再分享一个小技巧。我在考前冲刺阶段会把每类计算题各挑两三道真题不多做但每一道都按“审题 → 标出已知条件 → 列出公式 → 完整计算 → 反向检查”这五步走完。反向检查尤其重要把算出来的结果代回到公式里看式子两边是否成立或者是用另一个思路比如画图、换一种公式验证同一道题的结果是否一致。这样练过十道题左右考场上基本就能形成“肌肉记忆”了。希望这份整理对你也有用。复习到这个阶段最忌讳的就是焦虑——计算题题型是有限的把有限的面都覆盖到位心里基本就有底了。
阅读完成 · 觉得有帮助?