期末复习计网的日子对计科的同学来说总有点魔幻明明是一门讲协议的课背起来却像文科可一到考试满卷子都是计算题。我当年就是吃了这个亏——概念背得滚瓜烂熟翻开“计科-计网8-计算题”这个整理文件夹才发现CRC、香农公式、RSA这些计算题几乎没法下手。于是花了两个晚上把所有高频计算题重新过了一遍整理出一套“看到题干就知道该套哪个公式”的做题思路这才把分数稳住。这篇就把我的整理方法和手算过程完整写出来适合正在学计网、准备期末或者考研复习的计科同学尤其适合那种“公式背了但不会用”的人。如果你非要把标题里的“计网8”对应到教材章节大部分教材的第8章是网络安全确实有一道镇场大题RSA但实际考试的计算题往往从第2章物理量一路算到第8章所以我按整个课程来整理把所有必须会手算的题型串成一张地图。1. 为什么“背会知识点”不等于“会做计算题”——先看计网计算题分布地图1.1 全课程计算题分布地图计算机网络这门课的计算题有一个很明显的规律越偏底层的章节计算越多越偏应用层越偏向流程描述。我复习时会把见过的历年真题按题型归类大致是下面这张分布表。章节/主题典型计算题常见考法物理层奈氏准则、香农公式、码元速率与数据速率给带宽、信噪比、电平数求极限速率数据链路层CRC循环冗余校验、CSMA/CD最小帧长、滑动窗口利用率手算余数、判断差错、求最大帧长网络层子网划分、CIDR聚合、最长前缀匹配、路由表更新给地址块求子网范围、聚合后前缀传输层滑动窗口序号位数、信道利用率、TCP拥塞控制cwnd变化给窗口大小求序号位数、画cwnd变化网络安全RSA加解密与签名、报文摘要、分组密码参数生成密钥、加密解密、签名验证1.2 按性价比分配复习精力我刷了几套真题之后发现CRC、子网划分、滑动窗口这三类几乎是必考项而且套路固定、步骤明确属于“练熟就白给分”的题型。物理层的奈氏和香农更是送分题难点只在于判断用哪个公式。RSA在一些学校作为压轴大题虽然计算繁琐但流程非常固定。反倒是TCP拥塞控制这种画图表题有时候反而容易因为细节丢分。我的策略是先拿稳前三个高频题型再攻RSA最后才去啃拥塞控制那些边角料。这背后的逻辑其实很简单计网计算题不是在考数学而是在考“你把协议的边界条件搞清楚没有”。理解了每个公式对应的协议机制公式自然就记得住死记硬背反而最容易在单位换算、边界条件上翻车。2. 链路层最容易拿分也最怕手滑CRC循环冗余校验完整手算流程2.1 为什么不直接求和而要“模2除法”CRC即循环冗余校验数据链路层用来检测帧是否在传输中被破坏。很多人第一次看到模2除法觉得奇怪为什么加减法都变成异或其实很简单CRC的数学基础是多项式除法而模2运算天然适合硬件异或门实现不需要考虑进位和借位。你可以把它理解为“只判断相同还是不同”1异或1得00异或0得01异或0得1。另一个容易混淆的点是CRC是用“发送数据校验位”这个整体去除一个双方约定的生成多项式余数为0就认为没出错。这个“校验位”就是之前信息位后面补的0经过除法得到的余数补在信息位后面一起发出去。2.2 完整手算示例先看一个非常典型的考试题目待发送的数据位串 M 1010001101生成多项式 G(x) x^5 x^4 x^2 1求CRC校验位和最终发送帧。第一步确定校验位位数。G(x)的最高次数是5所以校验位位数 r 5。然后把 M 后面补5个0得到 101000110100000。第二步把生成多项式的系数写出来G(x) 对应比特串 110101注意 x^5、x^4、x^2、x^0 的系数是1其他是0。第三步做模2除法。直接用长除法的过程展示前几步101000110100000 ÷ 110101 被除数前6位101000 101000 ⊕ 110101 011101 → 取后5位11101拉下一位1得111011 111011 ⊕ 110101 001110 → 取后5位01110拉下一位1得011101 011101 最高位是0商0 → 取后5位11101拉下一位0得111010 111010 ⊕ 110101 001111 → 取后5位01111拉下一位1得011111 ...整个过程你不需要关心商是多少只用把最后一次异或的结果截取 r5 位就可以了。我完整算下来最终余数是 01110。第四步把余数拼到原数据后面发送帧就是1010001101 01110也就是 101000110101110。接收端收到这个比特串后用同一个生成多项式 110101 去除如果余数为0则认为帧无差错如果余数不为0说明有比特位在传输过程中出错需要重传。2.3 手算最容易翻车的三个点我当年在这个知识点上丢过好几次分总结下来是这三个地方余数位数不够 r 位时必须在前面补0。比如你最后算出来余数是111但 r5那就要写成00111不能直接写111。你补到信息位后面的时候缺一个0都是错的。生成多项式的系数要写对。最高位和最低位必须是1考试如果给的是十六进制写法比如0x05你要能先转化成二进制再算。不要被“除法”这个说法带偏。商在计算中没用只留余数。很多同学在考场上一味想凑商结果把自己绕晕了。另外提醒一句CRC只能检错不能定位哪个比特出错更没有纠错能力。考题经常在选择题里把“可以纠错”作为一个干扰项这是最典型的坑。3. 不是只有“255.255.255.0”子网划分与CIDR聚合的快速心算技巧3.1 子网划分的核心块大小子网划分在计网计算题里几乎必考但也是很多人的心理阴影。其实你不用死记掩码表抓住一个核心概念就够了块大小 2^(32 - 掩码长度)。这里的块大小表示这个子网包含多少个IP地址包括网络地址和广播地址。举个例子把 192.168.4.0/24 分成4个等长子网。原本掩码是 /24要分成4个子网需要向主机位借2位掩码变成 /26。这时块大小 2^(32-26) 64也就是每个子网有64个地址。四个子网分别是子网号广播地址可用主机范围可用主机数192.168.4.0192.168.4.63192.168.4.1 ~ .6262192.168.4.64192.168.4.127192.168.4.65 ~ .12662192.168.4.128192.168.4.191192.168.4.129 ~ .19062192.168.4.192192.168.4.255192.168.4.193 ~ .25462注意每个子网都要减掉网络地址和广播地址所以可用主机数 块大小 - 2。很多同学算完块大小直接说“可用64个”这是最经典的丢分位置。另外给你任意一个IP判断它属于哪个子网时用IP地址与掩码按位相与就能得到网络地址也可以直接看它落在哪个块区间里这对快速解题更快。3.2 CIDR聚合的“对齐”陷阱CIDR聚合和子网划分是一体两面子网划分是把大块拆小块聚合是把小块合成大块。但聚合有一个隐藏条件每一级的块边界必须对齐。不是任意两个相邻网段都能直接合并。举个例子192.168.24.0/24 和 192.168.25.0/24 可以聚合吗把第三字节换成二进制24 0001100025 00011001。可以看到前7位完全一样只有最后一位不同所以这两个/24可以聚合成一个 /23网络地址是 192.168.24.0/23掩码是 255.255.254.0。可用地址范围是 192.168.24.1 到 192.168.25.254总共510个。但如果问你 192.168.25.0/24 和 192.168.26.0/24 能不能聚合成 /23答案是“不能”。因为25 0001100126 00011010它们在第三字节的前7位就不一样了强行合并成 /23 会导致前缀不能形成一个连续且对齐的地址块。这种情况下只能找更大的前缀块比如 /22从 192.168.24.0/22 开始才能把这两个网段同时覆盖进去。我自己的快速判断方法是/23 块的起始第三字节必须是偶数/22 块的起始第三字节必须是4的倍数/21 必须是8的倍数。这个规律在考场上非常救命不用每次都掰二进制。3.3 最长前缀匹配的做题套路路由表计算题里最长前缀匹配也是常见考点。原则只有一条多个路由表项都匹配时选择掩码最长也就是前缀最长的那个。比如目的地址 202.113.16.150路由表里同时有 202.113.16.0/24 和 202.113.16.128/27后者更具体所以走后者。做题时先按掩码长度排序再从最长的开始逐个判断把目的地址和掩码相与看落不落在对应网络地址范围内。这里特别提醒不要上来就算二进制先看IP的前几段很多题目用排除法几秒钟就能出答案。4. 滑动窗口那点事GBN、SR和停止等待协议的窗口与序号计算4.1 三种可靠传输协议的窗口限制滑动窗口是传输层和链路层都爱考的计算点核心是序列号位数的计算。背景是发送方和接收方靠序号来区分新旧数据如果序号不够用就会产生歧义所以不同协议对窗口大小有硬性限制。停止等待协议发送窗口1接收窗口1相当于最原始的“发一个等一个”。GBN后退N帧发送窗口 ≤ 2^n - 1n是序号位数。SR选择重传发送窗口 接收窗口 ≤ 2^n通常会取两边相等。为什么GBN不是2^n而是2^n - 1最常见的解释是如果发送窗口等于整个序号空间接收方发回的ACK全部丢失时发送方超时重传的帧会让接收方无法区分“这是新帧还是重复帧”。必须空出一个序号作为边界标记来消除歧义。SR协议因为有接收窗口缓存乱序帧所以可以让发送窗口和接收窗口加起来正好占满序号空间。4.2 信道利用率先算发送周期信道利用率这道题几乎所有学校都爱考。先记住公式框架利用率 发送时间 / 发送周期。这里发送周期 发送时间 传播时间 确认帧的传播时间。如果题目说忽略确认帧发送时间和处理时间那就简化成发送周期 T帧 2 × 单向传播时延 信道利用率 T帧 / (T帧 2τ)举个例子链路数据速率 1Gbps数据帧长 1000 字节单向传播时延 5μs忽略确认帧长度。那么帧长 1000字节 8000 bitT帧 8000 / 1Gbps 8μs发送周期 8 2×5 18μs停止等待时利用率 8 / 18 ≈ 44.4%如果改用发送窗口为4的GBN协议理论利用率变成 4×8 / 18这是一个超过1的数字。超过1说明链路已经饱和实际最大利用率就是100%。这时候瓶颈不再是等待确认而是发送方自身的发送速率和链路带宽。这个“超过1取100%”的细节考场上很多同学会愣一下。4.3 带宽时延积和序号位数理解信道利用率之后带宽时延积就顺理成章了。带宽时延积 数据速率 × 往返时间表示“在一条链路上同时可以承载的数据量”。还是上面的例子R×2τ 1Gbps × 10μs 10000bit 1250字节。意思是即使没有任何确认机制链路上同时传输的数据也只有1250字节。而你一个帧就有1000字节所以停止等待协议每发一帧就有接近一半时间在空等。序号位数题目通常是反向考法。比如GBN协议的发送窗口大小为32问最小需要几位序号答案是 2^n - 1 ≥ 32所以 n≥6。如果你直接写5那就踩坑了因为2^532但GBN窗口最多只能到31。如果换成SR协议发送窗口接收窗口32则需要 3232 ≤ 2^nn≥6如果窗口都到64就需要n≥7。我把这部分跟 BW带宽时延积联系起来复习之后才真正理解为什么高速长距离链路上要用大窗口窗口的本质就是“允许在RTT时间内发多少数据才能填满管道”。5. 香农公式、奈氏准则与CSMA/CD最小帧长两个公式一个边界5.1 无噪声用奈氏有噪声用香农物理层的极限速率计算题本质就是两个公式的取舍问题奈氏准则C 2W·log₂V适用无噪声环境。W是带宽V是信号电平数。香农公式C W·log₂(1 S/N)适用有噪声环境。S/N是信噪比。判断依据很简单题目同时给了信噪比就用香农题目只给带宽和电平数就用奈氏。如果两个条件都给通常要算两个值再取较小者因为真实系统的速率要同时受两个因素限制。5.2 分贝与倍数的换算坑香农公式最大的坑不在公式本身而在单位。题目说“信噪比为30dB”很多同学直接把30代入公式那会大错特错。正确的换算是S/N 10^(30/10) 1000也就是说30dB对应的是信号功率是噪声功率的1000倍。只有题目直接写“信噪比为1000”这种无量纲比值时才能直接代入。如果带宽为4000Hz那么C 4000 × log₂(1 1000) ≈ 4000 × 9.966 ≈ 39864 bps奈氏那边的典型题是带宽3kHz使用4电平传输最大数据速率 C 2×3000×log₂4 12000bps。这种题属于送分题但经常有人把2倍关系忘掉直接写成 3000×2 6000反而错了。5.3 CSMA/CD的最小帧长怎么来的CSMA/CD的碰撞检测机制要求发送方在发送完一帧之前必须能检测到最远端的碰撞。因此最小帧长 数据速率 × 最远往返传播时延。公式就是Lmin 2τ × R其中τ是单程传播时延2τ就是往返时间R是数据速率。道理很生活化你说话还没说完的时候就要听到别人反驳的声音才知道吵架了如果话说完了才听到那就晚了只能重新开始。看一道经典题总线长度1km信号传播速率200m/μs数据速率10Mbps求最小帧长。单程时延 1000 / 200 5μs往返10μs最小帧长 10Mbps × 10μs 100bit。这个结果只有12.5字节。而标准以太网为什么定64字节512bit因为覆盖的碰撞域更大同时留出了余量保证快速发送时也能可靠检测碰撞。如果题目反着问“已知帧长64字节求最大碰撞域距离”还是一样公式先算2τ 512bit / 10Mbps 51.2μs再根据信号传播速率求距离。这个知识点很容易和CRC一起出现在第二道大题里两类都是必须拿分的题。6. RSA从密钥生成到加解密签名网络安全章节的“镇场大题”6.1 密钥生成五步走到了网络安全这一章计算题的核心基本就是RSA。考试不会让你处理上千比特的大素数通常给两个小素数考察完整流程。以最常见的教学参数 p11、q13 为例。密钥生成分五步计算 n p×q 11×13 143。计算欧拉函数 φ(n) (p-1)×(q-1) 10×12 120。选一个公钥指数 e要求 1 e φ(n)且 gcd(e, φ(n)) 1。考试通常直接给你 e7。求私钥 d满足 d×e ≡ 1 (mod φ(n))也就是 7d mod 120 1。找满足条件的d试算到 d103因为 7×103 721721 mod 120 1。这里要注意公钥是 (e, n) (7, 143)私钥是 (d, n) (103, 143)。公钥不保密私钥绝对不能公开。考试经常在填空或选择题里考“哪一组是公钥、哪一组是私钥”不要写反。6.2 加密解密手算过程别硬算大数加密时使用公钥。假设明文 M2密文 C M^e mod n 2^7 mod 143 128。这里2的7次方还不算大但解密就吓人了M 128^103 mod 143。如果你直接在考场上硬乘计算器都可能溢出。正确做法是“平方-乘”法把指数拆成二进制幂次边算边取模。我知道处理大数幂取模是很多人的障碍下面把整个过程写清楚。先把 103 拆成 6432421然后从128开始逐次平方取模128^1 mod 143 128 128^2 mod 143 82 128^4 mod 143 3 128^8 mod 143 9 128^16 mod 143 81 128^32 mod 143 126 128^64 mod 143 3所以128^103 mod 143 128^64 × 128^32 × 128^4 × 128^2 × 128^1 mod 143 3 × 126 × 3 × 82 × 128 mod 143逐步计算3 × 126 378 mod 143 92 92 × 3 276 mod 143 133 133 × 82 10906 mod 143 38 38 × 128 4864 mod 143 2最终得到 2正好等于原来的明文。这一套流程练熟之后RSA计算题其实就是“反复平方、取模、乘起来、再取模”机械性很强但绝对值得多写几遍。6.3 数字签名与加密的区别私钥公钥别反着用RSA还有一个高频概念题数字签名。它的本质是用私钥签名用公钥验证而加密是公钥加密、私钥解密。两者正好相反。签名的作用是身份认证和防抵赖因为私钥只有发送方自己知道所以能用私钥生成合法签名的就证明这条消息来自发送方。而加密的作用是机密性只有持有私钥的接收方才能解开密文。有的题目会问发送方想同时保证机密性和完整性应该怎么做标准回答是“先用自己的私钥签名再用接收方的公钥加密”。顺序不能反过来因为先加密再签名的话签名本身不包含接收方身份信息在某些场景下可能被利用。这一点不一定让你计算但经常出现在选择填空里顺便一起整理了。7. 最后冲刺阶段怎么刷计算题按题型横向刷不按章节刷考前最后两三天我建议不要再看整本教材的知识点了也别顺着章节顺序从前往后复习。我自己的方法是把所有历年真题里的计算题全部扣出来然后按题型横向刷一晚上只做CRC把所有题做熟第二天只做子网划分和CIDR第三天集中练滑动窗口。这样做的原因是计算题考的是套路熟练度你在短时间反复做同一类题很容易形成肌肉记忆考试看到题干关键词就能自动反应出公式。按性价比我给一个刷题优先级必拿CRC、子网划分、奈氏/香农、CSMA/CD最小帧长。这四类只要练两遍就不该再扣分。多练滑动窗口利用率和序号位数、RSA密钥与加解密。这些稍微复杂但是步骤固定练熟之后正确率可以很高。有空再看TCP拥塞控制的cwnd变化图、IP分片偏移量、UDP/TCP校验和计算。这类题出现频率相对低而且容易耗时间。考场上的检查清单也分享一下。CRC手算一定要把余数位补齐再拼到帧尾子网划分算可用主机数一定要减2信噪比给的是dB就必须先转倍数再代入香农RSA算大数幂一定用平方-乘不要硬乘看到“最大”“最小”这种词先圈出来再决定是套奈氏还是香农。我个人的体会是计网计算题真的不难难就难在把一堆公式对应到正确的题型上。把整理好的题型模板过一遍比单纯重看教材概念管用得多。最后一个小技巧考前把所有公式做成一张便签左边写公式右边写适用场景贴在电脑边每做一道题之前先判断场景再动笔。这个方法帮我从“背了不会用”变成“看到题干就知道算哪里”希望你也能用上。
阅读完成 · 觉得有帮助?