- 一. 多选题(共1 题,2.0分)
- 二. 判断题(共3 题,3.0分)
- 三. 填空题(共4 题,18.0分)
- 4. 一个TCP连接总是以2KB的最大段长发送TCP报文段,发送方有足够多的数据要发送。当拥塞窗口为12KB时发生了超时,如果接下来时间内TCP段的传输都是成功的,那么发送方在第一个RTT(往返时间)内的拥塞窗口为_,在第二个RTT(往返时间)内的拥塞窗口为_,第三个RTT(往返时间)内的拥塞窗口为_,第四个RTT(往返时间)内的拥塞窗口为_;当进行到第七个RTT时,发送方收到了3个对同一报文段的确认,则启用_机制,重新发送该报文段报文;同时发送方的拥塞窗口大小更改为_。
- 5. 已知主机A要向主机B发送10000B数据报文,在TCP连接建立后,A的发送窗口大小为1000B,接收到B传送的确认序号为2001后,A又向B发送了800B数据报文,且窗口字段为600;此时,A的发送窗口前沿是_,后沿是_;B收到此数据段检测无差错提交主机后,发出确认信息,确认序号为_,窗口字段为800;A收到B发送的最新确认信息后,发送窗口前沿为_,后沿为_,此时A的拥塞窗口为900字节,则A最多可以向B发送_字节。
- 6. 主机A向主机B连续发送了两个TCP报文段,其序号分别是80和120。由此我们可以知道:(1)第一个报文段携带了_字节的数据。(2)主机B收到第一个报文段后,发回的确认报文中的确认号是_,(3)如果B收到第二个报文段后,发回的确认报文中的确认号是240,则A发送的第二个报文段中的数据是 _字节。(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B,B在第二个报文端到达后向A发送确认,这个确认号应该是_ 。
- 7. 一个TCP连接下面使用300kbit/s的链路,其端到端时延为120ms。经测试,发现吞吐量只有100kbit/s。假设接收端在收完一批数据的最后才发出确认,发送端在收到确认后才发送下一个窗口的数据,则发送窗口的大小为字节?
一. 多选题(共1 题,2.0分)
1. 以下关于TCP的连接管理说法正确的是:A、客户端主动打开连接,服务器被动打开连接。
B、TCP是无连接的。
C、TCP连接释放采三报文握手完成。
D、TCP的连接采用了三报文握手的方式建立的。
E、TCP连接释放采用四报文握手完成。
- 答案:ADE
- TCP 面向连接
- TCP 连接释放是四报文挥手,这里可能是写错了。
二. 判断题(共3 题,3.0分)
1. UDP支持一对一、一对多、多对一、多对多的交互通信;每一条TCP连接也是支持一对一、一对多、多对一、多对多的交互通信。
- 答案:×
- 每一条 TCP 连接是一对一的,只有两个端点。
2. 端到端的通信是主机与主机之间的通信
- 答案:×
- 是应用程序(进程)之间的通信。
3. UDP是面向报文的,TCP是面向字节流的。
- 答案:√
三. 填空题(共4 题,18.0分)
4. 一个TCP连接总是以2KB的最大段长发送TCP报文段,发送方有足够多的数据要发送。当拥塞窗口为12KB时发生了超时,如果接下来时间内TCP段的传输都是成功的,那么发送方在第一个RTT(往返时间)内的拥塞窗口为_,在第二个RTT(往返时间)内的拥塞窗口为_,第三个RTT(往返时间)内的拥塞窗口为_,第四个RTT(往返时间)内的拥塞窗口为_;当进行到第七个RTT时,发送方收到了3个对同一报文段的确认,则启用_机制,重新发送该报文段报文;同时发送方的拥塞窗口大小更改为_。
- 答案:
- 2kb
- 初始化 cwnd = 2kb,书上初始化为 1,表示一个 MSS,而一个 MSS 就是 2kb。
- 初始化 cwnd = 2kb,书上初始化为 1,表示一个 MSS,而一个 MSS 就是 2kb。
- 4kb
- cwnd * 2
- cwnd * 2
- 6kb
- 这里的 ssthresh = 12/2,应该是由于出现了一次超时重传,所以 ssthresh = cwnd/2。
- 此时 cwnd * 2 > 6,就设置 cwnd = ssthresh
- 8kb
- 拥塞避免,cwnd + 2kb
- 拥塞避免,cwnd + 2kb
- 快重传
- 7kb
- 第七个 RTT ,收到 3 个重复 ACK,开始拥塞避免
- 2
- 4
- 6 ————— 从这里开始是拥塞避免了
- 8
- 10
- 12
- 14
- 7
- 第七个 RTT ,收到 3 个重复 ACK,开始拥塞避免
- 2kb
- 拥塞控制方法
- 发送窗口(swnd)=拥塞窗口(cwnd),cwnd 由拥塞程度决定,只要没有拥塞,cwnd 就增大,出现拥塞,cwnd 就减小。
- 拥塞的判断情况一种是超时重传 RTO,另一个是收到三个重复确认 ACK。
- 慢开始门限(ssthresh),ssthresh 的初始值自由设置,使得每次都能从慢启动开始,一般是超时减半。
- cwnd < ssthresh,使用慢开始算法
- cwnd > ssthresh,使用拥塞避免算法
- cwnd = ssthresh,上面两者都可以使用
- 慢开始算法,也就是TCP连接刚建立,一点一点地提速,试探一下网络的承受能力,以免直接扰乱了网络通道的秩序。
- 连接建好的开始先初始化 cwnd = 1,表明可以传一个 MSS(最大报文段长度,等于TCP报文段长度 - TCP首部长度,发送端的 MSS 又叫做 SMSS) 大小的数据。
每当收到一个 ACK,cwnd +1。收到一个ACK,其实就是一个轮次,其实是一个意思。- 每当过了一个 RTT(往返延迟时间,也就是一个传输轮次),cwnd * 2。
- 拥塞避免算法
收到一个 ACK,则 cwnd = cwnd + 1 / cwnd。- 每当过了一个 RTT,cwnd + 1。
- 快重传算法,由于收到 3 个重复的 ACK,为什么这里是收到 3 个重复的 ACK,其实是因为这里已经超时了,自动发送了 3 个重复的 ACK,触发快重传。
- cwnd / 2
- ssthresh = cwnd
- 进入快恢复算法,也就是直接使用拥塞避免算法。

5. 已知主机A要向主机B发送10000B数据报文,在TCP连接建立后,A的发送窗口大小为1000B,接收到B传送的确认序号为2001后,A又向B发送了800B数据报文,且窗口字段为600;此时,A的发送窗口前沿是_,后沿是_;B收到此数据段检测无差错提交主机后,发出确认信息,确认序号为_,窗口字段为800;A收到B发送的最新确认信息后,发送窗口前沿为_,后沿为_,此时A的拥塞窗口为900字节,则A最多可以向B发送_字节。
- 答案:
- 3000
- 虽然只发了 800B,但窗口还是 1000B,前沿还是 3000
- 虽然只发了 800B,但窗口还是 1000B,前沿还是 3000
- 2001
- 后沿就是确认序号
- 后沿就是确认序号
- 2801
- 3600
- B 说了自己的窗口字段是 800,说明它只能接收 800B 的数据,所以 A 就要调整自己的发送窗口为 800,此时后沿变成了确认号 2801。
- B 说了自己的窗口字段是 800,说明它只能接收 800B 的数据,所以 A 就要调整自己的发送窗口为 800,此时后沿变成了确认号 2801。
- 2801
- 800
- 受限于 B 的接收窗口
- 受限于 B 的接收窗口
- 3000
-
6. 主机A向主机B连续发送了两个TCP报文段,其序号分别是80和120。由此我们可以知道:(1)第一个报文段携带了_字节的数据。(2)主机B收到第一个报文段后,发回的确认报文中的确认号是_,(3)如果B收到第二个报文段后,发回的确认报文中的确认号是240,则A发送的第二个报文段中的数据是 _字节。(4)如果A发送的第一个报文段丢失了,但第二个报文段到达了B,B在第二个报文端到达后向A发送确认,这个确认号应该是_ 。
答案:
- 40
- 120
- 120
- 80
7. 一个TCP连接下面使用300kbit/s的链路,其端到端时延为120ms。经测试,发现吞吐量只有100kbit/s。假设接收端在收完一批数据的最后才发出确认,发送端在收到确认后才发送下一个窗口的数据,则发送窗口的大小为字节?
- 答案:4500
