1、Chapter 3 复习题 1. 源端口号为y,目的端口号为x。 2. 应用程序开发者可能不想其应用程序使用TCP的拥塞控制,因为这会在出现拥塞时降低应用程序的传输速率。通常,IP电话和IP视频会议应用程序的设计者选择让他们的应用程序运行在UDP上,因为他们想要避免TCP的拥塞控制。还有,一些应用不需要TCP提供的可靠数据传输。 3. 是的,应用程序开发者可以将可靠数据传输放到应用层协议中完成。但是这需要相当大的工作量和进行调试。 4. a) false b) false c) true d) false e) true f) false g) false 5. a) 20
2、bytes (110-90=20bytes) b) ack number = 90 P155 第一个包丢失,发送第一个包之前的一个包的ACK 6. 3个报文段,第一个报文段,客户机到服务器,seq=43,ack=80;第二个报文段,服务器到客户机,seq=80,ack=44;第三个报文段,客户机到服务器,seq=44,ack=81。 7. R/2 P180 R/2 8. 错误,其阈值将被设置为拥塞窗口目前值的一半(乘性减)。 习题 1. A →S 源端口号:467 目的端口号:23 b) B →S源端口号:513目的端口号:23 c) S →A源端口号:23目的端
3、口号:467 d) S →B源端口号:23目的端口号:513 e) Yes. f) No. 2. 假设主机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; 5. 为了回答这个问题,首先考虑为什么我们需要序列号。我们看到发送方需要序列号以便于接收方能够区分出一个分组是不是已经接收到的分组的重复。考虑A
4、CK信息,发送方不需要这个信息(也就是一个ACK的序列号)来告诉发送方检测到一个重复的ACK.因为当他接收到原始ACK信息后它就转入下一个状态,所以一个重复的ACK信息对rdt3.0的发送方是很明显的。重复的ACK信息不是发送方需要的ACK信息,因此被red3.0发送方忽略了。 18. 为了避免图3.27出现的情况,我们要避免让接受者窗口的最前端(也就是具有最高序列号的那个)与发送窗口的最尾端(发送窗口中的具有最低序列号的那个)交迭在同一个序列号空间中.也就是说,序列号空间必须足够大到让整个接收窗口和整个发送窗口在此序列号空间中不会出现交迭.因此,我们需要测定在任何给定时刻由接收方和发送方
5、覆盖的序列号有多大.假设接收方等待的最低序列号是分组m的序列号.在这种情况下,接收方窗口是[m, m+w-1],并且它已经接收(并确认)了分组m-1和此前的w-1个分组,这里w是窗口的尺寸.如果所有这w个ACK都没有被发送方接收到,那么值为[m-w ,m-1]的ACK报文将仍被传回.如果带有这些ACK号码的ACK都没有被发送方接收,那么发送方的窗口将是[m-w, m-1].因此,发送窗口的最低边界是m-w,接收窗口的最大边界是m+w-1.为了使接收窗口的前沿和发送窗口的后沿不出现交迭,因此序列号空间必须大到能过容纳2w长度的序列号.也就是说,序列号空间长度必须至少使窗口长度的两倍k ≥ 2w.
6、 19. a)正确,假设发送方窗口大小为3,在t0时刻发送分组1,2,3.在t1(t1>t0)时刻接收方确认1,2,3.在t2(t2>t1)时刻发送方计时器超时,重发1,2,3.在t3时刻接收到重复的分组并重新确认1,2,3.在t4时刻发送方接收到接收方在t1时刻发送的ACK,并将其窗口前移到4,5,6.在t5时刻发送方接收到接收方在t2发送的ACK1,2,3.这些ACK是在当前窗口之外的报文的ACK. b) 是的,本质上同a中是一样的. c) True. d) 正确.当窗口尺寸为1时,SR,GBN,的比特交替协议在功能上相同.窗口尺寸1排除了失序分组的可能性.在这种情况下,一个累积
7、的ACK就是一个普通的ACK.因为在窗口内它只能与一个分组有关. 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 −
8、x)2 SampleRTT3 EstimatedRTT (4) = xSampleRTT1 + (1 − x)EstimatedRTT(3) = xSampleRTT1 + (1 − x)xSampleRTT2+ (1 − x)2 xSampleRTT3 + (1 − x) 3SampleRTT4 b) 感觉应该是j-1 c) 22. 让我们看看如果TCP测量重传报文的SampleRTT会出现什么情况.假设源发送分组P1,P1的定时器超时,源接着发送P2---同一个分组的一个新的拷贝.进一步假设源测量P2的SampleRTT(重传的分组).最后假设在传输P2后很快P1的ACK
9、到达.源将错误的把这个ACK当作P2的ACK,并计算出错误SampleRTT值. 23.SendBase:是最近未被确认的字节的序号.SendBase-1是接收方已正确按序接收到数据的最后一个字节的序号. LastByteRcvd:从网络中到达的并且已经放入主机B接收缓存中的数据流最后一个字节的编号. 在任一给定时刻t,SendBase-1是发送方知道的已经被接收方正确的按序接收的最后一个比特的序列号.在t时刻被接收方(正确的和按序的)接收到的真正的最后一个byte要比在链路上传输的ACK要大所以 SendBase–1 ≤ LastByteRcvd 24.y:发送方接收到的最新ACK
10、的值 在t时刻,发送方接收到的ACK的值为y,据此发送方可以确认接收方已经接收了序号到y-1的数据.如果y ≤SendBase或在线路上有其他的ACK,在t时刻接收方(正确的和按序的)接收到的真正的最后一个byte要比y-1大.所以y-1 ≤ LastByteRvcd 30. 在这个问题中,因为接收方的接收缓存能够容纳整个文件,因此不会出现接收方溢出的危险。并且,因为不会出现分组丢失和定时器超时,TCP的拥塞控制不会抑制发送方,所以不需要拥塞控制。然而,主机A的进程不会持续的向套接字发送数据,因为发送方的缓存将很快被填满。一旦发送方缓存被填充满,进程就会以平均速率R << S传送数据。
11、所以需要TCP流量控制。 31. a) 丢包率L,是丢失的包数量与发送包数量的比率。在一个循环中,有1个包丢失,在这个循环中发送的包数是: 因此,丢包率为: b) 因为W很大,3/8W2>>3/4W。所以L≈8/3 W2 or W≈(8/3L)1/2。因此,我们得到 平均吞吐量=3/4(8/3L)1/2·MSS/RTT=1.22MSS/RTT(L)1/2 35.a)K为涵盖对象的窗口的数量。(P186) K = number of windows that cover the object = min{k : 30 + 31 + Λ + 3k −1 ≥ O / S}
12、 =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. 设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答案计算有误 R O/R P Min latency latency with slow start 28Kbps 28.6s 3 30.6 32.99 100Kbps 1Mbps 10Mbps






