TCP利用滑动窗口实现流量控制基本的数据单位不是数据段,而是字节
滑动窗口本质上是描述接受方(本地)的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。tcp采用滑动窗口机制来实现流量控制
发送方得发送窗口不能超过接受方给出的接受窗口的数值。当rwnd=0时,即不允许发送数据了,只到B发出的一个新窗口值为止。假设B向A发送了一个新的窗口报文段,这个报文段在传送的过程中丢失了,则A一直等待B发送非零窗口的通知,而B一直等待A发送数据,这样就会产生死锁局面。
为了解决这个问题,TCP为每个连接设有一个持续计时器,如果持续计时器到期,就发送一个探测报文段(仅携带一个字节),对方确认时就给出了现在的窗口值。
TCP规定,即使零窗口,也必须接受零窗口探测报文段,确认报文段和携带紧急数据的报文段。
滑动窗口协议是TCP使用的一种流量控制方法,发送方和接收方都有一定大小的缓冲区,该协议允许发送方在停止并等待确认前可以连续发送多个分组,此协议能够加速数据的传输。协议中规定,对于窗口内未经确认的分组需要重传。这种分组的数量最多可以等于发送窗口的大小。