一、问题:发送方和网络的利用率
原因:等待确认时,发送方和网络处于空闲状态
解决:发送方在等待确认期间,可继续发送多个报文段----滑动窗口机制;
二、流控和拥塞控制
1、TCP的流控
发送速率匹配,防止接收方被数据流淹没
方法:收发速率匹配---滑动窗口协议
2、TCP的拥塞控制
TCP的拥塞表现为时延增加
超时重传机制会进一步加重网络拥塞
方法:减少报文段的发送量---基于滑窗协议
三、滑动窗口(Sliding Window)
1、窗口:发送方在收到确认前,其发送缓冲区中可以发送的数据流长度
单位:报文或字节,在TCP中是以字节为单位;
2、滑动:随着确认的不断到达,窗口也不断的向后移动
窗口并不是缓冲区,窗口大小并不等于缓冲区的大小,一般缓冲区比窗口大,窗口可以
看做是缓冲区的一个子集;
注意:滑窗协议并不是只有TCP才有,它是一种传输控制机制;
四、TCP的发送窗口
1、发送窗口
发送缓冲区中可以发送的数据流的长度
应用层数据可一次1或多字节送至TCP发送缓冲区
2、发送窗口随确认过程滑动
已发未确认---等待确认或重发
可以发送---当前仍未发出,其数据将切割成适当的报文段后发送
注意:窗口只是针对发送方的,对于接收方,只要接收方缓冲区够就可以;
五、TCP的接收缓冲区
接收缓冲区
对接收的报文段进行字节流排序
上层可以一次1字节或多字节提取字节流
下层(IP层)一个、一个报文段提交给TCP
六、TCP滑动窗口----动态可变窗口
1、发送窗口大小动态可变
接收方通告当前可用接收缓冲区大小
发送方用该通告值调整发送窗口大小
优点:更加有效的传输,同时还可控制数据流量
2、极端情况:接收方通告的可用缓冲区=0
发送方停止发送
重新开始发送的条件
。收到窗口值不为0的通告
。试探性发送----预防通告丢失造成的死锁
。带外数据
七、TCP滑动窗口讨论:超时重传
1、发送端重传等待确认的数据
。依据当前发送窗口,重新切割和重传报文段
。传输往返时延可变,需动态改变超时时限
2、动态可变窗口对重传的影响:重传报文与原报文不一致
窗口值缩小,报文长度会减小,反之,会增大
3、接收复原
离散复原(流序号起重要作用)
八、TCP滑动窗口讨论:流量控制
1、发送缓冲、发送窗口、接收缓冲
2、发送方不一定要发送整个窗口大小的数据
3、窗口大小由接收方调整,实现流量控制
大窗口增加流量
小窗口减少流量
零窗口詹停发送
4、接收方可在任何时候发送确认
5、可能的问题
窗口机制不会立即起作用(网络缓冲)
无法确切知道和防止网络中间的拥塞