ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

计算机网络计算题核心考点全梳理:时延、CRC、子网划分与路由更新

计算机网络计算题核心考点全梳理:时延、CRC、子网划分与路由更新 简介这是一份以计算机网络典型计算题为线索的复习文档适合备考期末、考研复习或需要补基础算法能力的读者。文档按题型串联零散公式覆盖电路交换与分组交换的时延比较、发送与传播时延分析、香农公式求信道容量、传输效率计算、光波频带宽度、CRC差错检验、PPP帧解析、码分多址等常见考点每一题均给出已知条件、推导过程和结论便于对照练习和自查。压缩包内仅含1个docx文件共57KB内容轻量可直接阅读或打印。当前已有217人学习。通过梳理这些题目的解题思路读者能清楚理解分组交换存储转发延迟与电路建立时间的关系、总时延中发送时延与传播时延的主导条件、信噪比与带宽的换算关系以及应用层数据长度对传输效率的影响同时掌握CRC校验余数计算和码分多址信号分解方法从而提升综合计算能力和解题准确率。1. 这份计算机网络计算题文档考前最后三天靠它突击够不够期末周刷题的时候最容易翻车的不是概念题而是那些看着简单、一按计算器就错的时延、子网掩码和 CRC 余数。这份《计算机网络计算题》文档从电路交换与分组交换的时延比较一路做到距离向量算法下路由表的逐条更新基本把谢希仁教材里能出计算题的知识点都按题号收进来了。如果你正在准备计算机网络期末复习、考研 408 或自考又不想从厚厚的教材里自己抠题这份题集就是现成的刷题清单。别急着从头看到尾我建议你按「先做一遍 → 对答案 → 找自己错在哪一章」的顺序用因为它每道题都给了完整解答过程连中间步骤都没跳。适合的人很明确考前需要集中火力把计算题题型过一遍的考生以及想对照标准解题过程查漏补缺的从业者。2. 时延与传输效率把公式抄对更要学会处理单位2.1 电路交换与分组交换的时延比较一个不等式定胜负第 11-10 题是经典的方案选型题要传送的报文共 x bit从源点到终点经过 k 段链路每段链路传播时延为 d 秒数据率为 b b/s。电路交换需要额外的电路建立时间 s 秒分组交换则把报文切成 p bit 的分组。电路交换的总时延是三段相加电路建立时间 s、整份报文的发送时间 x/b、以及 k 段链路的传播时延 kd。也就是s x/b kd。分组交换没有电路建立时间但多了存储转发延迟发送时延是(x/p) * (p/b)也就是分成 x/p 个分组、每个分组花 p/b 秒发送真正容易漏的是(k-1) * (p/b)这表示第一个分组到达目的节点之前后面的分组还在中间节点逐跳排队转发的额外时间。# 用于比较两种交换方式总时延的简单验算脚本 def circuit_total(x, k, d, b, s): 电路交换总时延建立时间 发送时延 传播时延 return s x / b k * d def packet_total(x, k, d, b, p): 分组交换总时延发送时延 存储转发时延 传播时延 return (x / p) * (p / b) (k - 1) * (p / b) k * d # 参数示例报文 10000 bit3 段链路每段传播时延 0.001s数据率 1000 b/s # 分组长度 500 bit电路建立时间 0.05s x, k, d, b, p, s 10000, 3, 0.001, 1000, 500, 0.05 print(电路交换时延:, circuit_total(x, k, d, b, s)) print(分组交换时延:, packet_total(x, k, d, b, p))代码里的packet_total把(x/p)*(p/b)拆开写是为了直观看出「分成多少组 × 每组发送时间」。实际做题时建议直接把公式合并为kd x/b (k-1)*(p/b)。推导结论是当s (k-1)*(p/b)时分组交换时延更小当报文很长且分组很短时电路交换的建立时间成本就显得更突出。这个条件想不明白的话画一条 k 段链路的草图数一数中间有几个存储转发节点答案立刻就出来了。2.2 发送时延和传播时延数据长度与速率谁说了算第 1-17 题给了两组对照数据距离 1000km传播速率 2×10⁸ m/s。第一组数据长度 10⁷ bit、发送速率 100 kb/s第二组数据长度 10³ bit、发送速率 1 Gb/s。计算发送时延就是「数据长度 ÷ 数据率」传播时延是「距离 ÷ 传播速率」。第一组发送时延 100 秒传播时延 0.005 秒发送时延占了绝对主导第二组发送时延 1 微秒传播时延仍是 0.005 秒这时传播时延成了主要成分。很多初学者在这道题上翻车原因不是公式不会而是把 100 kb/s 当成 100 字节每秒或者把 10⁷ bit 当成 10 MB。记住一句话凡是做时延计算统一先把单位换成 bit 和 b/s最后再决定要不要换算成更高单位。这道题的核心结论很简单数据长、速率低发送时延主导数据短、速率高传播时延主导。做网络性能分析时这个判断决定了你要优化链路带宽还是优化传输距离。2.3 数据传输效率分层首部开销是怎么吃掉带宽的第 1-19 题给了个特别直观的例子100 字节应用层数据加 20 字节 TCP 首部、20 字节 IP 首部、18 字节以太网首部尾部总开销 58 字节。传输效率就是 100 除以 158约 63.3%。同样的数据变成 1000 字节后效率升到 94.5%。这个计算本身不难但背后有个考试常问的点每一层加的首部都是独立叠加的不是只加一次。TCP 加 20、IP 再在 TCP 报文上加 20、以太网再在最外层加 18这是「洋葱模型」的字节开销。另外一个高频易错点算效率时分子分母都要用同一单位并且分母要把所有层的首部都加进去。如果题目说应用层数据 1000 字节结果有人只加了 IP 首部没加 TCP 首部算出来自然是错的。这类题出现在期末试卷里通常不是考你除法而是考你层与层之间的封装关系是否理解。平时做题建议自己列一张表应用层数据多少、经传输层后多少、经网络层后多少、经链路层后多少每一步都写清楚考场上才不会漏项。3. 物理层计算香农公式、光波频带与 CDMA 码片的判定思路3.1 香农公式与信噪比倍数别把分贝和倍数混一起第 2-09 题是香农公式 C W log₂(1S/N) 的经典考法。信道带宽 3100Hz当前最大传输速率 35 kb/s要让速率增加 60%问 S/N 增大到多少倍。解法是把 C/W 作为指数SN1 2^(35000/3100) - 1SN2 2^(1.6×35000/3100) - 1两者比值约为 100 倍。这里有个坑很多人算到这一步就拿着 100 去选答案没注意题目问的是「信噪比增大到多少倍」不是「速率增大多少倍」——虽然题面数值恰好暗示了倍数关系但换个参数就必须老实算指数差。这道题的后续追问更关键在刚才基础上把 S/N 再增大 10 倍最大信息速率只能再增加约 18.5%而不是 20%。原因是指数函数里 S/N 是以对数形式进入的基数越大同等信噪比提升带来的速率增益越小。这个特性也解释了工程上为什么不会无限堆信噪比来提高信道容量——边际收益递减明显。做题时建议把香农公式变形为C1/W log2(1S/N)这样所有比较都转化成指数运算不容易乱。3.2 光波频带宽度先统一单位再除第 2-12 题给的是 1200nm 到 1400nm、1400nm 到 1600nm 两个波长范围光在光纤中传播速率 2×10⁸ m/s。频带宽度公式是 B V/L1 - V/L2也就是用传播速率分别除以两个边界波长再相减。1200nm 范围的带宽约 23.8 THz1400nm 范围约 17.86 THz。这题单位换算容易看走眼nm 先转成 m1nm 10⁻⁹ m然后代入 2×10⁸。很多人在这一步把 1200nm 直接写成 1200算出的数量级差十万八千里。还有个细节值得注意题目给的传播速率是 2×10⁸ m/s这是光纤中的速率不是真空光速 3×10⁸ m/s。考试换个数考你时传播速率务必以题目给定值为准。这道题在考研题目里不算难但它是「物理层计算题」里为数不多需要把物理单位从头捋到尾的题建议按「波长转米 → 分别求频率 → 相减」三步固定下来。3.3 CDMA 码片序列识别内积为 0 就是静默第 2-16 题给四个站的码片序列 A、B、C、D以及接收到的混合序列 S问哪个站发了数据、发的是 0 还是 1。解法是逐个做内积S·A 1说明 A 发了 1S·B -1说明 B 发了 0S·C 0说明 C 静默S·D 1说明 D 发了 1。码分多址的核心是正交码每个站和自己的码片内积归一化为 1与其他站内积为 0。# CDMA 内积判定1 表示发送 1-1 表示发送 00 表示未发送 import numpy as np S np.array([-1, 1, -3, 1, -1, -3, 1, 1]) stations { A: np.array([-1, -1, -1, 1, 1, -1, 1, 1]), B: np.array([-1, -1, 1, -1, 1, 1, 1, -1]), C: np.array([-1, 1, -1, 1, 1, 1, -1, -1]), D: np.array([-1, 1, -1, -1, -1, -1, 1, -1]), } for name, code in stations.items(): result int(np.dot(S, code) / 8) # 除以码片长度做归一化 print(name, result)这里有个易错点内积算出来要先除以码片长度再做判断因为码片序列长度为 8直接累加得到的是 8、-8 或 0需要归一化到 1、-1、0。不少参考答案直接写除以 8就是这个原因。这个脚本里np.dot(a, b)是对应位相乘再求和除以 8 是为了映射到三个离散状态实际考试手算时就老老实实把两个八维向量逐位相乘再相加先不除 8然后统一判断正负零更不容易出错。4. 链路层计算CRC 余数、PPP 填充与 CSMA/CD 的争用期4.1 CRC 校验模 2 除法怎么算余数怎么补位第 3-07 题是 CRC 的典型计算要发送的数据 1101011011生成多项式 P(X) X⁴ X 1对应的二进制除数是 10011。计算过程是在原数据后补 4 个 0因为多项式最高次数是 4然后做模 2 除法等价于按位异或不借位不进位。得到的余数是 1110这就是要添加的帧检验序列 FCS。考试答案里唯一可能被扣分的是补零个数最高次是几次就补几个 0。P(X) X⁴X1 是 4 次多项式所以补 4 个 0P(X) X³1 就补 3 个 0。def crc_remainder(data: str, divisor: str) - str: 模 2 除法求 CRC 余数data 已包含补零 data list(data) n len(divisor) for i in range(len(data) - n 1): if data[i] 1: for j in range(n): data[ij] str(int(data[ij]) ^ int(divisor[j])) return .join(data[-(n-1):]) print(crc_remainder(11010110110000, 10011)) # 预期 1110 print(crc_remainder(101110000, 1001)) # 预期 011这个实现的逻辑是从左往右扫描遇到当前位为 1 就和除数做异或扫完剩下的尾部就是余数。data[-(n-1):]取的是最后 n-1 位因为余数位数比除数少一位。第 3-08 题用除数 1001 对 101110000 做同样操作余数是 011注意余数位数不足时要补前导 0 写成三位。两道题做完你会发现CRC 的「发现错误」能力针对的是突发错误但这不意味着链路层就可靠了——第 3-07 题最后问得很刁CRC 能发现错误数据链路层的传输是否就变成可靠了答案是否定的差错检测只能丢弃错帧可靠传输还需要确认、重传、序号这些机制。把它答成「是」的基本是对可靠性的理解不到位。4.2 PPP 填充字节填充和零比特填充分别怎么还原第 3-09 题给了一串十六进制的 PPP 帧数据7D 5E FE 27 7D 5D 7D 5D 65 7D 5E要还原真正的数据。PPP 字节填充的规则是0x7E 转义成 0x7D 0x5E0x7D 转义成 0x7D 0x5D。所以还原时看到 7D 5E 就换回 7E看到 7D 5D 就换回 7D。实际答案是7E FE 27 7D 7D 65 7E。做这类题别急着从头扫到尾先在草稿纸上把每一对 7D 开头的两字节圈出来再逐一替换能避免漏掉中间的 7D 5D。第 3-10 题是同步传输下的零比特填充发送端每遇到连续 5 个 1就自动在后面插入一个 0。发送比特串0110111111111100中间有连续 10 个 1前 5 个 1 后插 0 变成 6 个 1 后跟 0紧接着的 5 个 1 再插一个 0最后结果要仔细一位一位数。接收端删除规则正好相反每看到连续 5 个 1 后的那个 0 就删掉。题目里给的接收串0001110111110111110110删除插入的零比特后要恢复成原数据。我见过不少人在这题上犯错是因为把「连续 5 个 1 后插 0」理解成了「每 5 个 1 就补一个 0」实际是只要出现连续 5 个 1 就插入连续 10 个 1 要插两次。4.3 CSMA/CD争用期决定最短帧长退避时间按争用期数来算第 3-20 题和 3-22 题是 CSMA/CD 计算的两块硬骨头。第 3-20 题1km 长的网络数据率 1 Gb/s信号传播速率 200000 km/s单程传播时间 5 微秒往返 10 微秒。CSMA/CD 要求发送时间至少不小于往返传播时间否则发送方发完帧还没检测到碰撞无法确定是否冲突。所以最短帧长 1 Gb/s × 10μs 10000 bit即 1250 字节。第 3-22 题是退避时间10 Mb/s 以太网争用期 51.2 微秒随机数 r 100等待 5.12ms100 Mb/s 以太网争用期 5.12 微秒等待 512 微秒。第 3-24 题更刁问 A 在发送完毕之前能否检测到碰撞。这题的考点有两个一是最短帧要算上前同步码和帧定界符即 64 字节数据 8 字节前导总共 72 字节 576 比特时间二是 A 和 B 之间传播时延 225 比特时间只要 B 在 A 发完之前发帧A 就能在发完前检测到碰撞。不少答案只算 64 字节漏了 8 字节前导得出结论就完全反了。第 3-28 题则是送分题但考概念10 个站接集线器共享 10 Mb/s接 100 Mb/s 集线器共享 100 Mb/s接交换机每个站独享 10 Mb/s。集线器是物理层设备所有端口在一个冲突域交换机隔离冲突域每端口独立带宽。这个区分在期末选择题里反复出现。5. 网络层计算从 IP 分类、分片到子网划分的完整链路5.1 IP 地址分类与分片计算片偏移按 8 字节计不是按字节计第 4-10 题考 IP 地址类别判断。第一字节 1~126 是 A 类128~191 是 B 类192~223 是 C 类。文档里给的那六组地址21.12.240.17 和 89.3.0.1 是 A 类128.36.199.3 和 183.194.76.253 是 B 类192.12.69.248 和 200.3.6.2 是 C 类。这类题基本没什么计算量关键是边界127 开头的环回地址不算 A 类常规地址224 以上是 D/E 类做题时遇到 192 开头别惯性往 B 类写。分片计算是网络层计算题的常客。一个 3200bit 的 TCP 报文加 160bit IP 首部要去一个 MTU 数据部分只有 1200bit 的局域网。这里有个隐蔽的坑IP 分片的片偏移字段是以 8 字节64bit为单位的。虽然数据部分最多 1200-1601040bit但拆片时每个数据片必须按 64bit 对齐所以实际每片数据部分最大只能到 1024bit。3200bit 报文要分 4 片第二个局域网向上层传送的总比特数是 3200 4×160 3840bit。第 4-22 题是 4000 字节报文、MTU 1500 字节、固定首部 20 字节分成三片1480、1480、1020 字节片偏移分别是 0、185、370。185 这个数来自 1480÷8很多人想不通为什么不是按字节直接写 1480因为片偏移字段本身只有 13bit最大只能表示 8191 个 8 字节单元所以 IP 协议强制用 8 字节为单位。5.2 子网划分的逆推知道主机数怎么挑掩码第 4-21 题是实际的网络规划题一个 B 类地址 129.250.0.04000 台机器分布在 16 个地点平均每个地点 250 台。如果用 255.255.255.0 这个 /24 掩码每个子网可用主机数是 2⁸-2 254够 250 台子网数 2⁸-2 254也远大于 16。于是每个地点分一个子网号从 129.250.1.0 到 129.250.16.0主机范围都是 x.x.x.1~x.x.x.254。这题要理解的关键是「-2」全 0 是网络地址全 1 是广播地址都不能分配给主机。B 类地址原本的默认掩码是 255.255.0.0划成 255.255.255.0 相当于从主机位借了 8 位做子网位。做题时首先确认 2ⁿ-2 ≥ 需求数再去选掩码就不会出现选了 /24 结果主机数不够的尴尬。第 4-29 题的地址块分配比上面更接近真实网络规划自治系统分到 30.138.118/23下面挂 5 个局域网LAN2 到 LAN5 主机数分别是 91、150、3、15LAN1 至少需要 3 个地址给路由器用。分配原则是「先分大的再分小的」150 台最少需要一个 /2491 台用一个 /25126 可用足够15 台用 /2730 可用比 /26 更省3 台用 /296 可用。文档给了两组答案区别就在 LAN1 的地址块是从哪段切出来的。这题不用死记答案只要按主机数排序、从小到大分配前缀并且保证各子网不重叠就算对。另外注意 /23 表示网络位 23 位整个块总共只有 512 个地址所有子网加起来的可用地址不能超这个数。5.3 CIDR 聚合与前缀匹配看二进制别瞪着十进制看第 4-26 题是 CIDR 路由聚合212.56.132.0/24、133.0/24、134.0/24、135.0/24 四个块能不能聚成一个。把第三字节 132~135 写成二进制132 10000100133 10000101134 10000110135 10000111。它们的高 6 位完全一样100001加上前两个字节共 22 位相同所以聚合结果是 212.56.132.0/22。做聚合题的硬性规则是地址块必须连续且数量是 2 的幂四个 /24 能聚合的前提是它们正好构成连续的 4 个块。前缀匹配题则反着来给你一个前缀判断哪个地址匹配。第 4-31 题 86.32/12 的前 12 位是01010110 0010四个候选地址第二字节前 4 位分别是 0010、0100、0011、0100只有第一个 86.33.x.x 匹配。第 4-33 题更综合152.7.77.159 和 152.31.47.252 都匹配的前缀是 152.0/11。152 的二进制前 8 位是 10011000152.7 第二字节是 00000111152.31 第二字节是 00011111前 3 位都是 000所以一共 11 位相同。这类题的做题顺序我建议固定先把前缀写成二进制再逐位比较候选地址不要试图在十进制里找规律。6. 避坑自查四个高频丢分点与一道路由更新题的验算习惯先说四个我在批改和自测里反复见到的丢分点。第一条单位换算发送时延用 bit 除以 b/s 得到秒有人把 100 kb/s 当成 100 字节每秒错。第二条bit 和字节混用以太网最短帧 10000 bit 写成 10000 字节错PPP 帧长度算出来是字节就写字节是 bit 就写 bit别混。第三条片偏移单位分片偏移量除以 8 才是字段值直接写原始字节数错。第四条CDMA 内积忘了除以码片长度算出来 8 就说发送 8错。每条都是「现象 → 原因 → 解决」的结构看到答案数量级不对回去查单位看到分片偏移超过 8191回去看是不是忘了除以 8看到 CDMA 结果落在 ±8回去补一步归一化。路由表更新题是文档最后第 40、41 题的题型也是距离向量算法最常考的验算场景。接到邻居 C 发来的路由信息先对每个「距离」加 1因为从 C 到目的网络还要经过本路由器一跳然后逐条和现有表项比目的网络不在表中添加在表中但下一跳就是 C无论距离变大变小都更新下一跳不同只在新距离更短时更新距离相同或更长保持原表项不动。我自己的验算习惯是拿尺子挡住答案逐条写「加 1 → 比较 → 写动作」做完再放开答案比对十次有九次能提前抓住漏项。这份文档我刷了两轮最大的教训是计算题丢分往往不是不会公式而是没把单位换算和边界条件当回事。从那以后我每道题做完都强制自己检查一遍「单位是不是 bit、补零个数是不是等于最高次、片偏移是不是除以 8」这套习惯帮我期末多拿了十几分。希望帮到你。本文还有配套的精品资源点击获取
返回列表