【HUST】网安|计算机网络|计算机网络自顶向下方法(原书第7版)第三章部分习题答案
参考:英文版的原答案。
答案放gitee了,自取。
3-P18. 3.4.4 节我们学习的一般性 SR 协议中,只要报文可用(如果报文在窗口中) ,发送方就会不等待确认而传输报文。假设现在我们要求一个SR协议,一次发出一对报文,而且只有在知道第一对报文中的两个报文都正确到达后才发送第二对报文。
假设该信道中可能会丢失报文,但报文不会发生损坏和失序,试为报文的单向可靠传输 而设计一个差错控制协议:
(1)写出报文的最小序号空间(报文编号从0开始);
(2)画出你的协议在无丢失情况的时序图;
(3)考虑分组和确认分组都可能丢失的情况下,协议是如何恢复报文丢失的,画出时序图
3-P27. 主机A和B 经一条TCP 连接通信,并且主机B已经收到了来自A的最长为 126 字节的所有字节。 假定主机A随后向主机B发送两个紧接着的报文段。第一个和第二个报文段分别包含了80字节和40 字节的数据。在第一个报文段中,序号是 127 ,源端口号是 302 ,目的地端口号是 80。无论何时主机B接收到来自主机A的报文段,它都会发送确认。
a. 在从主机A发往B的第二个报文段中,序号、源端口号和目的端口号各是什么?
b. 如果第一个报文段在第二个报文段之前到达,在第一个到达报文段的确认中,确认号、源端口号和目的端口号各是什么?
c. 如果第二个报文段在第一个报文段之前到达,在第一个到达报文段的确认中,确认号是什么?
d. 假定由A发送的两个报文段按序到达,第一个确认丢失了而第二个确认在第一个超时间隔之后到达。画出时序图,显示这些报文段和发送的所有其他报文段和确认。 (假设没有其他分组丢)对于图上每个报文段,标出序号和数据的字节数量;对于你增加的每个应答,标出确认号。
题c,第二个报文先到,所以第一个到达的报文是报文二,报文二的ack是127。
3-P31. 假设测量的 SampleRTT值(参见3.5.3节)是 106ms、120ms、140ms、90ms和115ms。在获得了每个SampleRTT的值后计算EstimatedRTT,使用α=0.125并且假设在刚获得前5个样本之后EstimatedRTT 的值为 10Oms。在获得每个样本之后,也计算 DevRTT,假设β= 0.25 ,并且假设在刚获得前5个样本之后 DevRTT 的值为 5ms。最后,在获得这些样本之后计算 TCP Timeoutlnterval。
3-P40
考虑图3-58。假设TCP Reno是一个经历如上所示行为的协议,回答下列问题。在各种情况中,简要地论证你的回答。
a. 指出TCP慢启动运行时的时间间隔。
b. 指出TCP拥塞避免运行时的时间间隔。
c. 在第16个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测出来的?
d. 在第22个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测出来的?
e. 在第1个传输轮回里,ssthresh的初始值设置为多少?
f. 在第18个传输轮回里,ssthresh的值设置为多少?
g. 在第24个传输轮回里,ssthresh的值设置为多少?
h. 在哪个传输轮回内发送第70个报文段?
i. 假定在第26个传输轮回后,通过收到3个冗余ACK检测出有分组丢失,拥塞的窗口长度和ssthresh的值应当是多少?
j. 假定使用TCP Tahoe (而不是TCP Reno),并假定在第16个传输轮回收到3个冗余ACK。在第19个传输轮回,ssthresh和拥塞窗口长度是什么?
k. 再次假设使用TCP Tahoe,在第22个传输轮回有一个超时事件。从第17个传输轮回到第22个传输轮回(包括这两个传输轮回),一共发送了多少分组?
a. 慢启动的时间间隔为[1,6]和[23,26]。
b. 拥塞避免的时间间隔为[6,16]和[17,22]。
c. 由于超时时ConWin的大小会变为1个MSS,因此报文段的丢失是根据3个重复确认检测出来的。
d. 由于ConWin的大小是变为一个MSS,因此报文段的丢失是根据超时检测出来的。
e. 因为拥塞窗口在达到32×MSS之后就开始拥塞避免阶段,因此ssthresh的初始值为32×MSS。
f. 检测到丢包之后ssthresh的值将为原来拥塞窗口长度的一半,在第16个周期时ConWin的值为42×MSS,因此在第18个传输周期里,ssthresh的值为21×MSS。
g. 检测到丢包之后ssthresh的值将为原来拥塞窗口长度的一半,在第22个传输周期时ConWin大小为29×MSS,因此在第24个传输周期里,ssthresh值为14×MSS(14.5向下取整)。
h. 在第6个传输周期时,已经发送了1+2+4+…+32=63个报文段,而在第7个传输周期ConWin大小为33,63+33=96>70,因此第70个报文段是在第7个传输周期内传送的。
i. 检测到丢包之后ssthresh的值将变成原来拥塞窗口长度的一半,如果是冗余ACK则新的拥塞窗口被置为ssthresh+3。在第26个传输周期时,拥塞窗口长度ConWin大小为8×MSS,因此ssthresh为4×MSS,拥塞窗口长度为7×MSS。
j. Tahoe的,遇到冗余ACK,ssthresh为当前ConWin大小的一半,即21×MSS。然后ConWin回到1×MSS,重新慢启动。因此在第19个传输轮回时拥塞窗口长度为4×MSS,ssthresh为21×MSS。
k. 紧接题j,第17个发了1个,第18个发了2个,第19个发了4个,第20个发了8个,第21个发了16个,第22个翻倍超过ssthresh,因此只发了21个,加起来一共发了52个分组。
3-P45 回想 TCP 吞吐量的宏观描述。在链接速率从 W/(2 x RTT) 变化到 W/RTT 的周期内,只丢失了一个分组(在该周期结束)。
a. 证明其丢包率(分组丢失的比率)等于:
L = 丢包率 = 1 / ( 3/8 x W^2 + 3/4 x W )
b. 如果一条连接的丢包率为 L,使用上面的结果,则它的平均速率近似由下式给出:
平均速率 ~ 1.22 x MSS / (RTT x sqrt(L))
3-P56 在这个习题中,我们考虑由 TCP 慢启动阶段引入的时延。考虑一个客户和一个 Web 服务器直接连接到速率为 R 的一条链路。假定该客户要取回一个对象,其长度正好等于 15 S,其中 S 是最大报文段长度(MSS)。客户和服务器之间的往返时间表示为 RTT(假设为常数)。忽略协议首部,确定在下列情况下取回该对象的时间(包括 TCP 连接创建):
a. 4S/R > S/R + RTT > 2S/R
b. S/R + RTT > 4S/R
c. S/R > RTT
a) 3S/R > RTT > S/R;b) RTT > 3S/R;c) S/R > RTT。
a) 始终站在客户端的角度可以更好地理解整个过程,上图是题a的分析过程。
初始化建立连接需要2×RTT。第一个RTT是①客户端请求+②服务端回应请求,第二个RTT是③客户端响应服务端的回应+④服务端确认客户端的响应。如果是客户端主动向服务器发送数据,则第③个报文即可承载有效载荷;但这里是客户端需要服务器返回数据,因此服务器只有等待接收到③报文之后才能进行数据包的收发。如果初始化建立连接是从客户端发送请求报文①开始、到客户端接收服务器的确认报文④结束,则可认为初始化建立连接需要2×RTT。
在服务器收到③报文后,便可以将传输对象下放到链路中,这个过程耗时S/R。
——
慢启动最开始只能发一个分组,意思是,服务器接收到客户端对该分组的响应之后才能发送下一个分组。再次站在客户端的角度理解这个过程,从客户端接收服务器的确认报文④、到客户端接收服务器对第一个分组的响应的确认报文为止,耗时S/R+RTT。
如果从客户端开始发送请求算起(也就是报文①被发送时),到现在客户端已经接收第一个分组的响应的确认为止,一共耗时3RTT+S/R。
——
然后服务器可以发2个分组,由于RTT>S/R,服务器成功传输第三个分组到链路中并发送后,第二个分组的响应报文还没发回来,所以服务器陷入等待。此时服务器没有发第四个分组,是受限于第二个分组的响应报文还没传过来,而不是受限于第三个分组还没传输完成。
服务器在什么情况能发送下一个分组?答:窗口有空的时候。慢启动时,服务器每接收一个ACK,窗口大小都增加1,而且接收一个正确的ACK也会使窗口移动到下一位,即窗口多出来两个空位,可以继续发分组。
站在客户端的立场,从客户端接收服务器对第一个分组的响应的确认报文、到客户端接收到第三组报文,耗时S/R+RTT。
——
接下来依次可以发4个、8个,以窗口为4举例,传第一个分组到链路上花了S/R,第一个分组的响应报文被服务器接收到需要RTT,但是S/R+RTT<4S/R,因此第一个分组一来一回的时候,剩下的分组还在传输中。而第一个分组回来则会使拥塞窗口加一,并使窗口移动,因此服务器可以紧接着发送下一个分组。
站在客户端的立场,从客户端接收第三组报文、到客户端接收完所有报文,耗时12×S/R。
总时长为2×RTT+(S/R+RTT)+(S/R+RTT)+12×S/R=4×RTT + 14×S/R
b) 同理,如果S/R+RTT>4S/R,则拥塞窗口长度为4的时候,第一个分组的响应报文还没回来,所以服务器要等响应报文,会被RTT限制。窗口为8时则不会被限制。总时长为2×RTT+(S/R+RTT)+(S/R+RTT)+(S/R+RTT)+8×S/R=5×RTT + 11×S/R。
c) 同理, 从第二次发送开始每次发送都不会被RTT限制,总时长为2×RTT+(S/R+RTT)+(2+4+8)×S/R=3×RTT + 15×S/R。
如果想图文并茂地了解怎么回事,请看github_YangXiaoHei/Networking/计算机网络自顶向下/03 运输层/习题_34_56.md。
【HUST】网安|计算机网络|计算机网络自顶向下方法(原书第7版)第三章部分习题答案的更多相关文章
- C语言程序设计:现代方法(第2版)第三章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- C语言程序设计:现代方法(第2版)第二章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- 数据结构与算法分析:C语言描述(原书第2版 简体中文版!!!) PDF+源代码+习题答案
转自:http://www.linuxidc.com/Linux/2014-04/99735.htm 数据结构与算法分析:C语言描述(原书第2版中文版!!!) PDF+源代码+习题答案 数据结构与算法 ...
- PHP和MySQL Web开发(原书第4版) 高清PDF+源代码
PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区 作者:Linux [字体:大 中 小] 内容简介 <PHP和My ...
- 《软件测试的艺术(原书第2版)》【PDF】下载
<软件测试的艺术(原书第2版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196343 内容简介 本书以一次自评价测试开篇,从软 ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
- ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL
ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. RGBD深度摄像头 ...
- ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门
ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括R ...
- 《Java核心技术 卷II 高级特性(原书第9版)》
<Java核心技术 卷II 高级特性(原书第9版)> 基本信息 原书名:Core Java Volume II—Advanced Features(Ninth Edition) 作者: ( ...
- c++学习书籍推荐《面向对象程序设计:C++语言描述(原书第2版)》下载
百度云及其他网盘下载地址:点我 <面向对象程序设计:C++语言描述(原书第2版)>内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编 ...
随机推荐
- 【保姆级教程】DeepSeek R1+RAG,基于开源三件套10分钟构建本地AI知识库(文末附笔记及材料)
一.总体方案 目前在使用 DeepSeek 在线环境时,页面经常显示"服务器繁忙,请稍后再试",以 DeepSeek R1 现在的火爆程度,这个状况可能还会持续一段时间,所以这里给 ...
- npm i 下载太慢
1.在项目内部进入终端 2.输入:npm config set registry https://registry.npmmirror.com 修改npm下载地址为淘宝 3.然后再执行 npm i 进 ...
- autMan奥特曼机器人-对插件权限的管理
为了避免某些插件在用户不知情的情况下读取使用用户隐私数据,受" 安卓手机上安装的应用需申请电话.位置.通讯录等权限 "的启发,autMan增加了数据桶读取权限设置页面. 当前受限制 ...
- WebKit 简介及工作流程
一.引言 WebKit 是一个被广泛应用于众多知名浏览器的开源网页渲染引擎.它在现代网页浏览体验中扮演着至关重要的角色. 二.WebKit 简介 WebKit 具有高效.灵活和跨平台的特点.它支持多种 ...
- 读论文-基于序列模式的电子商务推荐系统综述(A Survey of Sequential Pattern Based E-Commerce Recommendation Systems)
前言 今天读的论文为一篇于2023年10月3日发表在<算法>(Algorithms)的论文,这篇文章综述了基于序列模式的电子商务推荐系统,强调了通过整合用户购买和点击行为的序列模式来提高推 ...
- 【C#语法糖 Lambda】2 - 表达式树与LINQ
一.声明 曾经遇到一个这样的场景: GetEntities(a => a.OrderKindCodeId == 16 && a.IsDeleted, this.DefaultCo ...
- 自动化-Yaml文件写入函数封装
1.文件布局 打开文件修改读取方式为w dump函数写入文件 写入中文 使用allow_unicode=True class ReadConfiYaml: def __init__(self,yaml ...
- 『Plotly实战指南』--架构与设计理念
在数据科学和数据分析领域,数据可视化是理解数据和传达信息的关键环节. Python 作为最受欢迎的编程语言之一,拥有众多强大的可视化库,而 Plotly 无疑是其中的佼佼者. 本文将深入介绍 Plot ...
- ubuntu 22.04 deskop 无法打开terminal
系统语言设置的问题,改为汉语即可
- CISCN&CCB半决赛_2025_PWN_WP
CISCN&CCB半决赛_2025_PWN_WP 前言: 记录一下第一次打半决赛国赛,总结来说还是自己太菜了,还有check脚本是真的很shi,正规军白给了... typo break edi ...