- TCP的流量控制有两种方式:
- 一种是基于速率流量的控制
- 一种是基于滑动窗口的流量控制
一、基于速率流量的控制
- 这种方式比较简单:它是给发送方指定某个速率,同时确保数据永远不能超过这个速率发送
- 这种类型的流量控制最\适合流应用程序**,可被用于广播和组播发现
二、基于滑动窗口的流量控制
- 详情还可以参阅:
- TCP通信双方各自都有一个发送窗口和接收窗口
- 发送窗口的大小是由对方接收窗口来决定的,接收窗口用于给对方一个指示(表示自己还有多少可用的缓存空间来接收数据)
发送窗口
- 发送窗口主要分为4部分:
- 已发送的并确认的
- 已经发送的但是还未确认的
- 即将发送的
- 不允许发送的
接收窗口
- 发送窗口主要分为3部分:
- 已接收的并确认的
- 未接收的但是准备接收的
- 不能接收的
- 基于滑动窗口的流量控制大致流程为:
- 接收端在接收到数据之后会给发送端发送一个ACK(TCP报文),ACK的IP头部中有一个窗口大小字段(见下图的IP头部图),这个大小字段表明接收端自己可用的缓冲大小
- 当发送端接收到接收端的ACK之后会获取IP头部中的窗口大小,从而知道接收端的数据缓冲区大小
- 之后发送数据使就会受到这个缓冲区大小的限制