linux滑动窗口有什么用

发布时间:2021-12-17 10:19:30 作者:iii
来源:亿速云 阅读:229

本篇内容介绍了“linux滑动窗口有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 滑动窗口

我们都知道TCP是可靠的协议,而可靠性很多时候就是来自于TCP的确认重传机制,在确认重传的基础上,就实现了滑动窗口协议,滑动窗口主要有两个作用:

1.1 滑动窗口保证可靠性

所谓窗口其实就是表示一段存放在发送缓冲区中的、可以被发送者发送的字节序列,它连续的一个范围,我们就称为窗口。而滑动则是随着数据不断的被发送,那么窗口就会在缓冲区中向前移动。 比如:

注意:若是B未在规定时间返回确认,那么A端会进行重复发送

1.2 滑动窗口进行流控

流量控制方面主要有两个要点需要掌握。一是TCP利用滑动窗口实现流量控制的机制;二是如何考虑流量控制中的传输效率。

1.2.1 流量控制

所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。主要的方式就是返回的ACK中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

这里面涉及到一种情况,如果B已经告诉A自己的缓冲区已满,于是A停止发送数据;等待一段时间后,B的缓冲区出现了富余,于是给A发送报文告诉A我的rwnd大小为400,但是这个报文不幸丢失了,于是就出现A等待B的通知||B等待A发送数据的死锁状态。为了处理这种问题,TCP引入了持续计时器(Persistence timer),当A收到对方的零窗口通知时,就启用该计时器,时间到则发送一个1字节的探测报文,对方会在此时回应自身的接收窗口大小,如果结果仍未0,则重设持续计时器,继续等待。

1.2.2 传输效率

一个显而易见的问题是:单个发送字节单个确认,和窗口有一个空余即通知发送方发送一个字节,无疑增加了网络中的许多不必要的报文,所以我们的原则是尽可能一次多发送几个字节,或者窗口空余较多的时候通知发送方一次发送多个字节。对于前者我们广泛使用Nagle算法,即:

2. 拥塞控制

计算机网络中的带宽、交换结点中的缓存、路由器等等都是网络的资源,他们所能提供的可用资源都是有限的,如果某一时间,对网络中某一资源的需求超过了它的可用部分,网络的性能就会变坏,就像堵车一样,车的数量过多超过了路段的负荷,就是出现拥堵,类比到网络,就是拥塞控制。

注意:拥塞控制是一个全局性的过程,而滑动窗口中的流量控制则是点到点通信量的控制,他们是有本质区别的。

TCP的拥塞控制由四个核心算法组成:慢开始、拥塞避免、快重传、快恢复。

2.1 慢开始和拥塞避免

发送方维持一个叫做拥塞窗口的状态变化,拥塞窗口的大小取决于网络的拥塞程度,并且动态的在变化,而发送方的发送窗口可能等于拥塞窗口,也可能因为接收方的接收缓存不够,那么发送窗口就会小于拥塞窗口。

慢开始算法的思路是说,一开始先不发送大量的数据,需要先探测一下网络的拥塞程度,由小变大的逐渐增加拥塞窗口的大小。

拥塞避免,则是在拥塞控制中还有个慢开始门限ssthresh状态变量,假设拥塞窗口大小为cwind,那么有如下几种情况:

2.2 快重传和快恢复

快重传算法,其实就是要求发送方只要一连收到3个重复确认就立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到。 快重传配合使用的就是快恢复,有以下两种情况:

从全局来讲,TCP拥塞控制其实较好的保证了数据流之间的公平性,因为一旦出现丢包,就立即减半退避,可以给其他新建的数据流留有足够的空间,从而保证整个的公平性。

3. 断线重连

顾名思义,就是网络断了以后要进行重连,在网络编程中,断线重连机制是必须要有的,那么怎么设计一个断线重连机制呢?

3.1 程序设置固定重连时间

有两种情况:

3.2 让客户设置

就是在断线后,在界面上弹出窗口让客户自己设置重连间隔,这一点在许多桌面客户端和移动app上都有体现。

3.3 监控网络状态

我们可以获得网络情况,如果是网络断开了,那么我们肯定不会去重连,但如果网络一旦好了,我们就要立马重连。

“linux滑动窗口有什么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. linux有什么用途
  2. linux cd有什么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:如何手动部署ceph

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》