计算机网络第三章

第三章课后作业

Section 3.3: R4
Section 3.4: R9, R10, R11, P8, P9, P23, P24
Section 3.5: R14, P27, P28, P32, P37
Section 3.6-3.7: P40, P48

学习任务

1)深入理解传输层在网络协议栈中的位置及主要功能。(Sec.3.1)
2)了解UDP协议。(Sec.3.3)
3)深入理解可靠数据传输协议的基本原理。可靠传输面临的问题,常用解决方法;掌握网络协议设计的辅助工具FSM(Finite State Machine)。(Sec.3.4)
4)掌握TCP可靠数据传输的实现方法。(Sec.3.5)
5)掌握TCP拥塞控制机制。(Sec.3.6, 3.7)

R4. 描述应用程序开发人员为什么可能选择在UDP上运行应用程序而不是在TCP上运行的原因

答:主要原因有以下五点:

  1. UDP关于发送什么数据以及何时发送的应用层控制更为精细。
  2. UDP无须连接建立
  3. UDP无连接状态
  4. UDP分组首部开销小
  5. 该应用不需要TCP提供的拥塞控制以及可靠数据传输

R9. 在我们的rdt协议中,为什么需要引入序号?

答:用于让接收方分辨接收到的分组是否是一次重传。

R10. 在我们的rdt协议中,为什么需要引入定时器?

答:用于在发生数据包 loss/ACK loss时,提醒发送方进行重传。

R11. 假定发送方和接收方之间的往返时延是固定的并且为发送方所知。假设分组能够丢失的话,在协议rdt3.0中,一个定时器仍是必需的吗?试解释之

答:定时器仍然是必需的,需要检测loss,提醒发送方进行重传。

P8. 画出协议rdt3.0接收方的FSM

img

P9. 当数据分组和确认分组发生篡改时,给出rdt3.0协议运行的轨迹。类似于图3-16中所用的图

img
img

P23. 考虑GBN和SR协议。假设序号空间的长度为k。那么为了避免出现图3-27中的问题,对于这两种协议中的每一种,允许的发送方窗口最大为多少?

设窗口大小为N,基序号为base,发送方等待ACK的pkt索引为base-N, ..., base-1,接收方等待接收的pkt索引为base, ..., base+N-1,所以序号空间长度的最小值等于\((base+N-1)-(base-N)+1=2N\),所以\(k \geq 2N\),发送方窗口最大为\(k/2\)

P24. 对下面的问题判断是非,并简要地证实你的回答

a. √,发送方重传接收方已经缓存的pkt时,会收到窗口之外的pkt的ACK。
b. √,发送方重传接收方已经缓存的pkt时,会收到窗口之外的pkt的ACK。
c. √,都是按序传输,按序接收,只会收到当前ACK或上一个pkt的ACK(corrupted/loss)
d. √,都是按序传输,按序接收,只会收到当前ACK或上一个pkt的ACK(corrupted/loss)

R14. 是非判断题

a. ×
b. ×
c. √
d. ×
e. √
f. ×
g. ×

P27. 主机A和B通过TCP连接进行通信,主机B已从A接收到字节126的所有字节。假设主机A然后向主机B背靠背发送两个段。第一个报文段和第二个报文段分别包含80字节和40字节的数据。在第一个报文段中,序列号为127,源端口号为302,目标端口号为80。无论何时主机B接收到来自主机A的报文段,它都会发送确认

a. \(Seq2 = 127 + 80 = 207\)
\(SourcePort = 302\)
\(DestinationPort = 80\)
b. \(ACK = Seq2 = 207\)
\(SourcePort = 80\)
\(DestinationPort = 302\)
c. \(ACK = Seq1 = 127\)
d. img

P28. 主机A和B通过100Mbps链路直接连接。两台主机之间有一个TCP连接,主机A通过此连接向主机B发送一个巨大的文件。主机A可以以高达120Mbps的速率将其应用程序数据发送到其TCP套接字,但主机B能够以最大50Mbps的速率读出其TCP接收缓冲区。描述TCP流量控制的影响

由于链路容量只有100Mbps,所以主机A的发送速率最多可以达到100Mbps,快于主机B从缓冲区中读取数据的速度。接收缓冲区以大约40Mbps的速率填充。当缓冲区满时,主机B通过设置RcvWindow=0向主机A发出停止发送数据的信号。然后主机A停止发送,直到RcvWindow>0。因此,主机A根据RcvWindow的值反复停止和开始发送。主机A向主机B发送数据的长期速率平均不超过60Mbps。

P32. 考虑TCP估计RTT的过程。假设α=0.1,令SampleRTT_1设置为最新样本RTT,令SampleRTT_2设置为下一个最新样本RTT,依此类推。

a. \(EstimatedRTT_1 = 0.1 * SampleRTT_4\)

\(EstimatedRTT_2 = 0.9 * EstimatedRTT_1 + 0.1 * SampleRTT_3\)

\(EstimatedRTT_3 = 0.9 * EstimatedRTT_2 + 0.1 * SampleRTT_2\)

\(EstimatedRTT_4 = 0.9 * EstimatedRTT_3 + 0.1 * SampleRTT_1 = 0.1 * SampleRTT_4 + 0.1 * 0.9 * SampleRTT_3 + 0.1 * 0.9^2 * SampleRTT_2 + 0.9^3 * SampleRTT_1\)
b. \(EstimatedRTT_n = 0.1 * \Sigma_{i=1}^{n-1}0.9^{i-1} * SampleRTT_i + 0.9^n * SampleRTT_n\)
c. \(n -> ∞, EstimatedRTT_∞ = 1/9 * \Sigma_{i=1}^{n}0.9^{i} * SampleRTT_i\)
过去样本的权重呈指数衰减。

P37. 比较GBN、SR和TCP(无延迟ACK)。假设所有三个协议的超时值都足够长,以便接收主机(主机B)和发送主机(主机A)可以分别接收五个连续的数据段及其相应的ACK(如果未在通道中丢失)。假设主机A向主机B发送五个数据段,第二个数据段(从A发送)丢失。最后,主机B已正确接收所有五个数据段

a.
GBN:
9个报文段:1、2、3、4、5、重传2、3、4、5
8个ACK:1、1、1、1、2、3、4、5
SR:
6个报文段:1、2、3、4、5、重传2
5个ACK:1、3、4、5、2
TCP:
6个报文段:1、2、3、4、5、重传2
5个ACK:2、2、2、2、6
b. TCP 快速重传

P40. 考虑图3.61。假设TCPReno是遇到上述行为的协议,请回答以下问题。在所有情况下,您都应该提供一个简短的讨论来证明您的答案

a. 1~6、23~26
b. 6~16、17~22
c. 3个冗余ACK,否则拥塞窗口长度会降为1
d. 超时,拥塞窗口长度降为1
e. 32,1~6阶段峰值
f. 丢包,将ssthresh的值设置为拥塞窗口值的一半,等于\(42/2=21\)
g. 同上,\(ssthresh = 28/2 = 14\)
h. 1 + 2 + 4 + 8 + 16 + 32 = 63
1 + 2 + 4 + 8 + 16 + 32 + 33 = 96
所以在第7个传输轮回内发送第70个报文段
i. 同f、g,\(ssthresh = 8/2 = 4\), \(size = 4 + 3 = 7\)
j. \(ssthresh = 42/2 = 21\), \(size = 1\)
k. 1 + 2 + 4 + 8 + 16 + 21(ssthresh值) = 52

P48. 考虑到只有一个TCP(Reno)连接使用一个10Mbps链路,该链路不缓冲任何数据。假设此链路是发送主机和接收主机之间唯一拥塞的链接。假设TCP发送方有一个巨大的文件要发送给接收方,并且接收方的接收缓冲区远大于拥塞窗口。我们还做出以下假设:每个TCP段大小为 1500字节;此连接的双向传播延迟为150毫秒;并且这个TCP连接总是处于拥塞避免阶段,即忽略慢启动

a. \(x * MSS / RTT = x * 1500 * 8/0.15=10Mbps\)解得x = 125个报文段
b. \((x/2 + x)/2 = 93.75 ≈ 94个报文段\)
\(93.75 * 1500 * 8/0.15 = 7500000bps\)
c. 丢包,\(x/2 = 62.5个报文段\),取63,\((125 - 63) * 0.15 = 9.3s\)

posted @ 2023-04-16 17:19  kirin-dev  阅读(658)  评论(0)    收藏  举报