一. 多选题(共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。
    • 4kb
      • cwnd * 2
    • 6kb
      • 这里的 ssthresh = 12/2,应该是由于出现了一次超时重传,所以 ssthresh = cwnd/2。
      • 此时 cwnd * 2 > 6,就设置 cwnd = ssthresh
    • 8kb
      • 拥塞避免,cwnd + 2kb
    • 快重传
    • 7kb
      • 第七个 RTT ,收到 3 个重复 ACK,开始拥塞避免
        • 2
        • 4
        • 6 ————— 从这里开始是拥塞避免了
        • 8
        • 10
        • 12
        • 14
        • 7
  • 拥塞控制方法
    • 发送窗口(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
      • 进入快恢复算法,也就是直接使用拥塞避免算法。
    • 图片.png

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
    • 2001
      • 后沿就是确认序号
    • 2801
    • 3600
      • B 说了自己的窗口字段是 800,说明它只能接收 800B 的数据,所以 A 就要调整自己的发送窗口为 800,此时后沿变成了确认号 2801。
    • 2801
    • 800
      • 受限于 B 的接收窗口
  • 图片.png

    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

语雀内容