滑动窗口与拥塞控制

滑动窗口:用作流量控制:
1.发送端和接收端各维护一个独立的发送缓冲区和接收缓冲区
2.窗口是一段允许被发送的字节序列
3.接收端会根据接收端缓冲区告诉发送端自己的接收窗口大小,它不像发送端,当发出一个数据段超时,就可以认为网络已经拥塞了
4.发送端会根据这个窗口大小发送数据
5.接收端收到数据后会回复确认ACK,此ACK有可能累积,收到多个报文端回复一个ACK
6.发送端收到确认号,发送窗口向前移动,并关闭重传定时器,将数据备份从队列中删除,否则要重传数据


拥塞控制:流量控制只考虑发送端和接收自身的状况,而拥塞控制则是基于整个网络来考虑的,如果网络中所有的超时都重传则会导致更大的丢包
cwnd(拥塞窗口):发送方为一个动态变化的窗口取名拥塞窗口,大小取决于网络的拥塞程度.发送方一般让自己的发送窗口等于拥塞窗口.网络好的时候,它会不断变大
ssthresh(慢速启动阈值):由发送方保存这样一个变量,当拥塞窗口中的字节达到这个阈值时,拥塞控制算法需调整,在大多数实现中,ssthresh值是65536个字节

拥塞控制算法:
例:初始cwnd等于1,ssthresh等于20,网络拥塞等于28
1.拥塞避免:1,2,3,4,5,6...28

2.慢启动(AMID:加法增大,乘法减小):
a.1,2,4,8,16,20(cwnd翻倍时不能超过ssthresh)...28(出现拥塞,将ssthresh设置为cwnd的一半14,cwnd设置1,然后重复此过程)//乘法减小*1/2
b.1,2,4,8,14,(cwnd(14)等于sthresh(14),停用慢启动,采用拥塞避免算法),15,16,17,...27//加法增大,+1

3.快重传:接收方收到一个失序的报文段后就立刻发出重复确认,而不是等待自己发送数据时才进行捎带确认
a.1,2,4,8,16,20,21...28
b.发送方发送...27,28时,收到...25,26,27的ack,但没有收到28的ack
c.接收方是会确认...27的ack,但不会确认28的ack,这样会不断回复28的ack
d.发送方在连接收到三个28的ack时,则不必等重传计时器超时,直接进行重传未确认的28

4.快恢复
a.1,2,4,8,16,20...28
b.发送方在连接收到三个28的ack时,将(ssthresh减半设置为14,cwnd设置为ssthresh的一半7)
c.7,8...28

无论是慢启动,还是快恢复在出现网络拥塞时,都会快速下降ssthresh和cwnd,以减小注入到网络中的分组数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值