面试冲刺:35---TCP的流量控制是如何实现的?

  • TCP的流量控制有两种方式:
    • 一种是基于速率流量的控制:
    • 一种是基于窗口流量的控制

一、基于速率流量的控制

  • 这种方式比较简单:它是给发送方指定某个速率,同时确保数据永远不能超过这个速率发送
  • 这种类型的流量控制最适合流应用程序,可被用于广播和组播发现

二、基于窗口流量的控制

发送窗口

  • 发送窗口主要分为4部分:
    • 已发送的并确认的
    • 已经发送的但是还未确认的
    • 即将发送的
    • 不允许发送的

面试冲刺:35---TCP的流量控制是如何实现的?

接收窗口

  • 发送窗口主要分为3部分:
    • 已接收的并确认的
    • 未接收的但是准备接收的
    • 不能接收的

面试冲刺:35---TCP的流量控制是如何实现的?

  • 基于滑动窗口的大致流程为:
    • 接收端在接收到数据之后会给发送端发送一个ACK(TCP报文),ACK的IP头部中有一个窗口大小字段(见下图的IP头部图),这个大小字段表名接收端自己可用的缓冲大小
    • 当发送端接收到接收端的ACK之后会获取IP头部中的窗口大小,从而知道接收端的数据缓冲区大小
    • 之后发送数据使就会收到这个缓冲区大小的限制

面试冲刺:35---TCP的流量控制是如何实现的?