TCP中的流量控制和拥塞控制不同,它只解决端到端之间的问题。
往往是要通过降低发送端发送数据的速率,以便接收端能够处理,而不造成拥塞。
在TCP的首部,有一个标识窗口大小的16位字段,这个字段越大,说明滑动窗口(缓冲区越大),网络的吞吐量也就越大。接收端在收到ACK请求之后,也会把自己的窗口大小填进去,回应发送端,两端取一个最小的窗口尺寸进行数据发送。如果,接收端这边网络拥堵,状况不佳,那么这个窗口就可以动态的减小。如果网络特别通常,也可动态增加。
16位的窗口最大,2^16-1 = 65535字节 约64K。
当然在TCP首部控制位中还有一个CWR,它可以收缩窗口。
总结以下,两个字段,一个是 窗口大小,另一个是CWR(congestion window reduced 拥塞窗口减少)
窗口大小 = min(发送端窗口大小,接收端窗口大小)