
简介这份《计算机网络》谢希仁第七版课后题答案完整版面向备战广工计算机考研的考生以及正在学习计算机网络课程的高校学生帮助解决课后习题无从下手、答案零散难核对的问题。资源包内含1个docx文档压缩包约10.23MB内容按章节整理覆盖概述、物理层、数据链路层等核心模块逐题给出解答与推导过程。文档中不仅包含连通性与资源共享、分组交换要点、电路交换与报文交换的对比等基础概念题还详细推导了分组交换时延、最小时延分组长度p[(xh)/(k-1)]^0.5等计算题并梳理了因特网三阶段发展、ISP多层次结构、Internet与internet的区别、WAN/MAN/LAN/PAN分类等高频考点。目前已有2041人学习下载适合需要系统刷题、对照答案查漏补缺的读者也可作为期末复习与考研冲刺阶段的参考材料。1. 从一份 docx 答案说起谢希仁第七版课后题到底该怎么用很多人拿到《计算机网络》谢希仁第七版这本教材第一反应是去搜“课后题答案完整版.docx”下载完往硬盘里一扔期末或者考研复习的时候翻两页发现答案对不上自己的思路又扔回去了。我当年也是这么干的后来带实习生做网络方向的基础培训才发现这份答案文档真正的价值不在“抄答案”而在于它把每一章的考点用最直白的方式摊开了——第一章概述里从 1-01 到 1-32 一共三十二道题覆盖了分组交换时延计算、香农公式、CRC 校验、PPP 帧填充这些必考计算点你顺着题目编号往下做等于把整本书的计算题型过了一遍。这份资源适合三类人期末突击想抓重点的本科生、备考 408 或者自命题院校的考研人、以及像 DevOps 工程师这种需要补网络底层知识但没时间啃完整教材的从业者。它不能替代教材但能帮你把“书上讲了什么”快速转化成“考试和面试会问什么”。2. 第一章概述的计算题拆解时延、带宽与分组长度怎么算2.1 分组交换时延公式的推导逻辑第一章最容易被低估的就是 1-10 和 1-11 这两道时延计算题。很多人看到公式kd (x/p)*(p/b) (k-1)*(p/b)就直接背下来了但考试稍微变个条件就翻车。我一般会先带人把物理场景画出来源点到终点经过 k 段链路每段链路有一个路由器做存储转发传播时延是信号在介质上跑的时间发送时延是数据从网卡推出去的时间。电路交换的时延是kd x/b s其中 s 是建立连接的时间分组交换的时延拆成三块——传播时延kd、所有分组的发送时延(x/p)*(p/b)、以及中间 k-1 个路由器的存储转发时延(k-1)*(p/b)。这里有个容易搞混的点(x/p)是分组数量每个分组长度是 p所以总发送时延就是(x/p)*(p/b) x/b和电路交换的发送时延一样区别在于分组交换多了存储转发的那部分。注意题目里说“各结点的排队等待时间可忽略不计”这个假设在考试里默认成立但实际网络中排队时延恰恰是抖动的主要来源。2.2 最小总时延对应的分组长度求解1-11 是在 1-10 的基础上加了一个固定首部 h分组总长度变成(ph)数据部分还是 p。总时延表达式变成D kd (x/p)*((ph)/b) (k-1)*(ph)/b对 p 求导令其等于零得到p [(xh)/(k-1)]^0.5。这个结果说明分组的数据部分长度和报文总长度 x、首部开销 h 以及链路数 k 都有关系。我一般会让学生代入具体数字验算一遍假设 x10^6 bith100 bitk5那么 p 约等于[(10^6 * 100)/4]^0.5 5000 bit。如果分组太短首部开销占比太高如果分组太长存储转发次数带来的额外时延又上去了。这个平衡点在考研计算题里反复出现务必手推一遍。2.3 发送时延与传播时延的对比结论1-17 和 1-18 这两道题放在一起看特别有意思。1-17 让你算两种情况的发送时延和传播时延数据长度 10^7 bit、发送速率 100 kb/s 时发送时延 100 秒传播时延只有 0.005 秒数据长度 10^3 bit、发送速率 1 Gb/s 时发送时延 1 微秒传播时延还是 0.005 秒。结论很直白——数据量大而速率低的时候发送时延主导数据量小速率高的时候传播时延反而成了主要成分。1-18 进一步让你算“在途比特数”也就是传播时延乘以数据率本质上是时延带宽积的概念。10 cm 的网卡在 1 Mb/s 下在途比特数是 5×10^-4 bit几乎可以忽略但 5000 km 的广域网在 10 Gb/s 下在途比特数达到 5×10^7 bit这就是为什么长肥管道long fat pipe的 TCP 窗口需要特别设计。3. 物理层与数据链路层的硬核计算香农、CRC 与 PPP 填充3.1 奈氏准则与香农公式的联合使用物理层第二章的计算题集中在 2-07 到 2-09。2-07 是奈氏准则的直接应用码元速率 20000 码元/秒16 个振幅等级数据率 20000 × log2(16) 80000 b/s。2-08 和 2-09 则是香农公式的反复操练。香农公式C W * log2(1 S/N)里W 是带宽S/N 是信噪比。2-09 的计算过程值得一步步跟import math # 2-09: 信道带宽 3100 Hz最大传输速率 35 kbit/s W 3100 C1 35000 SN1 2**(C1/W) - 1 print(f原始信噪比: {SN1:.2f}) # 速率增加 60% C2 C1 * 1.6 SN2 2**(C2/W) - 1 print(f增加60%后信噪比: {SN2:.2f}) print(f信噪比增大倍数: {SN2/SN1:.2f}) # 信噪比再增大到 10 倍 SN3 SN2 * 10 C3 W * math.log2(1 SN3) print(f再增大10倍后的速率: {C3:.2f}) print(f速率增加比例: {(C3/C2 - 1)*100:.2f}%)跑完这段代码你会发现信噪比需要增大到 109.5 倍才能让速率提升 60%而在此基础上再把信噪比翻十倍速率只能再提升 18.3%。这就是香农公式的“边际效应递减”——带宽和信噪比对速率的贡献不是线性的实际工程里堆功率不如换更好的介质或者加带宽。3.2 CRC 校验的模二除法手算流程数据链路层 3-07 和 3-08 是 CRC 校验的经典题。3-07 给的数据是 1101011011生成多项式P(X) X^4 X 1对应二进制 10011。手算步骤是在数据后面补 4 个零然后用模二除法异或除以 10011余数就是校验序列。我一般会写个脚本验证def crc_remainder(data, poly): 模二除法求 CRC 余数 data list(data) poly list(poly) for i in range(len(data) - len(poly) 1): if data[i] 1: for j in range(len(poly)): data[ij] str(int(data[ij]) ^ int(poly[j])) return .join(data[-(len(poly)-1):]) data 1101011011 poly 10011 # 补零 data_padded data 0 * (len(poly) - 1) remainder crc_remainder(data_padded, poly) print(fCRC 余数: {remainder}) # 输出 1110算出来余数是 1110添加在数据后面变成 11010110111110。如果传输过程中最后一个 1 变成 0接收端用同样的多项式除余数不为零就能发现错误。但要注意CRC 只能检错不能纠错而且如果错误恰好是生成多项式的倍数CRC 也检不出来——这就是为什么实际协议里 CRC 通常和重传机制配合使用。3.3 PPP 帧的字节填充与零比特填充3-09 和 3-10 考的是 PPP 协议的透明传输。异步传输用字节填充0x7E 变成 0x7D 0x5E0x7D 变成 0x7D 0x5D。题目给的7D 5E FE 27 7D 5D 7D 5D 65 7D 5E还原后是7E FE 27 7D 7D 65 7E。同步传输用零比特填充发送端在连续 5 个 1 后面插入一个 0接收端做相反操作。3-10 的比特串0110111111111100经过填充后变成011011111011111000。这个规则在配置 PPP 链路的时候会碰到比如某些串口调试场景下抓包看到异常的 0x7D 序列就是填充在起作用。4. 避坑与排查答案文档使用中的五个血泪教训4.1 现象答案里的公式和教材对不上原因不同版本的教材印刷批次有差异有些公式的符号定义在第七版和第六版之间调整过。比如 1-10 里的 k 段链路有的版本写的是“结点数”而不是“链路数”差一个数字结果就全错。解决以你手里教材的正文为准答案文档只用来验证思路不要直接背公式。4.2 现象CRC 计算手算结果和答案差一位原因模二除法补零的位数搞错了。生成多项式最高次是 4就要补 4 个零不是补 3 个也不是补 5 个。解决先数生成多项式的最高次幂补零个数等于最高次幂。另外异或运算不要进位这是模二除法和普通除法的根本区别。4.3 现象香农公式计算时信噪比单位混用原因题目给的信噪比有时候是比值有时候是分贝。分贝转比值用10^(dB/10)比值转分贝用10*log10(SN)。2-08 里答案写的是 64.2 dB如果你直接拿 64.2 代入公式算就全错了。解决看到 dB 先转成比值再代入香农公式算完如果需要再转回 dB。4.4 现象PPP 零比特填充的 5110 规则记反了原因有人记成“五个 0 插一个 1”正确的是“五个 1 插一个 0”。解决记住 PPP 帧的定界符是 0x7E二进制是 01111110中间有六个 1所以发送端要避免数据里出现六个连续的 1每五个 1 就插一个 0。4.5 现象时延计算题里传播时延和发送时延搞混原因传播时延是信号在介质上的物理传播时间取决于距离和传播速率发送时延是数据从发送端推出去的时间取决于数据量和发送速率。1-17 里传播时延 0.005 秒是固定的因为距离 1000 km 和传播速率 2×10^8 m/s 不变。解决做题时先分别列出两个时延的公式再代入数值不要凭感觉猜哪个大。5. 从答案到实战用 Python 验证第一章计算题并建立自己的校验脚本最后一章说个我自己的习惯。这份 docx 答案我用了很多年但真正让我把第一章计算题吃透的是写了一个小的 Python 校验脚本把 1-10、1-11、1-17、1-18、1-28 这几道题的公式全部实现了一遍每次复习的时候改改参数跑一遍比看答案快得多。比如 1-28 那道 TCP 连接传输 1.5 MB 文件的题四种情况分别对应不同的发送策略我把它们写成一个函数def tcp_transfer_time(file_size_MB, group_size_KB, RTT, rate_MbpsNone, modecontinuous): 计算 TCP 传输文件的总时间 mode: continuous / wait_rtt / rtt_20 / exponential file_bits file_size_MB * 2**20 * 8 group_bits group_size_KB * 1024 * 8 num_groups file_size_MB * 2**20 // (group_size_KB * 1024) setup_time 2 * RTT if mode continuous: send_time file_bits / (rate_Mbps * 10**6) return setup_time send_time 0.5 * RTT elif mode wait_rtt: send_time file_bits / (rate_Mbps * 10**6) return setup_time send_time (num_groups - 1) * RTT 0.5 * RTT elif mode rtt_20: full_rtts num_groups // 20 remaining num_groups % 20 total_rtt full_rtts * RTT if remaining 0: total_rtt RTT return setup_time total_rtt 0.5 * RTT elif mode exponential: n 0 sent 0 while sent num_groups: n 1 sent 2**n - 1 return setup_time (n - 1) * RTT 0.5 * RTT # 验证 1-28 的四种情况 print(tcp_transfer_time(1.5, 1, 0.08, rate_Mbps10, modecontinuous)) print(tcp_transfer_time(1.5, 1, 0.08, rate_Mbps10, modewait_rtt)) print(tcp_transfer_time(1.5, 1, 0.08, modertt_20)) print(tcp_transfer_time(1.5, 1, 0.08, modeexponential))跑出来的结果分别是 1.458 s、124.258 s、6.28 s、1.0 s和答案完全吻合。这个脚本的好处是参数全部可调你可以把 RTT 改成 0.1 秒、把文件大小改成 10 MB观察不同模式下的时间变化。我一般会建议备考的人把第一章所有计算题都这样过一遍不是为了写代码而是为了把公式里的每个变量都变成可感知的数字。从那以后我每次复习网络计算题都强制自己先手推一遍公式再用脚本验证两遍对不上就说明某个环节的理解有漏洞。希望这份答案文档加上这个校验思路能帮你把谢希仁第七版的计算考点真正吃透。本文还有配套的精品资源点击获取