TCP的滑动窗口

目录

一、基本概念:

二、TCP使用滑动窗口做流量控制与乱序重排的目的

三、滑动窗口数据的计算:

四、滑动窗口的基本原理


一、基本概念:

1.RTT和RTO:

RTT:(Round Trip Time)发送一个数据包收到对应的ACK,所花费的时间

RTO:(Retransmission TimeOut)重传时间间隔

 

二、TCP使用滑动窗口做流量控制与乱序重排的目的

1保证TCP的可靠性

2保证TCP的流控特性

->TCP报文头中的Window即指滑动窗口

 

三、滑动窗口数据的计算:

以下均为从左到右序号逐渐递增

发送端:
LastByteAcked:已经发送并且收到回复的最后一个序号位置
LastByteSent:已经发送但还没有时候到回复的最后一个序号位置
LastByteWritter:已经准备好的但还没发送的最后一个序号位置

接收端:
LastByteRead:收到并已经回复的最后一个位置
NextByteExcepted:收到的连续最大的sequence的位置(已经收到但还没有发送回复ACK)
LastByteRcvd:已收到的最后一个字节的位置

计算:
AdvertisedWindow = MaxRcvBuffer - (LastByteRcvd - LastByteRead)
EffectiveWindow = AdvertisedWindow - (LastByteSendt - LastByteAcked)

其中:AdvertisedWindow(接收方还可以处理的量)、MaxRcvBuffer(接收方能接收的最大数据量)、
EffectiveWindow(窗口内剩余可发送数据大小)

 

四、滑动窗口的基本原理

1.TCP发送方:

 

包含四个状态发送并收到回复、发送还没收到回复、还没发送但是可发送、还没发送并且不可发送

(1)假设起始状态:[32~45][46~51]共同构成了滑动窗口,其中前一部分是已发送的还没收到确认的,后一部分是可发送还没发的。

(2)假设发送的片段[32~36],发送端收到接收端的ACK回复,那么滑动窗口即可向右移动5个字节
(3)此时可以将[46~51]发送出去,并且[52~56]由不可发送变为可发送,整个滑动窗口向右移动了5个字节的位置

2.TCP接收方:

包含三个状态收到并且已回复、还没收到并且允许发送、还没收到也不允许发送

注:

1. 由于ACK直接由TCP栈回复,默认没有应用延迟,不存在已接收但未回复的状态

2.未接收但是可以接收的这段空间称为接收窗口

3。应用会根据自身处理能力的变化,通过本端TCP接收窗口大小的控制来实现对端的发送窗口进行流量限制

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMUHERO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值