1、滑动窗口协议缓存
为了解决停等操做的性能问题(发了一个分组以后一直等到确认了这个分组才发下一个),推出了流水线机制,提供资源利用率。就是容许发送方在收到对方的ACK前,发送多个分组性能
其中窗口是一个范围管理发出去还没确认的分组,随着不断传输,这个窗口不断滑动,名称的由来。窗口左端的序号收到了ACK,就能够往右滑动了。3d
滑动窗口协议有GBN、SRblog
2、滑动窗口协议的实现:GBN事件
1.分组头部包含序列号资源
2.窗口以下,大小为N,最多容许N个分组未确认class
3.ACK(n),则表示确认从开始到n(包含n)的序列号所有正确接收im
4.会空中在传的分组设置一个Timer计时器,处理超时,若是收到了timeout(n)事件,那么会重传的是n以及n之后的全部分组(尽管后面的可能已经收到了,这就是回退,回退到n开始传,GBN)协议
5.接收方会有一个指望序列号,若是收到的不是指望的分组,直接丢弃db
3、滑动窗口协议的实现:SR(选择重传)
GBN缺陷,累积确认机制致使回退到N,重复传了不少。解决这个。
1.对每一个分组分别确认,再也不只接收指望的,接到不指望的,就先缓存(设置缓存机制),接到指望的才交付上层
2.发送方只须要重传那些没收到ACK的分组了
3.产生了接收方窗口(GBN只有发送方窗口),用来缓存,如今有两窗口了
4.序列号的位数是K的话,那么得知足 接收方窗口大小N+发送方N<= 2的k次方,防止由于接收方ACK丢失致使发送重发k号分组,而此时接收方滑到了新窗口,新窗口有新的k号分组(不是原来的,共用序号产生的),致使出错