TCP流量控制

TCP流量控制

为什么要TCP流量控制?

TCP流量控制不是为了减少网络压力,那是TCP拥塞控制的作用。

下面简单介绍一下TCP流量控制的目的:
作用对象:相互连接着的两个终端(发送端接收端)。
解决问题:解决发送端与接收方吞吐量不匹配的问题,比如当一个发送端A每秒发10个数据包,而接收端B每秒只能接受1个数据包,那么就会出现丢包的情况,所以发送端与接收端要的吞吐量要匹配。
目的:让发送端根据接收端的接收能力动态的调整发送速率

如何进行TCP流量控制?

这里写图片描述

首先介绍TCP流量控制需要的几个变量:

  1. LastByteSent :最后发送的数据包的序号,由发送端进行维护
  2. LastByteACK:最后收到的ACK包确认的数据包序号,由发送端进行维护
  3. rwnd:由发送方进行维护,表示接收方还有多少空余空间,由接收方发回(与ACK一起?待查)
  4. LastByteRead:由接收方维护,表示应用程序最后从缓存里面读取的数据包的序号
  5. RcvBuffer:接收方缓存的最大值

如果要:要保证不因为溢出而丢包,即保证接收方缓存足以接收即将收到的数据。
即:

LastByteRcvLastByteReadRcvBuffer

又:
rwnd=RcvBuffer[LastByteRcvLastByteRead]

联立可得,要达成TCP流量控制,满足下式:
LastByteSentLastByteACKrwnd

具体是如何进行的?

最简单的思路:rwnd=0时咱们不发送了,但这样会存在一个问题,就是如果之后没有ACK,那么连接就相当于断开了。
所以真正的解决方案是:当rwnd=0时,发送端发送只有一个字节的数据的报文段。

如何恢复?

等下一次ACK到来可能rwnd就变大了,到时候就可以发送更多的数据了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值