计算机网络第三章运输层练习题.docx
《计算机网络第三章运输层练习题.docx》由会员分享,可在线阅读,更多相关《计算机网络第三章运输层练习题.docx(24页珍藏版)》请在冰豆网上搜索。
计算机网络第三章运输层练习题
第3章运输层练习题
一、选择题
1.当一个
TCP报文段到达目的主机时,通过什么来定向套接字?
A.封装报文段的数据报中的源
IP地址
B.目的端口号
C.源端口号
D.以上所有
答案:
D
提示:
TCP套接字是通过一个四元组:
(IP地址,源端口号,目的
IP地址,目的端口号)来标
识的。
当一个
TCP报文段从网络到达一台主机时,主机使用全部四个值来将报文段定向(多
路分解)到相应的套接字。
2.UDP具有以下哪些特征?
A.在服务器上维护连接状态信息
B.通过三次握手建立连接
C.调节发送速率
D.以上都不是
答案:
D
3.当一个
UDP报文段到达某个主机时,为了将报文段提交给合适的套接字,操作系统使用:
A.源
IP地址
B.源端口号
C.目的端口号
D.以上全部
答案:
C
提示:
UDP套接字是由一个包含目的
IP地址和目的端口号组成的二元组来全面标识的。
在多路
分解时,目标主机通过检查报文段中的目的端口号,将报文段定向到相应套接字。
4.在什么样的情况下,停止等待协议的效率会变得很低:
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第
3章运输层
A.
当源主机和目的主机之间的距离很近而且传输速率很高时
B.
当源主机和目的主机之间的距离很远而且传输速率很高时
C.
当源主机和目的主机之间的距离很近而且传输速率很低时
D.
当源主机和目的主机之间的距离很远而且传输速率很低时
答案:
B
提示:
使用停止等待协议,发送方在确认接收方已经正确地接收了当前传送的分组之前不会发
送新的数据。
所以在传输效率很高的前提下,主机之间距离越远,不必要的等待时间就越长。
5.
流水线操作具有以下哪些特点:
A.
发送方必须能缓存它已发送了但还没有收到确认的分组
B.
每一个正在传输的分组具有独一无二的顺序号
C.
发送方在收到确认信号之前可传输多个分组
D.
以上都是
答案:
D
6.
TCP什么时候对报文段采用快速重传?
A.
报文段的定时器过期
B.
估计往返时延过长
C.
收到之前发出的一个报文段的三个重复
ACK
D.
以上都不是
答案:
C
提示:
当接收方检测到数据流中出现了缺失,它会简单的对收到的最后一个有序字节给出重复
确认,即产生一个该数据的重复的
ACK。
如果
TCP发送方收到了同一数据的三个重复确认,
就表示该被确认了三次的数据段后面的数据已经丢失了。
此时
TCP执行快速重传
[RFC2581]。
7.
在
TCP连接中,假设一旦窗口大小到达
W时就会出现分组丢失,并假设
RTT是不变的。
那么
近似平均传输速度是:
A.
W*MSS/RTT
B.
MSS/RTT
C.
0.75W*MSS/RTT
D.
W*MSS/2RTT
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第
3章运输层
答案:
C
8.
(不要求掌握)考虑静态拥塞窗口延时模型。
如果服务器在完成第一个窗口中分组传送前接收
到了第一个窗口中的第一个分组的确认信号,那么一个大小为
O的对象的延时为:
A.
Latency=2RTT+O/R+(K-1)[S/R+RTT-WS/R]
B.
Latency=2RTT+O/R-S/R-RTT+WS/R
C.
Latency=2RTT+O/R
D.
Latency=2RTT
答案:
C
9.
(不要求掌握)考虑动态拥塞窗口延时模型。
下面那些组成部分会导致延时:
A.
对象传输时间O/R
B.
往返时间RTT
C.
所有停滞时间之和
D.
以上所有的
答案:
D
10.
(不要求掌握)考虑动态拥塞窗口延时模型。
P的值等于:
A.
RTT/O
B.
服务器处于停滞的次数
C.
涵盖该对象的窗口的数量
D.
以上都不是
答案:
B
二、判断题
1.
考虑一个使用持久连接的
HTTP服务器。
假设服务器为每个用户产生一个独立的进程。
那么每
一个进程将有不同的服务器端口号。
答案:
错
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第
3章运输层
提示:
HTTP的默认端口是
80。
一个
Web服务器可以为它所处理的每个请求产生一个新的
HTTP
进程,每个进程都使用
80端口。
2.
主机
A经过
TCP连接向主机
B发送一个大文件。
假定主机
B没有数据发往主机
A。
那么由于
主机
B不能随数据捎带确认信息,所以主机
B将不向主机
A发送确认。
答案:
错
提示:
确认并不是捎带在数据上的。
3.
在整个连接过程持续期间,RcvWindow的大小是不会改变。
答案:
错
提示:
在全双工连接中,连接双方的发送方各自保留一个接收窗口以提供流量控制。
接收窗口
是动态的,在连接的整个生命周期中是不断变化的。
4.
假定主机
A通过
TCP连接向主机
B发送一个大文件。
如果对于当前连接的一个报文段的顺序
号为
m,则对于后续报文段的顺序号将必然是
m+1。
答案:
错
提示:
顺序号的设定是以传送的字节流为单位,而不是以报文段为单位。
一个报文段的顺序号
是该报文段中数据段的第一个字节在字节流中的编号。
5.
TCP报文段在它的首部中有一个
RcvWindow字段。
答案:
对
6.
假定在一个
TCP连接中最后的
SampleRTT等于
1s,那么对于这一连接的
TimeoutInterval的当
前值必定≥1s。
答案:
错
提示:
超时时间是
EstimatedRTT和
SampleRTT的函数,不能由一个
SampleRTT值决定。
7.
假定主机
A通过
TCP连接向主机
B发送一个顺序号为
38的
4字节报文段。
该报文段的确认号
必定是
42。
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
答案:
错
提示:
某些情况下(比如该报文段发送超时)接收方会发送一个重复的ACK,即确认号仍然是
38。
8.
假设主机A希望通过TCP向主机B发送数据,同时主机B也希望通过TCP向主机A发送数据。
那么就需要建立两个TCP连接。
答案:
错
提示:
TCP连接提供了全双工数据传输。
9.
MSS是指包括头部的TCP报文段的最大值。
答案:
错
提示:
NSS(最大数据段尺寸)对每次从缓冲区中攫取并放入数据段中的最大数据量进行了限
制。
它是数据段中应用程序级数据的最大量,而不是包括TCP头部的报文段最大尺寸。
10.
在TCP中,主机放入报文段中的确认信号是主机期望从发送者收到的下一个字节的顺序号。
答案:
对
三、复习题
3.1~3.3节
1▲考虑在主机A和主机B之间有一条TCP连接。
假定从主机A传送到主机B的TCP报文段使用
的源端口号是x,而目的端口号是y。
那么对于从主机B传送到主机A的TCP报文段而言,源
端口号和目的端口号分别是多少。
答案:
源端口号y,目的端口号x。
2▲请阐述应用程序开发者为什么更倾向于选择在UDP上运行应用程序而不是在TCP上运行的原
因。
答案:
应用程序的开发者也许不希望应用程序使用TCP拥塞控制机制。
使用拥塞控制时会扼杀
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第
3章运输层
应用程序的发送速率。
一般来说,IP电话和
IP视频会议应用程序的设计者会选择
UDP作为低
层协议,是因为希望避开
TCP的拥塞控制。
而且,其中一些应用程序本来就不需要
TCP提供的
可靠数据传输。
3▲
当应用程序运行在
UDP上时,某应用程序是否能够得到可靠的数据传输?
如果能,如何实现?
答案:
可以。
应用程序的开发者可以在应用层协议上提供可靠的数据传输,但这需要大量的工
作和调试。
3.5节
4★是非判断题
a)
主机
A经过
TCP连接向主机
B发送一个大文件。
假设主机
B没有数据发往主机
A。
因为
主机
B不能随数据捎带确认信息,所以主机
B将不向主机
A发送确认。
b)
在该连接的整个过程中,TCP的
RcvWindow的大小不会变化。
c)
假定主机
A通过一个
TCP连接向主机
B发送一个大文件。
主机
A发送的未被确认的字节
数不会超过接受缓存的大小。
d)
假定主机
A通过
TCP连接向主机
B发送一个大文件。
如果对于当前连接的一个报文段顺
序号为
m,则对于后续报文段的顺序号将必然是
m+1。
e)
TCP报文段在它的首部中有一个
RcvWindow字段。
f)
假定在一个
TCP连接中最后的
SampleRTT等于
1s,那么对于这一连接的
TimeoutInterval
的当前值必定≥1s。
g)
假定主机
A通过
TCP连接向主机
B发送一个顺序号为
38的
4字节报文段。
这一报文段的
确认号必定是
42。
答案:
a)错b)错
c)对d)错e)对f)错g)错
5★假定主机
A通过
TCP连接向主机
B连续发送两个
TCP报文段。
第一个报文段的顺序号为
90,
第二个报文段顺序号是
110。
a)
第一报文段中有多少数据?
b)
假定第一个报文段丢失而第二个报文段到达主机
B。
那么在主机
B发往主机
A的确认报文
中,确认号应该是多少?
答案:
a)20bytesb)确认号=90
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
6★考虑在3.5节讨论中的Telnet的例子。
在用户键入字符‘C’数秒之后,用户又键入字符‘R’。
那么在用户键入字符‘R’之后,总共发送了多少个报文段,这些报文段的顺序号和确认号字段
应该是填入什么?
答案:
3个报文段。
第一个报文段:
:
顺序号=43,确认号=80
第二个报文段:
顺序号=80,确认号=44
第三个报文段;顺序号=44,确认号=81
3.7节
7★假定两个TCP连接存在于一个带宽为Rb/s的瓶颈链路上。
它们都要发送一个很大的文件(在瓶
颈链路以相同的方向上传输),并且两者是同时开始传输文件。
那么TCP将为每个连接分配多大
的传输速率?
答案:
R/2
8★是非判断题。
考虑TCP的拥塞控制,发送方在定时器超时时,其阈值将被设置为原来值的一半。
答案:
错误。
其阀值被设置为当前拥塞窗口值的一半。
四、求解题
1▲假设客户机A面向服务器S发起一个Telnet会话。
与此同时,客户机也向服务器S发起一个Telnet
会话。
请给出下面报文段的源端口号和目的端口号。
a)从A发往S的报文段。
b)从B发往S的报文段。
c)从S发往A的报文段。
d)从S发往B的报文段。
e)如果A和B是不同的主机,那么从A发往S报文段的源端口号是否可能与从B发往S的报
文段的源端口号相同?
f)如果他们是同一台主机情况会怎么样?
答案:
源端口号目的端口号
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
a)A→
S46723
b)B→
S51323
c)S→
A23467
d)S→
B23513
e)可能相同
f)不可能相同
2▲参见图3-5。
从服务器发回客户机进程的报文段中的源端口号和目的端口号是多少?
传送运输层
报文段的网络层数据报中的IP地址是多少?
答案:
假设主机A,B,C的IP地址分别为a,b,c。
(注意a,b,c各自独立)
对主机A:
源端口80,源IP为b,目的端口为26145,目的IP为a
对主机C左边的进程:
源端口80,源IP为b,目的端口为7532,目的IP为c
对主机C右边的进程:
源端口80,源IP为b,目的端口26145,目的IP为c
3▲
UDP和TCP使用1的补码来计算校验和.假设你有下面3个8比特字节:
01010101,01110000,
01001100,请问这些8比特字节和的1的补码是多少?
(注意到尽管UDP和TCP使用16比特
的字来计算校验和,但对于这个问题,你应该考虑8比特被加数。
)写出所有工作过程。
UDP
为什么要用该和的1的补码,即为什么不直接使用该和呢?
使用该1的补码方案,接收方如何
检测出差错?
1比特的差错将可能未被检测出来吗?
2比特的差错呢?
答案:
01010101
+01110000
11000101
11000101
+
01001100__
00010010
结果求补为11101101
进行差错校验时,接收方将四个字一起相加(三个原有的字和一个校验和)。
如果校验和
包含一个0,接收方将得知分组出现了差错。
所有的一位错误都将被检验出来,但不能检查
出两位出错的情况(比如,如果第一个字的最后一个位转换成0,第二个字的最后一位被转
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
换成1)。
4◆
考虑我们改正rdt2.1协议的动机。
考虑下图所示的接收方与如果3-11所示的发送方的运行时,
该接收方可能会引起发送方和接收方进入死锁状态,即双方都在等待不可能发生的事件。
请说
明这种情况。
答案:
假定发送方处于“等待来自上层的调用1”状态,接收方处于“等待来自下层的1”状态。
发送方发送一个序号为1的数据报文后,状态转换为“等待ACK/NAK1”,即等待一个ACK或者
NAK报文。
假如现在接收方正确的接收到序号为1的数据报文,它发送一个ACK,状态转为“等
待来自下层的0”,即等待序号为0的数据报文。
但现在该ACK报文受损。
当发送者接收到受损
的ACK,它重新发送序号为1的数据包。
而这时的接收者因为一直在等待序号为0的数据报文,
将始终以NAK报文来响应接收到的序号为非0的数据报文。
在这种情况下,发送方始终发送序号
为1的数据报文,而接收方始终以NAK作为回应。
双方将进入死锁状态。
5▲
在rdt3.0协议中,从接收方向发送方发送的ACK分组没有序号(尽管他们具有ACK字段,该域
包括了他们正在确认的分组的序号)。
为什么这些ACK分组不需要序号呢?
答案:
解决这个问题,最好首先要考虑我们为什么需要序号。
发送方使用序号,从而使接收方确
认是否接收到冗余的分组。
对于ACK分组,发送者并不需要这样的信息(ACK分组上的序号)来
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
确定是否是冗余的ACK。
在rdt3.0协议中,一个冗余的ACK是显而易见的,因为接收到一个原
先的ACK分组它就将转换到下一个状态。
冗余的ACK并非发送者所需从而将发送者被忽略。
6◆画出rtd3.0协议中接收方的有限状态机(FSM)的图。
答案:
rdt3.0协议和rdt2.2协议的发送方的不同在于前者有超时控制机制。
超时控制的引入增加
了发送方到接收方数据流中存在冗余分组的可能性。
Rdt2.2协议中的接收方已经能够处理冗余
分组。
(在rdt2.2中,如果接收方发送的ACK丢失,发送方将重新发送原数据)从而,rdt3.0
中的接收方也像rdt2.2中的接收方那样工作。
7◆画出在数据分组和确认分组发生混淆情况下,rdt3.0协议的操作的轨迹。
你画的轨迹应当类似
于图3-16中使用的那个图。
答案:
假定协议已经执行一段时间。
发送者处于“等待来自上层的调用”状态,接收者处于“等
待来自下层的0”。
数据分组和ACK分组发生损坏的场景如图所示。
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
SendersendsM0
SenderignoresA1
Timeout:
sender
resendsM0
sendersendsM0
sendersendsM1
IgnoreACK
Timeout:
sender
resendsM1
M0corrupted
A1
M0
A0
M1
A1
M0
A0
M1
A1corrupted
M1
A1
M0
Packetgarbled,receiver
resendslastACK(A1)
Corrupted
data
Corrupted
ACK
图1:
rdt3.0scenarios:
corrupteddata,corruptedACK
8◆考虑一个能够丢失分组,但是其最大时延已知的信道。
修改rdt2.1协议,以包括发送方超时和
重传机制。
简要论证为什么你的协议能够通过该信道正确通信?
答案:
我们增加一个计时器,它的值大于已知的往返时延。
我们还将一个超时事件增加到“等待
ACK/NAK0”和“等待ACK/NAK1”状态的变化事件中。
如果超时事件发生,将重新传输最近发
送的数据包。
让我们来看一下为什么这个协议能够使该信道正确通信
.
假定超时是由于在发送者到接受者的数据通道上发生数据包的丢失而产生。
在这种情况下,
接收者永远不会接收到原先的数据。
以接收者的角度来看,当超时重传发生时,接收者并
不知道这是重传的分组,而把它当作原先的数据一样看待。
.
假定ACK分组丢失。
在超时之后,接收方将重传该分组。
如果ACK的序号发生混淆,也会
重传。
但是如果让一个ACK标志产生混淆,便会发生完全一样的重传动作。
因此发送者在
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※
第3章运输层
ACK序号发生混淆和ACK丢失的两种情况下,将产生相同的动作。
Rdt2.1协议已经能够处
理ACK发生混淆的情况。
9■rdt3.0协议的发送方直接忽略(即不采取任何措施)所有出现差错和确认差错的确认分组。
假
设在这种情况下,rdt3.0只是重传当前的数据分组,该协议是否还能正常运行?
(提示:
考虑
在仅有一个比特差错时会发生什么情况,在分组没有丢失但是定时器超时过早发生的情况下会
产生什么情况。
考虑到当n趋于无穷时,第n个分组将被发送几次。
)
答案:
因为重传是在分组已经丢失的情况下发生(从接收者的角度来看,它不知道将发生什么事
情),所以协议还是能够正常工作。
这个问题的背后更敏锐的问题是,重传分组也可能是超时过早所引起的。
在这种情况下,每
个分组都将被确定,发送方每收到一个ACK都会发送分组,当分组的个数n趋于无穷时,将有
无穷多个冗余的分组发向接收方。
10◆考虑比特交换(又称停等协议)协议。
如果连接发送方和接收方的网络能够对报文重新排序(即
在发送方和接收方之间的媒体上传播的两个报文能够重新排序),那么比特交换信息将不能正确
运行(确信你清楚地明确了解了这时它不能正确工作的原因)。
请画图说明。
画图时请把发送方
放在左边,接收方放在右边,使时间轴朝下,标出交换的数据报(D)和确认报文(A)。
你要标
明与数据报文和确认报文相关的序号。
答案:
M0
M0
M0
M1
A0
A0
A1
oldversionofM0
accepted!
M1
A1
疑难:
▇重点:
★一般:
▲了解:
◆自学:
※