参考:英文版的原答案。
答案放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版)第三章部分习题答案的更多相关文章

  1. C语言程序设计:现代方法(第2版)第三章全部习题答案

    前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...

  2. C语言程序设计:现代方法(第2版)第二章全部习题答案

    前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...

  3. 数据结构与算法分析:C语言描述(原书第2版 简体中文版!!!) PDF+源代码+习题答案

    转自:http://www.linuxidc.com/Linux/2014-04/99735.htm 数据结构与算法分析:C语言描述(原书第2版中文版!!!) PDF+源代码+习题答案 数据结构与算法 ...

  4. PHP和MySQL Web开发(原书第4版) 高清PDF+源代码

    PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区  作者:Linux [字体:大 中 小]     内容简介 <PHP和My ...

  5. 《软件测试的艺术(原书第2版)》【PDF】下载

    <软件测试的艺术(原书第2版)>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196343 内容简介 本书以一次自评价测试开篇,从软 ...

  6. ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse

    ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...

  7. ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL

    ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. RGBD深度摄像头 ...

  8. ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门

    ROS机器人程序设计(原书第2版)补充资料 (壹) 第一章 ROS系统入门 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 第一章主要包括R ...

  9. 《Java核心技术 卷II 高级特性(原书第9版)》

    <Java核心技术 卷II 高级特性(原书第9版)> 基本信息 原书名:Core Java Volume II—Advanced Features(Ninth Edition) 作者: ( ...

  10. c++学习书籍推荐《面向对象程序设计:C++语言描述(原书第2版)》下载

    百度云及其他网盘下载地址:点我 <面向对象程序设计:C++语言描述(原书第2版)>内容丰富,结构合理,写作风格严谨,深刻地论述了c++语言的面向对象编程的各种技术,主要内容包括:面向对象编 ...

随机推荐

  1. LVGL 8.3.0常用函数快速使用

    LVGL 8.3.0使用快速上手教程(使用篇) 定义页面通用样式style // 创建页面样式 static lv_style_t style; lv_style_init(&style); ...

  2. Docker - 在线音乐播放器 YesPlayMusic

    原文链接:https://mp.weixin.qq.com/s/D2778fnix6jAeZlCicWGdw(本文只作为跟练,不以盈利为目的) 1.下载镜像 [root@node ~]# docker ...

  3. Flink - [01] 概述

    官网:https://flink.apache.org/ 一.Flink 是什么 是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能. 是一个框架和分布式处 ...

  4. C#中对面向standard2.0、standard2.1的项目进行单元测试

    单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1. 这是因为.NET Standard只是一个规范,它 ...

  5. FormCreate设计器v5.6发布—AI加持的低代码表单设计器正式上线!

    近期DeepSeek可谓是刷遍全网,当然,在DeepSeek等AI技术的推动下,人工智能正以惊人的速度改变着各行各业.AI不仅是一种技术趋势,更是未来生产力的核心驱动力. 如今,FormCreate设 ...

  6. 【自编RSG插件】梁结构生成插件QGToolBox

    正在学习基于ABAQUS-PYTHON的GUI开发,出于练手的想法,编写了一个简单的插件. 实现功能: 基于nodes. rods的table,完成桁架结构的几何建模. GUI界面: RSG Buil ...

  7. composer init

    $ composer init Do not run Composer as root/super user! See https://getcomposer.org/root for details ...

  8. workman PHPSocket.IO文档

    安装 请使用composer集成phpsocket.io. 脚本中引用vendor中的autoload.php实现SocketIO相关类的加载.例如 require_once '/你的vendor路径 ...

  9. 通过C#转换图片到PDF文档

    将图片(JPG.PNG)转换为PDF文件可以帮助我们更好地保存和分享图片.此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露.本文将介绍如何将JPG/P ...

  10. Django实战项目-学习任务系统-查询列表分页显示

    接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了. 接着优化查询列表分页显示功能,有很多菜单功能都有查询列表显示页面情况,如果数据量多,不分页显示的话,页面展示效果就不太好. 本次 ...