网络 滑动窗口机制

滑动窗口机制

滑动窗口是一种流量控制技术,滑动窗口概念不仅存在于数据链路层,也存在于传输层,两者有不同的协议,但是基本原理是很相近的。其中一个重要的区别是,一个是针对帧的传送,一个是字节数据的传送。

在TCP的滑动窗口协议中,滑动窗口以字节为单位,主要功能是进行数据流量管理,平衡两端之间的数据吞吐量,解决丢包问题。其基本原理是在任意时刻,发送方都维持了一个连续的允许发送的字节序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的字节序号,称为接收窗口。

一个窗口的大小是由一个后沿序号和一个前沿序号来控制的。发送窗口的大小是由接收窗口的大小来决定的,窗口大小不能大于接收方的接收缓冲区中剩余空间的大小,避免发送大量数据而缓冲区满后导致的丢包问题。

发送窗口:表示一次从后沿到前沿最多发送多少数据;后沿表示所要发送数据的起始序号,当收到接收方的数据确认的回复,后沿就会向前移动。前沿是根据接收方窗口大小计算的结束序号,前沿等于接收方的窗口大小加上后沿序号

接收窗口:表示从哪里开始接收数据,接收到多少字节序号为止,可以进行包序管理,对应的包就应该放到缓冲区对应的位置;后沿表示接收数据的起始序号,当收到数据时后沿就会向前移动。前沿是根据缓冲区剩余空间大小计算得到的接收数据的结束序号,缓冲区剩余空间的大小会改变前沿序号

滑动窗口实现面向流的可靠性
发送窗口只有收到对端对于本段发送窗口内字节的ACK确认,才会移动发送窗口的后沿。而接收窗口只有在前面所有的段都确认的情况下才会移动后沿。当前面还有字节未接收但收到后面字节的情况下,窗口不会移动,并不对后序字节确认。超时后发送端会对这些数据进行重传

图解
MMS:表示tcp数据通信时一条数据的最大大小,通信时双方进行协商,取双方MMS中较小的一方作为最大数据段大小。

1、在三次握手时接收方会告诉发送方窗口大小和mms。
在这里插入图片描述
2、发送方发送数据,接收方接收数据后接收方的后沿向前移动
在这里插入图片描述
3、发送方得到确认后将之前的数据丢掉,发送方的后沿向前移动,此时的前沿不变,并回复确认序号给发送方,告知发送方窗口大小
在这里插入图片描述
4、发送方发送数据,接收方接收数据后接收方的后沿向前移动
在这里插入图片描述

5、接收方取出缓冲区的数据之后,剩余空间变大,前沿向前移动,窗口变大,并回复给确认序号给发送方,告知发送方窗口大小
在这里插入图片描述
6、发送方得到确认后将之前的数据丢掉,发送方的后沿向前移动。得知接收方的窗口大小变大之后,前沿就会向前移动,始终保持前沿等于后沿加上窗口大小
在这里插入图片描述

滑动窗口机制允许发送端根据窗口大小以及mss连续发送多条数据,发送方根据不同场景有不同协议的处理
停等协议:发送完一条数据就停止发送,等待对方的确认,在收到确认才发送下一条数据;场景:网络状态极差
回退n步协议:一条数据丢了,则需要发送端将丢失这条数据以后的数据都进行重传;场景:网络状态较差
选择重传协议:一条数据丢了,则仅仅针对丢失的这条数据进行重传;场景:网络状态较好

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WhiteShirtI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值