TCP拥塞控制


TCP拥塞控制

  • 虽然网络层也试图管理拥塞,但是大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率
  • 分组守恒:当有一个老的分组离开之后才允许新的分组注入网络
  • TCP希望通过动态维护窗口大小来实现这个目标

拥塞检测(Congestion detection):

  • 所有的互联网TCP算法都假定超时是由拥塞引起的,并且通过监视超时的情况来判断是否出现问题

拥塞控制(Congestion prevention):

  • 当一个连接建立的时候,双方选择一个合适的窗口大小,接收方根据自己的缓冲区大小来指定窗口的大小
  • 如果发送者遵守此窗口大小的限制,则接收端不会出现缓冲区溢出的问题,但可能由于网络内部的拥塞而发生问题
  • 如果收到一个ICMP抑制分组(ICMP source quench)并被送给TCP传输实体,则这个事件被当作超时对待


TCP拥塞原因


  • (a)接收方容量不够
  • (b)网络内部有瓶颈

互联网解决方案应该是认识到两个潜在的问题的:网络容量接收者容量,然后单独地处理这两个问题

为此,每个发送者维护两个窗口:

  • 接收者窗口:大小反映了目前窗口的容量(很容易通过接收者的缓存来确定其大小)
  • 拥塞窗口:大小反映了网络目前的容量(难于控制/确定)


慢启动算法(Slow Start)获取拥塞窗口


  1. 当连接建立的时候,发送者用当前使用的最大数据段长度初始化拥塞窗口,然后发送一个最大的数据段
  2. 如果在定时器超期之前收到确认,则将拥塞窗口翻倍,然后发送两个数据段……直至超时(或达到接收方窗口的大小)
  3. 确定出拥塞窗口的大小

例如:发送4096字节没有问题,然而发送8192字节的时候超时没有收到应答,则拥塞窗口设为4096个字节


阈值优化

除了使用接收者窗口和拥塞窗口,TCP拥塞控制还是用了第三个参数:阈值(threshold),初始化为64K

  • 当一个超时发生的时,阈值降为当前拥塞窗口的一半,同时将拥塞窗口设为一个最大数据段的长度
  • 使用慢启动算法来决定网络的容量,拥塞窗口增长到阈值后停止指数增长
  • 从这个点开始,每次成功的传输都会让拥塞窗口线性增长(即每次仅增长一个最大的数据段长度)




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值