计网习题——第三章

!!!R1.假定网络层提供了下列服务。在源主机中的网络层接受最大长度1200字节和来自运输层的目的主机地址的报文段。网络层则保证将该报文段交付给位于目的主机的运输层。假定在目的主机上能够运行许多网络应用进程。
a. 设计可能最简单的运输层协议,该协议将使应用程序数据到达位于目的主机的所希望的进程。假设在目的主机中的操作系统已经为每个运行的应用进程分配了一个4字节的端口号。
目的端口号+目的IP地址+数据
b. 修改这个协议,使它向目的进程提供一个的“返回地址”。
目的端口号+目的IP地址+源端口号+源IP地址
c. 在你的协议中,该运输层在计算机网络的核心中“必须做任何事”吗?
不需要,计算机网络核心是网络层的事情。

!!!R2.考虑有一个星球,每个人都属于某个六口之家,每个家庭都住在自己的房子里,每个房子都有一个唯一的地址,并且某给定家庭中的每个人有一个独特的名字。假定该星球有一个从源家庭到目的家庭交付信件的邮政服务。该邮件服务要求:1、在一个信封中有一封信;2、在信封上清楚地写上目的家庭的地址(并且没有别的东西)。假设每个家庭有一名家庭成员代表为家庭中的其他成员收集和分发信件。这些信没有必要提供任何有关信的接收者的指示。
a. 使用对上面复习题R1的解决方案作为启发,描述家庭成员代表能够使用的协议,以从发送家庭成员向接收家庭成员交付信件。
寄:再信封上写目的家庭地址,在信上写收件人的名字。
收:家庭成员代表拆开信件,查看收件人姓名并把信交给收件人。
b. 在你的协议中,该邮政服务必须打开信封并检査信件内容才能提供它的服务吗?
不需要。

!!!R3.考虑在主机A和主机B之间有一条TCP连接。假设从主机A传送到主机B的TCP报文段具有源端口号X;和目的端口号y。对于从主机B传送到主机A的报文段,源端口号和目的端口号分别是多少?
源端口号:y
目的端口号:X

!!!R4.描述应用程序开发者为什么可能选择在UDP上运行应用程序而不是在TCP上运行的原因。
应用程序开发人员可能不希望其应用程序使用TCP的拥塞控制,这可能会导致应用程序的发送速率受限制,另外,某些应用程序不需要TCP提供的可靠数据传输。

!!!R5.在今天的因特网中,为什么语音和图像流量常常是经过TCP而不是经UDP发送。(提示:我们寻找的答案与TCP的拥塞控制机制没有关系。)

大多数防火墙都配置为阻止UDP流量,因此使用TCP可以使流量通过防火墙。

TCP保证数据正确性、不丢包、不重复、有序性

!!!R6.当某应用程序运行在UDP上时,该应用程序可能得到可靠数据传输吗?如果能,如何实现?
在应用层添加可靠数据传输的功能。

**!!!R7.假定在主机C上的一个进程有一个具有端口号6789的UDP套接字。假定主机A和主机B都用目的端口号6789向C发送一个UDP报文段。这两台主机的这些报文段在主机C都被描述为相同的套接字吗?如果是这样的话,在主机C的该进程将怎样知道源于两台不同主机的这两个报文段? **

是的,根据源IP地址来进行区分。
注意:运输层是不涉及IP地址的,http拿到DNS返回的IP后,会通过TCP建立一个长链接,建立连接需要IP和端口号,端口号放在TCP的header中,而IP则是放在网络层IP的header中。传输层不负责寻址,所以和IP地址无关。

**!!!R8.假定在主机C端口80上运行的一个Web服务器。假定这个Web服务器使用持续连接,并且正在接收来自两台不同主机A和B的请求。被发送的所有请求都通过位于主机C的相同套接字吗?如果它们通过不同的套接字传递,这两个套接字都具有端口80吗?讨论和解释之。 **
对于每个持久连接,WEB服务器都会为它建立一个单独的“链接套接字”。每个连接套接字通过四元组标识。当主机C接收到IP数据报时,他会检测数据报中的四元组,以确定将TCP段的有效负载传递到哪个套接字。因此,来自A和B的请求将通过不同的套接字,着两个套接字的标识符的目标端口号均为80,但是,这些套接字的标识符对于源IP地址具有不同的值。与UDP不同,当传输层将TCP段的有效负载传递给应用进程时,它不指定源IP地址,因为它是由套接字标识符隐式指定的。

!!!R9.在我们的rdt协议中,为什么需要引入序号?

如果不引入序号,我们就无法知道接收到的分组是否为重传的分组。

!!!R10.在我们的rdt协议中,为什么需要引入定时器?

检测丢包情况的发生。

**!!!R11.假定发送方和接收方之间的往返时延是固定的并且为发送方所知。假设分组能够丢失的话,在协议 rdt3.0中,一个定时器仍是必需的吗?试解释之。 **

是的;根据往返时延发送方可以知道分组以及丢失,但是需要定时器来触发重传。

3. 5节

!!!R14.是非判断题:
a. 主机A经过一条TCP连接向主机B发送一个大文件。假设主机B没有数据发往主机A。因为主机B不能随数据捎带确认,所以主机B将不向主机A发送确认。 F
b. 在连接的整个过程中,TCP的rwnd的长度决不会变化。 F
c. 假设主机A通过一条TCP连接向主机B发送一个大文件。主机A发送但未被确认的字节数不会超过接收缓存的大小。 T
d. 假设主机A通过一条TCP连接向主机B发送一个大文件。如果对于这条连接的一个报文段的序号为m,则对于后继报文段的序号将必然是m + l 。F
e. TCP报文段在它的首部中有一个RWND字段。T
£. 假定在一条TCP连接中最后的SampleRTT等于1秒,那么对于该连接的Time out interval的当前值必定大于等于1秒。 F
g.假设主机A通过一条TCP连接向主机B发送一个序号为38的4个字节的报文段。在这个相同的报文段中,确认号必定是42。 F

**R15.假设主机A通过一条TCP连接向主机B发送两个紧接着的TCP报文段。第一个报文段的序号为90, 第二个报文段序号为110。 **
a. 第一个报文段中有多少数据?
20个字节
b. 假设第一个报文段丢失而第二个报文段到达主机B。那么在主机B发往主机A的确认报文中, 确认号应该是多少?
90

!!!R18.是非判断题。考虑TCP的拥塞控制。当发送方定时器超时时,其ssthresh的值将被设置为原来值的一半。 F

!!!P1.假设客户A向服务器S发起一个Telnet会话。与此同时,客户B也向服务器S发起一个Telnet会话。给出下面报文段的源端口号和目的端口号:
a. 从A向S发送的报文段。
源:A端口号 目的:23
b. 从B向S发送的报文段。
源:B端口号 目的:23
c. 从S向A发送的报文段。
源:23 目的:A端口号
d. 从S向B发送的报文段。
源:23 目的:B端口号
e. 如果A和B是不同的主机,那么从A向S发送的报文段的源端口号是否可能与从B向S发送的报文段的源端口号相同?

£. 如果它们是同一台主机,情况会怎么样?
不可以,两个不同的应用程序不能拥有相同的端口号。
!!!P2,从服务器返回客户进程的报文流中的源端口号和目的端口号是多少?在承载运输层报文段的网络层数据报中,IP地址是多少?
在这里插入图片描述

!!!P3. UDP和TCP使用反码来计算它们的检验和。假设你有下面3个8比特字节:01010011, 01100110, 01110100.这些8比特字节和的反码是多少?(注意到尽管UDP和TCP使用16比特的字来计算检验和,但对于这个问题,你应该考虑8比特和。)写出所有工作过程。UDP为什么要用该和的反码,即 为什么不直接使用该和呢?使用该反码方案,接收方如何检测出差错? 1比特的差错将可能检测不出来吗? 2比特的差错呢?

!!!P22.考虑一个GBN协议,其发送方窗口为4,序号范围为1024。假设在时刻 t 接收方期待的下一个有序分组的序号是 k. 假设媒体不会对报文重新排序。回答以下问题:
a. 在f时刻,发送方窗口内的报文序号可能是多少?论证你的回答。

b. 在f时刻,在当前传播回发送方的所有可能报文中,ACK字段的所有可能值是多少?论证你的回答。

P24.对下面的问题判断是非,并简要地证实你的回答:
a. 对于SR协议,发送方可能会收到落在其当前窗口之外的分组的ACK。 T
b. 对于GBN协议,发送方可能会收到落在其当前窗口之外的分组的ACK。 T
c. 当发送方和接收方窗口长度都为1时,比特交替协议与SR协议相同。
A 当发送方和接收方窗口长度都为1时,比特交替协议与GBN协议相同。

!!!P27.主机A和B经一条TCP连接通信,并且主机B已经收到了来自A的最长为126字节的所有字节。假定主机A随后向主机B发送两个紧接着的报文段。第一个和第二个报文段分别包含了80字节和40字节的数据。在第一个报文段中,序号是127,源端口号是302,目的地端口号是80。无论何时主机B接收到来自主机A的报文段,它都会发送确认。
a. 在从主机A发往B的第二个报文段中,序号、源端口号和目的端口号各是什么?
序号:207
源端口号:302
目的端口号:80
b. 如果第一个报文段在第二个报文段之前到达,在第一个到达报文段的确认中,确认号、源端口号
和目的端口号各是什么?
确认号:207
源端口号:80
目的端口号:302
c. 如果第二个报文段在第一个报文段之前到达,在第一个到达报文段的确认中,确认号是什么?
确认号:127
d. 假定由A发送的两个报文段按序到达B。第一个确认丢失了而第二个确认在第一个超时间隔之后到达。画出时序图,显示这些报文段和发送的所有其他报文段和确认。(假设没有其他分组丢失。)对于图上每个报文段,标出序号和数据的字节数量;对于你增加的每个应答,标出确认号。

!!!P31.假设测量的 5 个SampleRTT 值(参见 3.5.3 节)是 106ms、120ms、140ms、90ms 和 115ms。在获得 了每个SampleRTT值后计算EstimatedRTT,使用a =0.125并且假设在刚获得前5个样本之后Esti- matedRTT的值为100ms。在获得每个样本之后,也计算DevRTT,假设j8=0. 25,并且假设在刚获得前5个样本之后DevRTT的值为5ms。最后,在获得这些样本之后计算TCP Timeoutinterval。

!!!P37.比较GBN、SR和TCP (无延时的ACK)O假设对所有3个协议的超时值足够长,使得5个连续的数据报文段及其对应的ACK能够分别由接收主机(主机B)和发送主机(主机A)收到(如果在信 道中无丢失)。假设主机A向主机B发送5个数据报文段,并且第二个报文段(从A发送)丢失。 最后,所有5个数据报文段已经被主机B正确接收。
a. 主机A总共发送了多少报文段和主机B总共发送了多少ACK?它们的序号是什么?对所有3个协议回答这个问题。

GBN:
主机A发送9个报文:123452345
主机B发送了9个ACK:111112345
SR:
主机A发送了6个报文:123452
主机B发送了6个ACK:111115
TCP:
主机A发送了6个报文:123452
主机B发送了6个ACK:222226

b. 如果对所有3个协议超时值比5RTT长得多,则哪个协议在最短的时间间隔中成功地交付所有5个数据报文段?
SR和TCP

!!!P40.考虑图3-58。假设TCP Reno是一个经历如上所示行为的协议,回答下列问题。在各种情况中,简要地论证你的回答。
image.png
RENO:
三个冗余ACK拥塞窗口减半、超时回到1;
TAHOE:
无论什么拥塞窗口都回到1;
a. 指出TCP慢启动运行时的时间间隔。
【0,6】 【23,26】
b. 指出TCP拥塞避免运行时的时间间隔。
【6,16】【17,22】
c. 在第16个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测出来的?
3个冗余
d. 在第22个传输轮回之后,报文段的丢失是根据3个冗余ACK还是根据超时检测出来的?
超时
e. 在第1个传输轮回里,ssthresh的初始值设置为多少?
32
f. 在第18个传输轮回里,ssthresh的值设置为多少?
21
g. 在第24个传输轮回里,ssthresh的值设置为多少?
14
h. 在哪个传输轮回内发送第70个报文段?
7
i. 假定在第26个传输轮回后,通过收到3个冗余ACK检测出有分组丢失,拥塞的窗口长度和ssthresh的值应当是多少?
24 ,4+3=7
j. 假定使用TCP Tahoe (而不是TCP Reno),并假定在第16个传输轮回收到3个冗余ACK。在第19个传输轮回,ssthresh和拥塞窗口长度是什么?
21 ,4
k. 再次假设使用TCP Tahoe,在第22个传输轮回有一个超时事件。从第17个传输轮回到第22个传输轮回(包括这两个传输轮回),一共发送了多少分组?
52

  • 34
    点赞
  • 140
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值