第3章运输层练习题一、选择题1.当一个TCP报文段到达目的主机时,通过什么来定向套接字?A.封装报文段的数据报中的源IP地址B.目的端口号C.源端口号D.以上所有答案:D提示:TCP套接字是通过一个四元组:(IP地址,源端口号,目的IP地址,目的端口号)来标识的。当一个TCP报文段从网络到达一台主机时,主机使用全部四个值来将报文段定向(多路分解)到相应的套接字。2.UDP具有以下哪些特征?A.在服务器上维护连接状态信息B.通过三次握手建立连接C.调节发送速率D.以上都不是答案:D3.当一个UDP报文段到达某个主机时,为了将报文段提交给合适的套接字,操作系统使用:A.源IP地址B.源端口号C.目的端口号D.以上全部答案:C提示:UDP套接字是由一个包含目的IP地址和目的端口号组成的二元组来全面标识的。在多路分解时,目标主机通过检查报文段中的目的端口号,将报文段定向到相应套接字。4.在什么样的情况下,停止等待协议的效率会变得很低:疑难:▇重点:★一般:▲了解:◆自学:※第3章运输层A.当源主机和目的主机之间的距离很近而且传输速率很高时B.当源主机和目的主机之间的距离很远而且传输速率很高时C.当源主机和目的主机之间的距离很近而且传输速率很低时D.当源主机和目的主机之间的距离很远而且传输速率很低时答案:B提示:使用停止等待协议,发送方在确认接收方已经正确地接收了当前传送的分组之前不会发送新的数据。所以在传输效率很高的前提下,主机之间距离越远,不必要的等待时间就越长。5.流水线操作具有以下哪些特点:A.发送方必须能缓存它已发送了但还没有收到确认的分组B.每一个正在传输的分组具有独一无二的顺序号C.发送方在收到确认信号之前可传输多个分组D.以上都是答案:D6.TCP什么时候对报文段采用快速重传?A.报文段的定时器过期B.估计往返时延过长C.收到之前发出的一个报文段的三个重复ACKD.以上都不是答案:C提示:当接收方检测到数据流中出现了缺失,它会简单的对收到的最后一个有序字节给出重复确认,即产生一个该数据的重复的ACK。如果TCP发送方收到了同一数据的三个重复确认,就表示该被确认了三次的数据段后面的数据已经丢失了。此时TCP执行快速重传[RFC2581]。7.在TCP连接中,假设一旦窗口大小到达W时就会出现分组丢失,并假设RTT是不变的。那么近似平均传输速度是:A.W*MSS/RTTB.MSS/RTTC.0.75W*MSS/RTTD.W*MSS/2RTT疑难:▇重点:★一般:▲了解:◆自学:※第3章运输层答案:C8.(不要求掌握)考虑静态拥塞窗口延时模型。如果服务器在完成第一个窗口中分组传送前接收到了第一个窗口中的第一个分组的确认信号,那么一个大小为O的对象的延时为:A.Latency=2RTT+O/R+(K-1)[S/R+RTT-WS/R]B.Latency=2RTT+O/R-S/R-RTT+WS/RC.Latency=2RTT+O/RD.Latency=2RTT答案:C9.(不要求掌握)考虑动态拥塞窗口延时模型。下面那些组成部分会导致延时:A.对象传输时间O/RB.往返时间RTTC.所有停滞时间之和D.以上所有的答案:D10.(不要求掌握)考虑动态拥塞窗口延时模型。P的值等于:A.RTT/OB.服务器处于停滞的次数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,确认号=813.7节7★假定两个TCP连接存在于一个带宽为Rb/s的瓶颈链路上。它们都要发送一个很大的文件(在瓶颈链路以相同的方向上传输),并且两者是同时开始传输文件。那么TCP将为每个连接分配多大的传输速率?答案:R/28★是非判断题。考虑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→S46723b)B→S51323c)S→A23467d)S→B23513e)可能相同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为c3▲UDP和TCP使用1的补码来计算校验和.假设你有下面3个8比特字节:01010101,01110000,01001100,请问这些8比特字节和的1的补码是多少?(注意到尽管UDP和TCP使用16比特的字来计算校验和,但对于这个问题,你应该考虑8比特被加数。)写出所有工作过程。UDP为什么要用该和的1的补码,即为什么不直接使用该和呢?使用该1的补码方案,接收方如何检测出差错?1比特的差错将可能未被检测出来吗?2比特的差错呢?答案:01010101+011100001100010111000101+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的数据报文,将