1,滑动窗口(Sliding window )是一种流量控制技术。
2,滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。
3,TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。
4,窗口机制
滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。
下面举一个例子(假设发送窗口尺寸为2,接收窗口尺寸为1):
分析:①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。
5,若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。
1比特滑动窗口协议:发送窗口=1,接收窗口=1;
后退n协议:发送窗口>1,接收窗口=1
选择重传协议:发送窗口>1,接收窗口>1。
(1).1比特滑动窗口协议
当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。
(2).后退n协议
由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了N 个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。
从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,后退n测协议不一定优于停止等待协议。
(3).选择重传协议
在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发 (SELECTICE REPEAT)。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。
分享到:
相关推荐
找了好久的滑动窗口的程序都不符合我的要求,看到几篇机器学习的文章都是用滑动窗口生成的样本数据,最近同学给我搞了一个,现在分享给大家,程序为matlab编写,可以直接对原始采集数据生成所需样本,已经封装成了...
1.3 实验内容 充分理解滑动窗口协议,根据滑动窗口协议,模拟滑动窗口协议中发送 端的功能,对系统发送的帧进行缓存并加入窗口等待确认,并在超时或者错 误时对部分帧进行重传。 编写停等及退回 N 滑动窗口协议函数...
TCP滑动窗口协议是传输控制协议(TCP)中一种重要的流量控制机制,它确保了数据在两个通信端点之间的可靠传输。本动画演示了滑动窗口协议的工作原理,通过Flash技术,用户可以调整参数,直观地理解其动态过程。下面...
滑动窗口协议仿真 滑动窗口协议仿真是一种常见的计算机网络课程设计,旨在加深对计算机网络基本原理的认识,初步掌握计算机网络协议和体系结构的实现,以及利用协议开发应用系统的方法,提高进行工程设计和系统分析...
滑动窗口协议是计算机网络中数据链路层和传输层常用的一种流量控制机制,它在确保数据正确传输的同时,还能有效利用网络带宽。在这个“datalink_BUPT_计网大作业_滑动窗口协议_”的压缩包中,我们可以看到一个名为...
"li-timeWindows_滑动窗口分割数据_"这个标题所指的知识点,主要涉及到如何处理时间序列数据,特别是当数据序列较长时,如何将其适配到神经网络的输入要求。滑动窗口是一种常用的数据分割技术,它能将连续的时间序列...
### 滑动窗口算法在C#中的实现 #### 算法原理及应用场景 滑动窗口算法是一种常用于数据处理、数据压缩等场景的有效算法。该算法的主要目的是通过不断移动一个固定大小或动态调整大小的窗口来检测、处理序列中的...
### 滑动窗口协议实验报告 #### 实验目的 本次实验主要针对计算机网络中的滑动窗口协议进行了深入的研究与实践。数据链路层作为计算机网络的重要组成部分,其任务是确保在网络存在差错的情况下实现数据的可靠传输...
**滑动窗口协议详解** 滑动窗口协议是数据链路层的一种重要协议,它用于解决在有噪声的信道环境中实现无差错传输,并高效利用信道带宽的问题。本实验报告聚焦于北邮计算机网络课程中的一次滑动窗口实验,其中采用了...
滑动窗口协议是一种在数据链路层用于流量控制的有效机制,尤其在存在错误纠正和带宽限制的网络环境中。在TCP(传输控制协议)中,滑动窗口协议被用来管理和控制两个通信端点之间的数据传输速率,以防止一方的数据...
在这个"使用QT制作的主界面滑动窗口"项目中,开发者创建了一个类似于手机上滑动窗口的主界面模型,适用于桌面应用程序,提供了更现代和用户友好的用户体验。 首先,让我们了解一下QT5中的关键组件和技术,这对于...
"UDP可靠性传输(使用滑动窗口机制实现)"这一标题指出我们将讨论如何在使用用户数据报协议(UDP)时实现可靠的数据传输。通常,UDP是一种无连接的、不可靠的传输层协议,它不保证数据包的顺序、不丢失或重复。然而...
**JS滑动窗口(SlipWin)** JS滑动窗口,也称为滑动模态或滑出窗体,是一种常见的前端交互设计元素,常用于展示详细信息、提示消息或者进行用户操作。在JavaScript中,实现滑动窗口主要是通过动态改变HTML元素的样式...
滑动窗口是一种在网络通信中实现高效、可靠传输的机制,主要应用于数据链路层和传输层的协议中,如TCP(传输控制协议)等。它允许发送方在等待确认信息的同时,可以连续发送多个数据分组,从而提高了信道的利用率,...
滑动窗口协议是一种在数据链路层用于实现可靠通信的机制,它允许发送方在一个预设的窗口内连续发送数据,而无需等待每个数据包的确认。这种协议旨在实现无差错传输,同时最大化信道利用率,从而有效地利用传输信道的...
### 数据链路层滑动窗口协议的设计与实现 #### 实验背景与目标 本实验旨在通过实际编程操作,深入理解并掌握数据链路层滑动窗口协议的基本原理及其在复杂网络环境中的应用。具体而言,实验的目标是设计并实现一个...
对于计算机网络中滑动窗口协议的仿真实现。
自己编的程序,利用所学数据链路层原理,自己设计一个滑动窗口协议并在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270 毫秒,信道误码率为10-5,...