简介:本资源为谢希仁《计算机网络》第八版与第七版课后习题答案的PDF合集,面向高校计算机、通信、网络工程等专业学生及考研备考者,用于课后练习核对、期末复习与知识点查漏补缺。内容覆盖第一章概述至后续各章的核心习题,包含电路交换、报文交换与分组交换的对比分析,因特网发展阶段与标准制定流程,客户服务器与对等通信方式区别,以及速率、带宽、时延、时延带宽积等性能指标的计算推导,并给出分组交换时延最小化等典型题目的完整解答过程。资源包共1个PDF文件,大小约1.63MB,单文件结构便于手机或电脑直接翻阅检索。目前已有200人学习下载,适合需要系统梳理教材习题、对照标准答案理解解题思路的读者参考使用。
1. 从一份课后答案说起:为什么谢希仁的题值得逐题拆
很多人第一次翻谢希仁《计算机网络》的课后习题答案,是在期末前两周。翻开第一章,1-10 那道电路交换与分组交换时延比较的题直接把人劝退——公式里又是 k 段链路又是 p 分组长度,答案只给了一行推导结果,中间怎么来的全靠猜。这份 PDF 覆盖第七版和第八版第一章到后续章节的课后习题解答,从概述、物理层、数据链路层一路到应用层,题目编号和教材一一对应。它解决的不是"看懂概念"的问题,而是"这道题到底怎么算、答案为什么这么写"的问题。适合正在跟课的大二学生、备考 408 的考研党,以及需要快速核对课后作业的授课老师。热词里"计算机网络期末复习""计算机网络题复习题库"反复出现,说明大家真正卡住的地方不是不会概念,而是题目一变型就无从下手。
2. 第一章概述题的解题骨架:从时延公式到分层逻辑
2.1 交换方式比较题的通用推导路径
1-03 到 1-11 这几道题,核心就一件事:把不同交换方式的时延拆成可比较的数学表达式。很多答案只给最终公式,但考试时要的是推导过程。以 1-10 为例,电路交换的时延由三部分组成——链路传播时延 kd、数据发送时延 x/b、电路建立时间 s。分组交换则多了中间结点的存储转发时延,每经过一个结点就要等一个分组传完才能继续转发。
推导时先把两种方式的时延表达式写出来:
电路交换总时延 = kd + x/b + s 分组交换总时延 = kd + (x/p)(p/b) + (k-1)(p/b)其中 (x/p) 是分组数量,(p/b) 是单个分组的发送时延,(k-1) 是中间结点数(k 段链路有 k-1 个中间结点),每个结点贡献一次存储转发延迟。令分组交换时延小于电路交换时延,化简后得到条件 s > (k-1)(p/b)。这个结论的物理含义是:当电路建立时间足够长,长到超过所有中间结点的转发开销总和时,分组交换反而更快。
1-11 在此基础上引入了分组控制信息 h,总时延表达式变成 D = kd + (x/p)((p+h)/b) + (k-1)(p+h)/b。对 p 求导令其为零,解出最优分组数据长度 p = [(xh)/(k-1)]^0.5。这个结果说明分组不是越小越好——分组太小,控制头的开销占比就大;分组太大,存储转发次数带来的延迟又上去了。常见做法是先写出总时延关于 p 的函数,再求极值,不要试图直接套结论。
注意:1-11 的求导过程中,kd 是常数项,求导后消失,真正参与极值计算的是后两项。很多人在这里把 kd 也带进去算,结果怎么都对不上。
2.2 分层体系结构题的答题框架
1-20 到 1-27 集中在网络体系结构。1-24 要求论述五层协议各层功能,这类题看着简单,但答题时容易漏掉关键限定词。物理层的关键词是"透明地传送比特流",注意"透明"意味着物理层不关心比特代表什么;数据链路层的核心是"相邻结点间无差错传送帧";网络层的关键是"选路和分组转发";运输层强调"端到端可靠服务";应用层直接面向用户进程。
1-21 和 1-22 考协议与服务的关系,答案里反复出现"水平"和"垂直"两个词。协议是水平的——控制两个对等实体之间的通信规则;服务是垂直的——下层通过层间接口向上层提供能力。这个区分在选择题里经常出现,记法就是:协议管同层,服务管上下层。
1-27 的 everything over IP 和 IP over everything 是经典对比题。前者说的是 TCP/IP 协议栈能为各种应用提供服务,后者说的是 IP 协议能运行在各种底层网络之上。两个短语方向相反,答题时先写清楚哪个是"应用跑在 IP 上",哪个是"IP 跑在底层网络上",再各举一两个例子。
3. 物理层与数据链路层计算题:公式背后的参数含义
3.1 传播时延与发送时延的区分
1-17 和 1-18 是物理层最典型的计算题。1-17 给传输距离 1000km、信号传播速率 2×10⁸ m/s,要求分别计算数据长度 10⁷ bit 发送速率 100kb/s 和数据长度 10³ bit 发送速率 1Gb/s 两种情况下的发送时延和传播时延。
情况1:发送时延 = 10^7 / 10^5 = 100s 传播时延 = 10^6 / (2×10^8) = 0.005s 情况2:发送时延 = 10^3 / 10^9 = 1μs 传播时延 = 10^6 / (2×10^8) = 0.005s结论很直白:数据量大、速率低时,发送时延占主导;数据量小、速率高时,传播时延反而成了主要成分。这个结论在后续章节讨论带宽时延积时会反复用到。
1-18 进一步要求计算媒体中正在传播的比特数,本质是带宽时延积。公式是:比特数 = 传播时延 × 数据率。四种媒体长度(10cm 网卡、100m 局域网、100km 城域网、5000km 广域网)乘以两种速率(1Mb/s 和 10Gb/s),一共八种组合。计算时注意单位换算,10cm 要写成 0.1m,5000km 要写成 5×10⁶ m。
注意:1-18 的答案里出现了 5×10⁻⁴ 和 5×10⁻¹ 这样的结果,前者是 1Mb/s 下 10cm 网卡中正在传播的比特数,后者是 1Gb/s 下的结果。数量级差异来自速率差了 1000 倍,不是算错了。
3.2 传输效率与首部开销
1-19 考的是传输效率,定义是应用层数据除以总发送数据。100 字节应用数据加上 20 字节 TCP 首部、20 字节 IP 首部、18 字节以太网首部和尾部,总开销 58 字节,效率 = 100/158 ≈ 63.3%。如果应用数据变成 1000 字节,效率 = 1000/1058 ≈ 94.5%。
这道题的意义在于说明:小包传输时首部开销占比很高,这也是为什么协议设计时要尽量合并小包。实际网络中,Nagle 算法做的就是这件事——攒够一定数据再发,减少小包数量。
3.3 数据链路层的可靠传输机制
数据链路层的课后题集中在差错检测和可靠传输。常见题型包括:循环冗余检验 CRC 的计算、停止等待协议的信道利用率、滑动窗口协议的有效性分析。CRC 计算题的关键是模 2 除法——不借位、不比较大小,只做异或。很多人第一次算 CRC 时习惯用普通除法,结果全错。
停止等待协议的信道利用率公式是:U = Td / (Td + RTT + Ta),其中 Td 是数据发送时延,RTT 是往返时间,Ta 是确认帧发送时延。这个公式说明:当 RTT 远大于 Td 时,停止等待协议效率极低,这也是为什么需要滑动窗口。
4. 网络层与运输层:从 IP 分片到 TCP 拥塞控制
4.1 IP 数据报分片计算
网络层最常考的计算题是 IP 分片。给定一个数据报总长度、MTU 和标识字段,要求计算各分片的长度、偏移量和标志位。解题步骤固定:先算数据部分长度 = 总长度 - 首部长度(通常 20 字节),再看 MTU 能容纳多少数据(MTU - 20),每个分片的数据部分必须是 8 的整数倍,最后一片可以不足 8 字节。
例:总长度 3820 字节,MTU 1420 字节 数据部分 = 3820 - 20 = 3800 字节 每片最大数据 = 1420 - 20 = 1400 字节 分片1:数据 1400,偏移 0,MF=1 分片2:数据 1400,偏移 175(1400/8),MF=1 分片3:数据 1000,偏移 350(2800/8),MF=0偏移量以 8 字节为单位,所以 1400 字节对应偏移 175。标志位 MF(More Fragment)除了最后一片是 0,其余都是 1。
4.2 TCP 拥塞控制的四个阶段
运输层的重点在 TCP 拥塞控制。慢开始、拥塞避免、快重传、快恢复四个阶段,考试时经常给一个拥塞窗口变化图,要求判断当前处于哪个阶段。慢开始阶段 cwnd 从 1 开始指数增长,到达 ssthresh 后进入拥塞避免,变成线性增长。收到三个重复确认时触发快重传,ssthresh 减半,cwnd 设为新的 ssthresh,进入快恢复。
常见坑是混淆"超时"和"三个重复确认"的处理方式。超时时 cwnd 直接回到 1,重新慢开始;三个重复确认时 cwnd 减半但不回到 1,直接进入拥塞避免。这个区别在选择题里反复出现。
4.3 路由算法的计算题
网络层的路由算法题主要考距离向量算法和链路状态算法。距离向量算法的核心是 Bellman-Ford 方程:D(x,y) = min{c(x,v) + D(v,y)},其中 v 是 x 的邻居。做题时先画出邻居关系表,再逐轮更新距离向量,直到收敛。链路状态算法则是每个结点广播链路状态,用 Dijkstra 算最短路径。两种算法的对比是常考点:距离向量是分布式、迭代的,链路状态是全局的、一次性的。
5. 避坑与排查:课后答案使用中的五个高频翻车点
5.1 版本混淆导致题号对不上
现象:拿着第八版的教材翻第七版的答案,发现第一章题号从 1-01 到 1-27 基本一致,但到了后面章节题号开始错位。原因:第七版和第八版在部分章节有增删题目,尤其是应用层变动较大。解决:先确认自己用的教材版本,对照目录页的章节标题和题号范围,如果发现某道题在答案里找不到,大概率是版本差异,不是答案漏了。
5.2 公式推导跳步导致看不懂
现象:1-11 的答案直接给出 p = [(xh)/(k-1)]^0.5,中间求导过程完全省略。原因:答案篇幅有限,默认读者能自行推导。解决:自己动手把 D 对 p 求导,注意 (x/p)((p+h)/b) 展开后是 x/b + xh/(pb),求导时 x/b 是常数项消失,只剩 -xh/(p²b) + (k-1)/b,令其为零解出 p。
5.3 单位换算错误
现象:1-18 计算比特数时,把 10cm 直接代入 10,忘记换算成 0.1m,结果差了 100 倍。原因:物理层计算题里长度单位有 cm、m、km 三种,速率有 b/s、kb/s、Mb/s、Gb/s 四种,混用极易出错。解决:统一换算成国际单位制再计算,长度用米,速率用 b/s,算完再转回题目要求的单位。
5.4 把协议和服务的关系记反
现象:选择题问"协议是水平的还是垂直的",凭感觉选了垂直。原因:没有理解"水平"指的是对等层之间的通信规则,"垂直"指的是下层向上层提供服务。解决:画一个两层模型,同层之间画横线标"协议",上下层之间画竖线标"服务",图记住了就不会混。
5.5 拥塞控制阶段判断错误
现象:题目给出 cwnd 从 1 开始增长到 16 后变成线性增长,问 ssthresh 是多少,答了 16。原因:慢开始是指数增长,cwnd 从 1 到 2 到 4 到 8 到 16,到达 ssthresh 后切换为线性增长,所以 ssthresh 应该是 16 之前的那个值,即 8 或 16 取决于具体题目描述。解决:仔细看题目说的是"增长到 16 后开始线性增长"还是"增长到 16 时收到三个重复确认",前者 ssthresh=16,后者 ssthresh=8。
6. 把答案用成复习工具:我的三遍刷题习惯
第一遍对着教材逐题过,不直接看答案,先自己在草稿纸上写推导过程,写完再对照答案检查。这一步的重点不是做对,而是暴露自己哪一步卡住了。比如 1-10 的时延比较,我第一次做的时候忘了中间结点的存储转发延迟,只算了发送时延和传播时延,对照答案才发现漏了 (k-1)(p/b) 这一项。
第二遍只刷错题和当时没做出来的题,这次要求自己不看答案完整写出过程,包括公式推导和单位换算。这一步我会把每道题的解题步骤压缩成三到五行笔记,比如 IP 分片就记"数据部分长度→每片最大数据→偏移量以 8 为单位→MF 标志位"。笔记不用漂亮,自己能看懂就行。
第三遍在考前一周,只翻笔记和之前标记的难题。这时候不再逐题重做,而是看每道题的解题入口在哪里——看到"比较电路交换和分组交换"就想到先写两个时延表达式,看到"IP 分片"就想到先算数据部分长度。这个习惯让我在考场上遇到变型题时至少知道从哪下手,而不是对着题目发愣。
还有一个小技巧:把答案里反复出现的公式单独抄在一张纸上,比如传播时延 = 距离/速率、发送时延 = 数据量/速率、带宽时延积 = 传播时延 × 带宽、停止等待利用率 = Td/(Td+RTT+Ta)。考前只看这张纸,比翻整本答案快得多。从那以后我每次复习计算机网络都强制走一遍"自己推导→对照答案→压缩笔记→只看公式"的流程,希望帮到你。
本文还有配套的精品资源,点击获取