ME2012第3章习题答案

上传人:仙*** 文档编号:155994829 上传时间:2022-09-25 格式:DOC 页数:8 大小:97.50KB
返回 下载 相关 举报
ME2012第3章习题答案_第1页
第1页 / 共8页
ME2012第3章习题答案_第2页
第2页 / 共8页
ME2012第3章习题答案_第3页
第3页 / 共8页
点击查看更多>>
资源描述
ME2012 高级计算机网络 第3章部分习题参考解答 2012-05起蓝色的题目是布置过的习题要求掌握UDP3.1,请说明UDP用户数据报报文段的基本格式。并指出用户数据报是如何实现传输层协议的基本功能的?解答 32位 UDP从发送主机的应用进程得到报文,附加上为复用/分解 源端口号 目的地端口号 服务所需要的源和目的地端口号字段,以及另外两个字段 长度 检验和 (长度和校验和); 然后把形成的报文段交给网络层。 网络层把该报文段封装到一个IP数据报中(即把该报文应用程序数据 段作为负荷数据),再以尽力而为的方式把IP数据报送交(报文) 到接收主机(依IP地址)。该报文段到达接收主机后, UDP使用”目的端口号”把数据递交到相应的应用进程。3.2,为什么需要UDP?为什么用户不能直接访问IP?UDP协议主要用在哪些场合?解答1与TCP相比,需要使用UDP的原因是:UDP简单(小的段首部,在发送方和接收方无状态变量等);快捷(无需连接建立的延迟时间,不考虑拥塞控制和发送速率管理等)。应用层还能更好地控制要发送的数据和发送的时间。2仅仅使用IP分组对于应用进程来说是不够的。一个数据段要从源应用进程传送到目的地进程,必须规定目的地地址和应用进程的相应端口PORT(见“套接字”Socket)。IP分组仅包括目的地的地址,分组送到目的地机器后,网络控制程序不能确定把分组递交给哪一个进程。在UDP用户数据报中包含了一个目的地的端口,此信息是必须的,有了它,才能在目的地机器中把数据段递交到正确的应用进程。3目前UDP在因特网中的主要应用有:远程文件服务(NFS);流式多媒体(专用协议);IP电话(专用协议);网络管理(SNMP);路由选择协议(RIP);和名址转换(DNS)等。其特征是要求快捷、可以不必考虑在传输中的可靠服务等场合。3.3, UDP和TCP的校验和问题 UDP和TCP采用和的反码来计算16位字的校验和。(1) 本题为了计算简单起见,只采用8位来计算。假定有以下的三个8位字节:01010101,01110000,01001100,请你写出计算其校验和的全过程。(2)UDP为什么要采用和的反码,而不直接采用和本身?(3)采用这类反码方案,接收方如何检测出差错?能够查出1位错?能否查出2位错? 解答 01010101 1 左算式表明校验和为 11101101;01110000 + (2) 采用反码的主要原因是:在数据即使是全零的情况下,11000101 校验和不再是全零,容易检测差错的发生。11000101 (3)接收方可以把收到的数据再次作检验和,与送来的校验和比较判01001100 + 别差错。00010010加进位1回绕后 ,总能查出1位错; 11101101 反码 还能查出大部分的2位错(存在不能查出的一些场合)。RDT可靠数据传输协议3.4,请简要小结:在可靠数据传输协议rdt2.0、 rdt2.1、rdt2.2和rdt3.0中,分别采用了什么措施来解决相应的传输差错的。解答 这几个版本都在停止等待前提下工作: rdt2.0对付位差错-采用检查和, 使用反馈ACK/NAK,出错时发送方重传分组。rdt2.1和2.2对付ACK/NAK的位差错 - 采用序号(0/1号)机制。rdt3.0对付分组丢失 - 采用超时重传机制。3.5 画出并简要说明rdt3.0接收方的FSM有限状态机。解答不妨认为有两个状态:状态0和状态1。用动作01表示从状态0转向状态1;用动作00表示从状态0仍回到状态0;类似地可有动作10和动作11。状态0:等待来自下层的0号分组事件01:调用rdt3.0接收分组,且收到的数据分组正确未受损并且是SEQ#0分组 rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seg0(rcvpkt)动作01:从分组中提取出数据 extract(rcvpkt, data) 把数据递交到上层 deliver_data (data) 组成ACK0分组 sndpkt= make_pkt(ACK,0,checksum) 调用下层发送ACK反馈 udt_sent( sndpkt); 转向状态1 等待1号分组事件00:调用rdt3.0接收分组,且收到的数据分组受损或者是SEQ#1分组 rdt_rcv(rcvpkt) & (corrupt(rcvpkt)|has_seq1(rcvpkt)动作00:重复地发送已发送过的ACK0: udt_sent( sndpkt);序号不对, 仍发ACK 发送方不处理ACK; 仍处在状态0不变。状态1:等待来自下层的1号分组;完全类似地有:事件10,动作10;和事件11,动作11。3.6, 请参照rdt2.0rdt3.0指出引起下列差错的可能原因:(1)传输中受损的报文段,(2)丢失的报文段,(3)重复的报文段,(4)乱序的报文段,(5)受损的确认,(6)丢失的确认,(7)重复的确认。解答为了加深理解起见,不妨参照rdt2.0rdt3.0或TCP中的处理方案来回答。1传输中受损的报文段:受损Corrupt指报文中的二进位发生差错(01或者10;个别位或者许多位);原因是:通信信道上“噪声”(热噪声或冲击噪声)、干扰等导致物理信号的破坏或信号畸变等,从而引起的一类传输差错。2丢失的报文段:丢失Lost的主要可能原因包括传输有关的软硬件故障,或者是在传输途中任何一站(如路由器、主机等)或接收方来不及处理所造成的缓冲站队列溢出等。3重复的报文段:原因之一是:如果某个报文段的发送过程被延迟较长时间但并未丢失,会引起“过早超时”现象,超时重传就会引起接收方收到重复的冗余报文段(多余的副本);原因之二是:某一个分组已被接收方正确收到但是接收方发向发送方的确认ACK丢失(或者延迟了较长时间),发送方还是认为接收方尚未能收到,于是发送方启动超时重传,引起接收方收到了重复的报文段。4乱序的报文段:在非停等待的流水化连续传送报文的情况下(不论是GBN还是SR),某个报文段的丢失或者较长延迟,都会引起下一报文段被接收方先收到的现象,引起接收方收到乱序的报文段。5丢失的确认:丢失原因相同于丢失的报文段。6受损的确认:受损原因相同于受损的报文段。7重复的确认报文段:分两种情况,一是“过早超时”的重传引起的重复确认(第一次确认来得迟了);二是对于乱序的报文段,接收方采用最后一次正确确认来回答(通常会丢弃乱序报文)。3.7,请简要说明对于在3.6题中所列出的各类差错,在TCP类的协议中分别采用的相应差错控制方法。(提示:建议用rdt2.0 到rdt3.0中所用的对策简要说明即可)。解答为了加深理解起见,不妨参照rdt2.0rdt3.0或TCP的处理方案来回答。1传输中受损的报文段相对应的差错控制方法:接收方采用“检验和”来发现此类差错,与发送方配合用ARQ自动重传请求来试图纠正该类差错。在rdt3.0中接收方校验后不发确认,由发送方超时重传。2丢失的报文段相对应的差错控制方法:采用确认机制,由发送方发现丢失并重传,发送方采用定时器机制,在超时还未能收到ACK确认时,发送方重传该丢失的报文段。(为了避免过早超时而引起多发重复的报文段,一般应采用序号机制加以辅助,用序号来判别报文段是否重复。)3重复的报文段相对应的差错控制方法:采用序号机制,接收方检查报文段的序号,可发现是否收到了重复的报文段。一旦收到重复报文段,接收方可重发已确认过的ACK,使发送方不产生误解。4乱序的报文段相对应的差错控制方法:用序号和窗口机制来发现和控制。比如GBN场合接收方一般会忽略乱序的报文段;SR场合则会确认接收正确的乱序报文段,在由接收进程真正接收之前交由缓冲区暂时存放,需加上收发窗口的辅助控制。5丢失的确认相对应的差错控制方法:在rdt3.0中由发送方发现与处理。作为丢失报文一样地超时重传。6受损的确认相对应的差错控制方法:在rdt3.0中由发送方发现与处理。作为丢失确认一样地超时重传。7重复的确认报文段:作为重传的策略来实施。比如第一种场合下,发送方可不处理。第二种场合,发送方应按序重发。3.8请简要说明当发送方窗口与接收方窗口的长度都是1时,比特交替协议与GBN协议相同,同样也与SR协议相同。解答注意到在窗口大小是1的场合,GBN、SR与比特交替协议在功能上是等价的。在窗口大小为1时,排除了在窗口内有乱序分组的可能性;一个累积ACK在这个场合下也等同于一个常规的ACK,因为它只可能指向在窗口内的单个分组。3.9 举例说明在SR协议(与GBR协议)中,发送方有可能会收到落在其当前窗口之外的分组的ACK。(为简单起见,不妨可令发送窗口大小为3)解答比如,假定发送方有窗口大小为3,并在t0时刻发送了分组1、2和3; 在t1(t1t0),接收方发ACK1、2、3; 在t2(t2t1) 发送方超时并重新发送分组1、2、3; 在t3,接收方收到了重复的分组1、2和3; 在t4,发送方收到了接收方在t1发送的ACK,并推进其窗口到4、5、6; 在t5,发送方收到了接收方在t2后发送的ACK1、2、3,这些ACK处于其窗口之外了。TCP3.10,为什么一个TCP报文段所携带的用户数据最多为65515B?为什么TCP头部中最多只能有44B的TCP选项?解答 216=65536B, 65535B20B(最小首部)= 65515B。TCP报文段中的“首部长度位”4bits,32位=4B; 244B= 64B。 64B 最小必要首部20B = 44B。3.11考虑从主机A向主机B传输L字节的大文件,假定MSS等于1460字节.1在TCP序号允许的范围内,文件长度L的最大允许值是多少?TCP的序号字段是4个字节.2请估算出该最大文件需要化多长的时间?假定传输层、网络层和数据链路层总共加在没个报文段首部上的长度是66个字节;传输分组的链路速率是10Mbps;不采用流量控制和拥塞控制,因此主机A能够一个接一个地连续不断发送报文段。注: 232= 4,294,967,296解答 232= 4,294,967,296个可能的序号.1在TCP中,序号不是随着每一段增加1,而是需增加该段所发送的数据的字节数;因此序号与MSS无关. 从A到B可发送的最大的文件的大小简单地就是由232= 4,294,967,2964.19G字节可表示出的字节数.2MSS=1460,报文段的个数是232/1460=2,941,758个,首部的66个字节要加到每一报文段上去,即首部引起加上662,041,758= 194,156,028个字节.从而,总的传输字节数是: 232 +194,156,028字节 =3591107位.因此,采用10Mbps链路,要花 3591秒= 59分钟来传输该文件.3.12,如果在建立TCP连接过程中收发双方协商的初始窗口大小是400B,使用1到1000作为分析窗口的基本范围,请你画出发送窗口以下的3个演变场景:(1)在初始时,允许可发送400B;(2)已发送了400B,其中序号1到200的报文已收到了接收方的正确确认;(3)发送方已收到来自于接收方对序号为201到400的报文的确认,并且还收到接收方通知窗口扩大为500B。要求在这三种场景中都标出:1可发送的起始字节的指针箭头;2已发送并确认的范围;3已发送但未被确认的范围;4允许可继续发送的范围;5不可以发送的范围;6发送窗口范围;7收到确认后窗口将要前移的起点处的方向箭头。解答 1发送窗口大小是400B 在初始时,允许可发送400B发送窗口 收到确认后窗口前移1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 901 1000 允许发送 不允许发送 指针 2 已发送了400B,其中序号1到200的报文已收到了接收方的正确确认 收到确认后窗口前移 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 901 1000 已发送 已发送 允许继续 不允许发送 并被确认 但未确认 指针 发送 3收到的确认序列号为401,窗口增大为500,还可以发送500B 1 100 101 200 201 300 301 400 401 500 501 600 601 700 701 800 801 900 901 1000 已发送并被确认 允许继续发送 不允许 指针 发送3.13,假定序号空间大小为2K,请举例说明GBN方案的滑动窗口的大小W应不大于2K 1;而SR方案的滑动窗口的大小W应不大于2 K 1。解答本题只要求了解一下结论,不作详细推导要求。理解此结论可参阅讲稿3.4小节的片子中“GBN中窗口大小”一页,和SR的最后一张片子(也可见有关的图3.27)。3.14,请说明为什么TCP协议要求对每一个TCP数据字节都要进行编号?顺序号与确认号各有什么用途?解答TCP的基本特征是采用可靠的按序发送的面向字节流的机制。由于报文段到达可能为乱序,因此需要按发送顺序编号各个报文段。TCP按顺序编号 每一个8位二进位组字节,把报文段中第一个字节的编号作为该报文段的编号。TCP把要传输的整个报文(可能包括几个报文段)当作是一个个字节组成的字节流。即TCP采用字节流,允许无“报文段规定长度的边界标记”,提供了组成报文段的长度的很大灵活性。由于可靠传输、流量控制、拥塞控制和连接管理等最好都用报文段序号机制辅助,因此,TCP协议要求对每一个TCP数据字节都要进行编号。在TCP报文段的头部,有发送序号字段:它占4字节,指出报文中数据在发送方的数据流中的位置。用字节编号 也有确认序号字段:它也占4字节,指出接收方希望下一次接收的字节序号。-期待接收的序号。可以非常方便地实现累积确认(TCP的确认是对接收到的数据的最高序号,即收到的数据流中的最后一个序号,表示确认)。 发送顺序号和确认序号 主要用于可靠的数据传输。3.15,请举例说明使用两次握手来建立TCP连接可能会出现的不正常情况。解答考虑主机R和S之间的连接通信的例。假定主机R向S发出一个请求连接的分组,主机S收到后允许连接,并且S发送确认ACK应答分组,如果是两次握手协议,S认为连接已成功,从而主机S也可以开始向R发送数据分组了。 但是,这时如果发生了S向R回应的确认ACK应答分组丢失的情况,主机R就不知道主机S是否已准备好接收或发送数据分组;也不知道S建议采用什么序列号用于S到R的数据通信,同样也不知道S是否同意(确认)由R所建议的R通信用初始序列号;R甚至于怀疑S是否已收到自己发给它的连接请求分组?- 在这种情况下: 主机R只能认为连接尚未建立成功,将会忽略S发来的任何数据分组;只是继续耐心等待接收S同意连接的那个被丢失了的确认ACK应答分组。 而主机S则认为连接已成功,并且S已发出数据分组,一旦发出的数据分组超时(因主机R认为连接未成功,从而忽略S发来的数据分组),S再不断重复地发送同样的数据分组,这时,将会形成了死锁的局面。3.16,考虑从美国西海岸到东海岸的端系统网络中发送数据分组,已知条件:带宽R=1Gbps的链路,15ms端到端的传播时间,1KB大小的分组(L);如果要求信道利用率大于90%,请大致估算出需要使窗口达到多大?解答从已知条件: 15ms端到端传播时间,即RTT= 30ms;带宽R=1Gbps的链路,L=1KB分组大小; 这时,传输发送时间= L/R= 0.008ms ; 令W为窗口大小,粗糙地看, 信道利用率U = W*(L/R) / (RTT+L/R) 0.9 窗口大小W 0.9*30.008/(0.008)=3376。3.17考虑TCP估算RTT的过程。令X=a=0.1,假定SampleRTT1是最新采样的RTT, SampleRTT2是下一个最新采样的RTT,依此类推。1对于一个给定的TCP连接,假定有4个确认报文相继到达,带有4个对应的RTT值:SampleRTT4、SampleRTT3、SampleRTT2和SampleRTT1。请用这4个采样RTT来表示出EstimateRTT。2把1中的公式推广到n个RTT样本的场合。3在2得到的公式中,令n,说明这个过程可被称为指数移动平均。解答1令EstimateRTT(n)表示第n次采样后估算的RTT;EstimateRTT(1)=SampleRTT1;EstimateRTT(2)= X SampleRTT1+(1-X)SampleRTT2;EstimateRTT(3)=X SampleRTT1+(1-X)X SampleRTT2+(1-X)SampleRTT3;=X SampleRTT1+(1-X)X SampleRTT2+ (1-X)2 SampleRTT3;EstimateRTT(4)= X SampleRTT1+(1-X)EstimateRTT(3)= X SampleRTT1+(1-X)X SampleRTT2+ (1-X)2 X SampleRTT3+ (1-X)3 SampleRTT4;2 EstimateRTT(n)= Xj=1n-1 (1-X)j-1 SampleRTTj +(1-X)n-1 SampleRTTn。3当n时,(1-X)n-10;EstimateRTT(n)= Xj=1n-1 (1-X)j-1 SampleRTTj= X/(1-X)j=1n-1 (1-X)j SampleRTTj。当前X=0.1, EstimateRTT(n)=1/9j=1 n-1 (0.9)j SampleRTTj,表明对采样RTT的权重呈指数衰减。3.18,如果一条TCP连接的当前往返时间RTT=30ms,并且分别在相隔时间量26ms、32ms和28ms后收到确认,请你估算出新的RTT值。(假定=0.1)。解答Estimated RTT= (1)老的估算RTT + 采样RTTEstimated RTT1= 0.930+ 0.126 = 27+2.6 = 29.6ms;Estimated RTT2= 0.929.6+ 0.132=26.64+3.2 = 29.84ms;因此,Estimated RTT= 0.929.84 + 0.1 28 =26.856 + 2.8 = 29.656ms。3.19,如果一条TCP连接当前估算的往返时间RTT=20ms,当前估算RTT的偏差值是2毫秒,此后,分别依次在相隔时间量25ms、30ms和20ms后又收到确认,请你估算出用于超时的时间量设置值。(假定=0.1,=0.2)。解答先估算出新的RTT,每次同时RTT估算偏差值。最后用估算公式估算用于超时的时间量设置值。新的Estimated RTT= (1)老的估算RTT + 采样RTT新的RTT偏差值DevRTT= (1)老的DevRTT + | Estimated RTT采样RTT|;TimeoutInterval= EstimatedRTT + 4DevRTT;因此有,新的Estimated RTT1= (10.1)20 + 0.125=18+2.5=20.5ms;新的RTT偏差值DevRTT1= (1)老的DevRTT + | Estimated RTT采样RTT|;=(1-0.2)2ms+0.2(25-20.5)ms = 1.6+0.9 = 2.5ms;新的Estimated RTT2= (10.1)估算RTT1(20.5) + 0.130=18.45+3=21.45ms;新的RTT偏差值DevRTT2= (10.2)DevRTT1(2.5ms) + 0.2| 21.4530|= 2+1.71=3.71ms;新的Estimated RTT3= (10.1)估算RTT2 (21.45ms)+ 0.1采样RTT(20ms)= 0.9*21.45+2=21.305ms;新的RTT偏差值DevRTT3= (10.2)DevRTT 2(3.71ms)+ 0.2| 21.30520|= 2.968+0.261=3.229ms;超时时间量可设为TimeoutInterval= EstimatedRTT + 4DevRTT=21.305+43.229=21.305+12.916= 34.221ms。3.20,假定在建立TCP连接时,主机A和主机B几乎同时发出连接请求,似乎会发生冲突,请画出如果主机A的请求略快一点点时连接过程发生的场景解答从概念上看,允许有以下三类可能的理解:(1)A与B之间只需要建立一个双向的TCP连接,因此A或B可以拒绝多余的连接;(2)A和B分别请求与另一服务器S作TCP连接;这与一下的(3)类似。(3)主机A和B确实分别有着向对方的不同TCP连接要求;以下将按(3)叙述:1允许两台主机中有多个应用进程分别建立TCP连接和交换数据。2在建立连接期间允许分别采用不同的建议SEQ序号和相应的确认序号ACKN(简记AN);为了明晰起见,把“ACK标记位”记成ACKF,确认序号记为ACKN(仅当ACKF=1时,ACKN确认序号才有意义)。比如:主机A请求建立连接时第1次握手通告建议的SEQ序号是X0 SYN=1、ACKF=0、SEQ=X0 , 第2次握手主机B确认时通告的SEQ序号是Y0、AN确认序号=X0+1 SYN=1、ACKF=1、SEQ=Y0、AN=X0+1 ,第3次握手则有主机A确认SEQ=X0+1和AN=Y0+1 SYN=0、ACKF=1、SEQ=X0+1、AN=Y0+1 ;而另一个由主机B发出的请求建立连接其第1次握手通告的SEQ序号是Y1 SYN=1、ACKF=0、SEQ=Y1 ,第2次握手主机A确认时通告的SEQ序号是X1、AN确认序号=Y1+1 SYN=1、ACKF=1、SEQ=X1、AN=Y1+1 ,第3次握手则有主机B确认SEQ=Y1+1和AN=X1+1 SYN=0、ACKF=1、SEQ=Y1+1、AN=X1+1 。如下图所示: 主机A 主机B1 SYN=1,ACKF=0,SEQ=X0 SYN=1,ACKF=0,SEQ=Y1221 SYN=1,ACKF=1,SEQ=Y0,ACKN=X0+1 SYN=1,ACKF=1,SEQ=X1,ACKN=Y1+13 SYN=0,ACKF=1,SEQ=X0+1,ACKN=Y0+1 SYN=0,ACKF=1,SEQ=Y1+1,ACKN=X1+13.21,假定主机A请求释放的报文段序号SEQ=2500,主机B应答释放的报文段序号SEQ=6000,请你详细画出在主机A和主机B之间的进行TCP传输时,连接释放的交互过程。其中也要列出所有的有关的标记位。解答 为了明晰起见,把“ACK标记位”记成ACKF,确认序号记为ACKN(仅当ACKF=1时,ACKN确认序号才有意义)。主机A 主机B FIN=1,ACKF=0,SEQ=2500 ACKF=1,SEQ=6000,ACKN=2501FIN=1,SEQ=6001,ACKF=0ACKF=1,SEQ=2501,ACKN=60023.22请回顾TCP吞吐能力的描述,假定在连接速率从 W/(2RTT)变化到W/RTT的期间内,只丢失了一个分组(在该期间的结束时),1证明丢包率L = 1/ 3/8 W2 + 3/4 W ;(提示先计算出在此期间发送的分组个数)2如果一个连接的丢包率是L,采用1中公式的近似表达式(认为W很大),请证明平均带宽大体上应为 (1.22MSS)/RTTSQR(L); (此公式中指L开平方,提示采用平均吞吐率公式)3假定针对1500字节的分组长度和一个100毫秒的RTT,TCP需要支持10Gbps的连接,所能容忍的丢包率是多少?提示采用(2)中得到的公式解答1丢包率L是分组丢失数与已发送的分组数之比; 在此期间发送的分组个数是:W/2+(W/2 +1)+(W/2 +2) + +W = W/2 n=0 (W/2+ n)= (W/2+1)(W/2)+W/2 n=0 n=W2/4+W/2+(W/2)(W/2+1)/2 = 3W2/8 + 3/4W; 在此期间丢失1个分组, 因此, 丢包率 L = 1/3/8W2+ 3/4W.2对于很大的窗口W, 3/8W23/4 W; L近似于 8/(3W2 ); 即W= SQR8/(3L)(开平方);平均吞吐率 = 3/4W(MSS/RTT) = 3/4SQR8/(3L)MSS/RTT = 1.22MSS/RTTSQR(L);3采用(2)中的公式,10Gbps= 1.22MSS/RTTSQR(L)= 1.22(15008位)/0.1秒SQR(L);SQR(L)= 14640位/10 9位; L= 2.1410 -10 .- 8 -
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!