Skip to content

Lec 11 TCP

思考题

  • 可靠传输是什么?什么是“可靠传输协议”?

  • 网络可能存在哪些不可靠因素?(即可能出现哪些问题)

  • 可靠传输的基础知识:

    • 序列号的作用是什么?它们如何工作?

    • 确认(ACK)的作用是什么?它们如何工作?

    • TCP发送方如何利用超时推断数据包丢失?

    • TCP接收方如何决定是否将数据包传递给接收应用?

  • 拥塞控制:基础知识

    • 拥塞控制的目的是什么?

    • 拥塞控制的目标是什么?

    • “窗口”是什么意思?

    • TCP的拥塞控制是AIMD(加性增加乘性减少)

      • 这意味着什么?发送方如何对拥塞做出反应?
      • AIMD背后的直觉是什么?(例如:为什么不选择乘性增加乘性减少?或者加性增加加性减少等)
  • 拥塞控制:额外机制

    • 慢启动如何工作,为什么使用它?

    • 快速重传/快速恢复如何工作,为什么使用它?

  • TCP有个

今天的目标是建立可靠传输协议,意味着传输数据的每个字节只会被接受的应用接受一次,且是有序。

image-20250312150001400

  • 序列号: 用来对数据包进行排序
  • 确认号(ACKs): 用来确认一个数据包已经被接受
    • 确认好 k 预示着k之前(包括第k个)包都已经被接受者接受

image-20250312150021565

下面发生了有趣的情况,发送端发送6-10号的数据包,但是接收到除了7号数据包外,其他均接收到了,此时,ACK应该是多少 ?

image-20250312152900702

7号数据包需要通过某种方式重新再次发送。需要注意的是,发送方也可以通过接收到多个序列号为6的确认(ACK),但没有收到序列号大于7的ACK,来推断出数据包的丢失。我们稍后会进一步讨论这一点。

  • 超时时间: 用来重新发送数据包。
    • 如果比RTT还要小,那发送方错误地重传导致浪费
    • 准确评估超时时间很重要

image-20250312153419052

  • 滑动窗口:用来流量、拥塞控制