计算机网络,自顶向下方法与Internet特色课后习题答案第三章中文

更新时间:2024-03-18 11:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

WRI 研究生0601

3复习题

1. P127 源端口号为y,目的端口号为x。

2. P 131 应用程序开发者可能不想其应用程序使用TCP的拥塞控制,因为这会在出现拥塞时降低应用程序的传输速率。通常,IP电话和IP视频会议应用程序的设计者选择让他们的应用程序运行在UDP上,因为他们想要避免TCP的拥塞控制。还有,一些应用不需要TCP提供的可靠数据传输。 3. P131 是的,应用程序开发者可以将可靠数据传输放到应用层协议中完成。但是这需要相当大的工作量和进行调试。 4. a) false b) false c) true d) false e) true f) false g) false

5. a) 20 bytes (110-90=20bytes) b) ack number = 90 P155 第一个包丢失,发送第一个包之前的一个包的ACK

6. P155 3个报文段,第一个报文段,客户机到服务器,seq=43,ack=80;第二个报文段,服务器到客户机,seq=80,ack=44;第三个报文段,客户机到服务器,seq=44,ack=81。 7. R/2 P180 R/2

8. P176 错误,其阈值将被设置为拥塞窗口目前值的一半(乘性减)。 习题

1. A →S 源端口号:467 目的端口号:23

b) B →S源端口号:513目的端口号:23 c) S →A源端口号:23目的端口号:467 d) S →B源端口号:23目的端口号:513 e) Yes. f) No.

WRI 研究生0601

2. P128 假设主机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. P132 UDP检查和

01010101 +01110000 11000101 11000101 +01001100 00010001

1的补码=11101110

为了检测错误,接收方将四个字相加(三个原始字和一个检测字)。如果结果包含0,那么接收方就知道分组中存在错误。所有的1bit错误都将被检测出来,但是年个个比特的错误有可能被忽略(例如,如果第一个字的最后一个数变为0,并且第二个字的最后最后一个数变为1)。 4. P138 假设发送方处于“等待来自上层的调用1”状态,接收方处于“等待来自下层的1”。发送方发送一个带有序列号1的分组,然后转到“等待ACK或NAK1”的状态等待ACK或NAK。假设现在接收方正确接收到带有序列号1的分组,发送一个ACK,然后转入“等待来自下层的0“状态,等待带有序列号0的分组。然而,ACK出错了。当rdt2.1发送

WRI 研究生0601

方接收到出错的ACK,它就重发带有序列号1的分组。然而,接收方在等待带有序列号0的分组并在它没有收到带有序列号0的分组时一直发送NAK。因此发送方会一直发送带有序列号1的分组,这时接收方会一直发送这个分组的NAK信息。两边都不会从这个状态中跳出,进入了死循环。

5. P140 为了回答这个问题,首先考虑为什么我们需要序列号。我们看到发送方需要序列号以便于接收方能够区分出一个分组是不是已经接收到的分组的重复。考虑ACK信息,发送方不需要这个信息(也就是一个ACK的序列号)来告诉发送方检测到一个重复的ACK.因为当他接收到原始ACK信息后它就转入下一个状态,所以一个重复的ACK信息对rdt3.0的发送方是很明显的。重复的ACK信息不是发送方需要的ACK信息,因此被red3.0发送方忽略了。

6. P139 rdt3.0协议的发送方与rdt2.2协议的发送方的不同之处在于引入了超时机制.我们已经看到超时机制地引入增加了从发送方到接收方数据流中出现重复分组地可能性.然而,rdt2.2协议地接收方已经能够处理重复分组.(在rdt2.2中当接收方发送地ACK丢失时,发送方就会重传旧的数据.这时接收方就会接收到重复的分组.) 因此rdt3.0中的接收方同rdt2.2中的接收方相同.

7. Suppose the protocol has been in operation for some time. The sender is in state “Wait for call from above” (top left hand corner) and the receiver is in state “Wait for 0 from below”. The scenarios for corrupted data and corrupted ACK are shown in Figure 1.

WRI 研究生0601

Figure 1: rdt 3.0 scenarios: corrupted data, corrupted ACK

8. P138 这里,我们加入一个定时器,它的值比我们已知的往返传播时延大.我们在”等待ACK或NAK0”和”等待ACK或NAK1”状态各加入一个超时事件.如果超时事件出现,那么最后传输的分组将被重传.让我们看看为什么这个协议仍然能和rdt2.1的接收方协同工作.假设超时是由数据分组的丢失引起的,比如,一个从发送方到接收方的信道上的分组丢失.在这种情况下,接收方从没有接收过之前传送的分组,从接收方的角度看,如果超时重传的分组被接收到,它看起来就和最初传输的分组被接收是一样的.现在假设一个ACK丢失.接收方最终将由于超时重传分组.但是这个重传动作是和当一个错误ACK出现时的重传动作是完全相同的.因此当出现ACK丢失或出现错误ACK时,发送方的重传动作是一样的.rdt2.1的接收方已经能够处理出现错误ACK的状况.

9. 协议仍将工作,因为如果接收到的带有错误的分组实际上被丢掉的话,重传就会发生(从接收方的观点看,这两种情况哪一个会发生,或者同时发生是不可知的).要对这个问题进行更进一步的讨论,就必须考虑到定时器超时

WRI 研究生0601

过早发生的情况.在这种情况下,如果每个超大分组被确认,并且每个接收的超大分组确认信息导致另一个超大分组被发送,当n趋近于无穷时,分组n被发送的次数将无限增加. 10.

11. 在仅使用NAK的协议中,只有当接收到分组x+1时才能检测到分组x的丢失.也就是说接收方接收到x-1然后接收到x+1,只有当接收方接收到x+1时才发现x的丢失.如果在传输x和传输x+1之间有很长时间的延时,那么在只有NAK的协议中,x的修复要花费很长的时间.另一方面,如果要发送大量的数据,那么在只有NAK的协议中修复的速度将很快.并且,如果错误很少,那么NAK只是偶尔发送,并且从不发送ACK.与只有ACK的情况相比,只有NAK的情况将明显减少反馈时间.

12. It takes 8 microseconds (or 0.008 milliseconds) to send a packet. in order for the senderto be busy 90 percent of the time, we must have util = 0.9 = (0.008n) / 30.016 or n approximately 3377 packets.

13. 在GBN可靠数据传输协议中,发送方持续发送分组直到它接收到一个NAK.如果到n-1之前的分组已经被正确的接收,这个NAK只是为分组n产生.也就是说,n总是未被接收的分组的最小序号.当发送方接收到分组n的NAK,它从分组n开始重传.这和书上讲的GBN协议相类似,除了在流水线上没有未被确认分组的最大数.注意发送方不能确切的直到有多少分组

WRI 研究生0601

时刻发送的ACK,并将其窗口前移到4,5,6.在t5时刻发送方接收到接收方在t2发送的ACK1,2,3.这些ACK是在当前窗口之外的报文的ACK. b) 是的,本质上同a中是一样的. c) True.

d) 正确.当窗口尺寸为1时,SR,GBN,的比特交替协议在功能上相同.窗口尺寸1排除了失序分组的可能性.在这种情况下,一个累积的ACK就是一个普通的ACK.因为在窗口内它只能与一个分组有关. 20. 有232 = 4,294,967,296个可能的序列号.

a) 序列号不会因报文数增加而有增量,而是随发送数据比特数量的增加而有增量.所以MSS(最大报文长度)的大小与问题无关.能够从A发送到B的文件的最大尺寸能被232 ≈ 4.19 Gbytes所描述.

b) 报文数是: [232/1460]=2,941,758.每个报文增加66bytes的首部,所以总共增加了2,941,758×66=194,156,028 bytes的首部.要传输的总比特数为232 +194,156,028 = 3,591×107 bits

因此使用10Mbps链路需要10×106=3,591秒=59分钟来传输文件. 21. Denote EstimatedRTT (n) for the estimate after the nth sample.

EstimatedRTT (1) = SampleRTT1

EstimatedRTT (2) = xSampleRTT1 + (1 ? x)SampleRTT2 EstimatedRTT (3) = xSampleRTT(1 )+(1-x)[xSampleRTT2 + (1? x) SampleRTT3]

= xSampleRTT1 + (1 ? x)xSampleRTT2+ (1 ? x)2 SampleRTT3 EstimatedRTT (4) = xSampleRTT1 + (1 ? x)EstimatedRTT(3)

= xSampleRTT1 + (1 ? x)xSampleRTT2+ (1 ? x)2 xSampleRTT3 + (1 ? x)

3

SampleRTT4

WRI 研究生0601

b)

感觉应该是j-1

c)

22. 让我们看看如果TCP测量重传报文的SampleRTT会出现什么情况.假设源发送分组P1,P1的定时器超时,源接着发送P2---同一个分组的一个新的拷贝.进一步假设源测量P2的SampleRTT(重传的分组).最后假设在传输P2后很快P1的ACK到达.源将错误的把这个ACK当作P2的ACK,并计算出错误SampleRTT值.

23. SendBase:是最近未被确认的字节的序号.SendBase-1是接收方已正确按序接收到数据的最后一个字节的序号.

LastByteRcvd:从网络中到达的并且已经放入主机B接收缓存中的数据流最后一个字节的编号.

在任一给定时刻t,SendBase-1是发送方知道的已经被接收方正确的按序接收的最后一个比特的序列号.在t时刻被接收方(正确的和按序的)接收到的真正的最后一个byte要比在链路上传输的ACK要大所以 SendBase–1 ≤ LastByteRcvd 24. y:发送方接收到的最新ACK的值

在t时刻,发送方接收到的ACK的值为y,据此发送方可以确认接收方已经接收了序号到y-1的数据.如果y ≤SendBase或在线路上有其他的ACK,在t时刻接收方(正确的和按序的)接收到的真正的最后一个byte要比y-1大.

WRI 研究生0601

所以y-1 ≤ LastByteRvcd

25. 假设发送了分组n,n+1,n+2,并且分组n被接收并被确认.如果分组n+1和n+2在端到端的路径上被重新排序)也就是说,被以n+2,n+1的顺序接收),那么在收到第一个冗余ACK就重传的策略下,在接收到分组n+2时将产生一个分组n的冗余ACK,这将引起重传发生.在接收到3个冗余ACK才执行重传的策略下,只有在分组n后面的两个分组被正确接收,然而分组n+1没有被接收的情况下,重传才会发生.设计三个冗余ACK策略的设计者可能感觉等待两个分组(而不是一个)是在当需要时触发快速重传和当分组重新排序时不进行过早的重传之间权衡的结果.

26. P171 如果在图3.45b中到达速率的增加超过了R/2,那么到达队列的总到达速率将超过队列的容量,这将导致随着到达速率的增加包的丢失也随之增加.当到达速率=R/2时,每3个离开队列的分组中就有1个是重传分组.随着丢失的增加,甚至是离开队列的分组的较大分片都将是重传数据.即使是将离开队列的最大离去速率给定为R/2,并给定随到达速率的增加1/3或更多的数据将被传输.成功递交数据的吞吐量也不会超过λout.同样的原因,如果离开队列的分组中有一般的分组为重传分组,并且输出分组的最大速率是R/2,那么λout的最大值是(R/2)/2 or R/4.

27. P178 收到3个冗余ACK后,TCP将拥塞窗口减小一般,然后线性地增长。但是超时事件发生时,TCP发送方进入一个慢启动阶段,即它将拥塞窗口设置为1MSS,然后窗口长度以指数速度增长。拥塞窗口持续以指数速度增长,知道CongWin达到超时事件前窗口值地一半为止。此后,CongWin以线型速率增长,就像收到3个冗余ACK一样。 a)运行TCP慢启动的时间间隔是[1,6]和[23,26] b)运行TCP避免拥塞时的时间间隔是[1,6]和[17,22]

WRI 研究生0601

c)在第16个传输周期后,通过3个冗余ACK能够检测到一个报文段丢失。如果有一个超时,拥塞窗口尺寸将减小为1。

d) 在第22个传输周期后,因为超时能够检测到一个报文段丢失,因此拥塞窗口的尺寸被设置为1。

e) Threshold的初始值设置为32,因为在这个窗口尺寸是慢启动停止,避免拥塞开始。

f) 当检测到报文段丢失时,threshold被设置为拥塞窗口值的一半。当在第16个周期检测到丢失时,拥塞窗口的大小是42,因此在第18个传输周期时threshold值为21。

g) 当检测到报文段丢失时,threshold被设置为拥塞窗口值的一半。当在第22个周期检测到丢失时,拥塞窗口的大小是26,因此在第24个传输周期时threshold值为13。

h) 在第一个传输周期内,报文段1被传送;在第二个传输周期发送报文段2-3;在第3个传输周期发送报文段4-7,在第四个传输周期发送8-15;在第五个传输周期发送16-31;在第六个传输周期发送32-63;在第7个传输周期发送64-96。因此,报文段70在第7个传输周期内发送。

i)当丢失出现时拥塞窗口和threshold的值被设置为目前拥塞窗口长度8的一般。因此新的拥塞窗口和threshold的值为4。 28.

WRI 研究生0601

Figure 4: Lack of TCP convergence with linear increase, linear decrease 在图4(a)中,连接1和连接2因为丢包导致的线性减小的速率和他们线性增加的速率相同并相等。在这种情况下,吞吐量不会从AB间相连的线段上移开。在图4(b)中,因丢包导致的连接1和连接2线性减小的速率之比为2:1。也就是说,不论何时出现丢包时,连接1窗口减小量是连接2的两倍。我们看到最终,在经过足够多的丢包和随后的增加后,连接1的吞吐量将趋向0,全部链路带宽将被分配给连接2。

29. 如果TCP是停等协议,那么将超时间隔加倍作为拥塞控制机制已经足够。然而,TCP使用流水线(因此不是停等协议),这允许发送方有数倍的未被确认的报文段。当端到端路径高度拥塞时,将超时间隔加倍不会阻止TCP发送方在第一次发送时发送大量报文段。因此就需要一种拥塞控制机制,当出现网络拥塞的迹象时,阻止“接收来自上层应用的数据” 30. 在这个问题中,因为接收方的接收缓存能够容纳整个文件,因此不会出现接收方溢出的危险。并且,因为不会出现分组丢失和定时器超时,TCP的拥塞控制不会抑制发送方,所以不需要拥塞控制。然而,主机A的进程不会持续的向套接字发送数据,因为发送方的缓存将很快被填满。一旦发送方缓存被填充满,进程就会以平均速率R << S传送数据。所以需要TCP流量控制。

WRI 研究生0601

31. a) 丢包率L,是丢失的包数量与发送包数量的比率。在一个循环中,有1个包丢失,在这个循环中发送的包数是:

因此,丢包率为:

b) 因为W很大,3/8W2>>3/4W。所以L≈8/3 W2 or W≈(8/3L)。因

1/2

此,我们得到

平均吞吐量=3/4(8/3L)·MSS/RTT=1.22MSS/RTT(L)

32. P180考虑一条具有1500字节报文段和100ms RTT。从P180的TCP吞吐量等式,我们得到:

10 Gbps = 1.22 ×(1500×8 bits) / (0.1 sec × srqt(L)) Or sqrt(L) = 14640 bits / (109 bits) = 0.00001464 Or L = 2.14 * 10-10

33. 将在t1时刻的CongWin和Threshold值用在t2时刻的优点是TCP不需要经过慢启动的避免拥塞阶段即可直接跳到在t1时刻得到的吞吐量值。使用这些值的缺点是它们可能已经不正确了。比如,如果路径在t1到t2的时间内变得更拥塞了,发送方会将大量的窗口内的有用报文段发送到已经更加拥塞的路径上去。

1/2

1/2

WRI 研究生0601

34. P183 最小传输时延是2RTT+O/R。取得该时延的最小窗口长度W为:

35. a)K为涵盖对象的窗口的数量。(P186)

K = number of windows that cover the object = min{k : 30 + 31 + Λ + 3k ?1 ≥ O / S} =min{k:(1-3k)/(1-3) ≥ O / S} = min{k : 3k ≥ 1 + 2O / S} =[log3(1+2O/S)]

b) Q is the number of times the server would idle for an object of infinite size.

Q为当对象包含无数个报文段时服务器可能停滞的次数。 Q=max{k: RTT+S/R-S/R3k-1 ≥0}=1+[log3(1+RTT/(S/R))] c)

36.

WRI 研究生0601

设S=536字节 P=min{Q,K-1}

Q==1+[log2(1+RTT/(S/R))] K=[log2(1+2O/S)] Min latency=O/R+2RTT

Latency with slow start=2RTT+O/R+P[RTT+S/R]-(2P-1)S/R答案计算有误

latency R O/R P Min latency with slow start 28Kbps 100Kbps 1Mbps 10Mbps 37. a) T

b) T c) F

28.6s 3 30.6 32.99 WRI 研究生0601

d) F 38. a)

b)

左式中3改为2

P为实际停滞次数。 [X]+=max(x,0)

时延=2RTT+O/R+∑k=1[S/R+RTT-2S/R]

由P185页的时延等式,我们注意到只有在k≤ Q时,方括号中的值才不等于0。因此我们可以用P代替K-1,并移除[…]+ 的限制。将恒等式应用到等式中得到希望的结果。

39. P186 当服务器发送一个报文段,它接收到ACK需要等TS / R + RTT。第k个窗口的传输时间为(S / R)2k ?1.第k个窗口的停滞时间为:

K-1

k-1

+

WRI 研究生0601

可能的停滞次数Q为:

服务器停滞的实际次数P =min(Q, K ?1),时延为:

简化为:

40. The fraction of the response time that is due to slow start is(P188)

y/(x+y) where x = 2 RTT +O/R and y = P (RTT + S/R) – (2P – 1) S/R

本文来源:https://www.bwwdw.com/article/3n28.html

Top