滑动窗口

合集下载

滑动窗口算法原理

滑动窗口算法原理

滑动窗口算法原理滑动窗口算法(Sliding Window Algorithm)是一种用于解决字符串(或数组)问题的算法。

它通过使用一个固定长度的窗口,在字符串上滑动并保持窗口的大小不变,来寻找满足特定条件的子串(或子数组)。

滑动窗口算法的基本思想是通过两个指针,一个左指针和一个右指针,在给定字符串上移动这两个指针以定位子串。

右指针用于扩展窗口,而左指针用于收缩窗口。

通过不断的移动左右指针,可以在字符串上依次扫描每个可能的子串。

1. 找到满足特定条件的最小子串(Minimum Window Substring)。

2. 找到满足特定条件的最长子串(Longest Substring Without Repeating Characters)。

3. 找到满足特定条件的数组中的最长子数组(Maximum SumSubarray of Size K)。

下面详细解释滑动窗口算法的原理和步骤:1. 定义两个指针,即左指针(left)和右指针(right)。

初始时,左指针指向子串的起始位置,右指针指向子串的结束位置。

2.向右移动右指针,扩展窗口,直到满足特定条件为止。

在扩展窗口的过程中,可以更新一些数据结构来保存所需的信息,比如字符频率的哈希表。

3.当窗口满足特定条件时,开始收缩窗口,即向右移动左指针。

同时,更新所需的信息。

4.在收缩窗口的过程中,不断更新最优解。

如果当前窗口满足最优条件,可以更新最优解。

5.重复步骤2到步骤4,直到右指针到达字符串的末尾。

举个例子来说明滑动窗口算法的应用:问题:给定一个字符串s和一个目标字符串t,在字符串s中找到包含t所有字符的最短子串。

示例输入:s="ADOBECODEBANC",t="ABC"示例输出:"BANC"首先,我们可以使用一个哈希表来记录目标字符串t中每个字符的频率。

然后使用两个指针left和right来定义一个窗口,初始时left和right都指向字符串s的第一个位置。

什么是滑动窗口滑动窗口的机制

什么是滑动窗口滑动窗口的机制

什么是滑动窗⼝滑动窗⼝的机制 滑动窗⼝概念不仅存在于数据链路层,也存在于传输层,两者有不同的协议,但基本原理是相近的。

那么你对滑动窗⼝了解多少呢?以下是由店铺整理关于什么是滑动窗⼝的内容,希望⼤家喜欢! 滑动窗⼝的概念 滑动窗⼝(Sliding window)是⼀种流量控制技术。

早期的⽹络通信中,通信双⽅不会考虑⽹络的拥挤情况直接发送数据。

由于⼤家不知道⽹络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗⼝机制来解决此问题。

参见滑动窗⼝如何根据⽹络拥塞发送数据仿真视频。

图⽚是⼀个滑动窗⼝的实例: 滑动窗⼝协议是⽤来改善吞吐量的⼀种技术,即容许发送⽅在接收任何应答之前传送附加的包。

接收⽅告诉发送⽅在某⼀时刻能送多少包(称窗⼝尺⼨)。

TCP中采⽤滑动窗⼝来进⾏传输控制,滑动窗⼝的⼤⼩意味着接收⽅还有多⼤的缓冲区可以⽤于接收数据。

发送⽅可以通过滑动窗⼝的⼤⼩来确定应该发送多少字节的数据。

当滑动窗⼝为0时,发送⽅⼀般不能再发送数据报,但有两种情况除外,⼀种情况是可以发送紧急数据,例如,允许⽤户终⽌在远端机上的运⾏进程。

另⼀种情况是发送⽅可以发送⼀个1字节的数据报来通知接收⽅重新声明它希望接收的下⼀字节及发送⽅的滑动窗⼝⼤⼩。

滑动窗⼝的机制 滑动窗⼝协议的基本原理就是在任意时刻,发送⽅都维持了⼀个连续的允许发送的帧的序号,称为发送窗⼝;同时,接收⽅也维持了⼀个连续的允许接收的帧的序号,称为接收窗⼝。

发送窗⼝和接收窗⼝的序号的上下界不⼀定要⼀样,甚⾄⼤⼩也可以不同。

不同的滑动窗⼝协议窗⼝⼤⼩⼀般不同。

发送⽅窗⼝内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

下⾯举例说明,假设发送窗⼝尺⼨为2,接收窗⼝尺⼨为1: 分析:①初始态,发送⽅没有帧发出,发送窗⼝前后沿相重合。

接收⽅0号窗⼝打开,等待接收0号帧;②发送⽅打开0号窗⼝,表⽰已发出0帧但尚确认返回信息。

tcp滑动窗口机制原理

tcp滑动窗口机制原理

tcp滑动窗口机制原理TCP滑动窗口机制原理。

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用层提供可靠的数据传输服务。

在TCP协议中,滑动窗口机制是一种重要的流量控制机制,它能够有效地提高网络传输的效率和可靠性。

滑动窗口机制是指发送方和接收方通过动态调整窗口大小来控制数据流量的一种机制。

在TCP连接中,发送方和接收方各自维护一个窗口,用来控制数据的发送和接收。

发送方的窗口大小取决于接收方的窗口大小和网络的拥塞情况,发送方只能发送窗口范围内的数据,而接收方则根据自身处理能力和缓存大小确定窗口大小,控制发送方的发送速度。

滑动窗口机制的原理如下,当发送方发送数据时,如果接收方的窗口大小为0,发送方将停止发送数据;当接收方准备好接收数据时,它会通知发送方它的窗口大小,发送方会根据接收方的窗口大小和网络状况来确定发送数据的大小和速度。

如果网络拥塞,接收方的窗口大小会减小,发送方需要相应地调整发送速度;如果网络畅通,接收方的窗口大小会增大,发送方也会相应地提高发送速度。

这样,通过动态调整窗口大小,滑动窗口机制能够实现网络传输的流量控制,提高网络的利用率和可靠性。

滑动窗口机制的优点在于它能够根据网络状况动态调整数据的发送速度,避免了网络拥塞和数据丢失的问题。

同时,滑动窗口机制还能够充分利用网络带宽,提高网络传输的效率。

另外,滑动窗口机制还能够保证数据的有序传输,确保数据的完整性和可靠性。

总之,TCP滑动窗口机制是一种重要的流量控制机制,它能够有效地提高网络传输的效率和可靠性。

通过动态调整窗口大小,滑动窗口机制能够根据网络状况实现流量控制,避免网络拥塞和数据丢失的问题。

因此,了解和掌握滑动窗口机制的原理对于理解TCP协议和网络通信具有重要意义。

滑动窗口协议

滑动窗口协议

滑动窗口协议引言在计算机网络中,滑动窗口协议是一种常用的数据传输协议,用于确保可靠的数据传输。

本文将介绍滑动窗口协议的基本概念、工作原理以及应用场景等内容。

滑动窗口协议的基本概念滑动窗口协议是一种基于窗口的流量控制协议。

在数据传输过程中,发送方和接收方都维护着一个固定大小的窗口,用于管理待发送的数据和已接收的数据。

滑动窗口协议的工作原理滑动窗口协议的工作原理可以简单地描述为以下几个步骤: 1. 发送方将待发送的数据分割成若干个数据包,并按顺序发送。

2. 接收方接收数据包,并发送确认信息给发送方。

3. 发送方收到确认信息后,将窗口向前滑动一个单位,继续发送下一个数据包。

4. 如果接收方未收到某个数据包,或者数据包有错误,将请求发送方重新发送该数据包。

滑动窗口协议的优势相比于其他传输协议,滑动窗口协议具有以下优势: 1. 可靠性:滑动窗口协议通过确认机制和重传机制,能够确保数据的可靠传输。

2. 流量控制:通过窗口大小的控制,滑动窗口协议可以有效控制数据传输的速率,避免数据的丢失和网络拥塞。

3. 高效性:滑动窗口协议支持并行发送多个数据包,提高了数据传输的效率。

滑动窗口协议的应用场景滑动窗口协议广泛应用于各种数据传输场景,包括但不限于: 1. 文件传输:在文件传输过程中,滑动窗口协议可以确保文件的完整性和正确性。

2. 视频流传输:通过滑动窗口协议,可以实现对视频流的实时传输和播放。

3. 数据库同步:在数据库同步过程中,滑动窗口协议可以确保数据的一致性和可靠性。

总结滑动窗口协议是一种常用的数据传输协议,通过窗口管理机制,实现了数据的可靠传输和流量控制。

它具有可靠性、高效性和流量控制等优势,并在文件传输、视频流传输和数据库同步等场景中得到广泛应用。

熟悉滑动窗口协议的工作原理和应用场景,对于网络通信的设计和优化具有重要意义。

滑动窗口协议的名词解释

滑动窗口协议的名词解释

滑动窗口协议的名词解释在计算机网络领域中,滑动窗口协议是一种用于数据传输的通信协议。

它利用了滑动窗口机制,以实现可靠的数据传输和流量控制。

滑动窗口协议的设计理念是基于发送方与接收方之间的通信通道。

一、滑动窗口机制滑动窗口机制是滑动窗口协议的核心概念之一。

它是一种流量控制技术,通过动态调整发送方与接收方之间的传输窗口大小来控制数据传输速率。

发送方和接收方各自维护一个窗口,窗口的大小取决于网络条件和协议设计。

二、发送方窗口发送方窗口是指发送方维护的一个缓冲区,用于存储待发送的数据包。

窗口的大小可以根据网络状况和接收方的接收能力进行动态调整。

发送方每发送一个数据包,窗口向后滑动一格。

如果接收方确认接收到数据包,发送方将滑动窗口继续向后滑动,发送下一个数据包。

三、接收方窗口接收方窗口是指接收方维护的一个缓冲区,用于按序接收发送方发送的数据包。

接收方窗口的大小也可以根据网络状况和接收方的处理能力进行动态调整。

接收方通过发送确认消息告知发送方已接收到哪些数据包,以便发送方进行相应的调整。

四、滑动窗口协议的工作原理滑动窗口协议的工作原理基于两个核心概念:流量控制和可靠传输。

发送方和接收方通过协商和动态调整窗口大小,以实现合理的数据传输速率,并保证数据的可靠性。

1. 流量控制滑动窗口协议通过发送方和接收方之间窗口的大小动态调整,以控制数据传输速率。

发送方根据接收方窗口大小和网络状况来发送数据包,确保不会过载接收方。

一旦接收方窗口满了,发送方将停止发送,直到接收方发送确认消息,表示有更多可接收的空间。

这种流量控制机制可以有效避免网络拥塞和数据丢失。

2. 可靠传输滑动窗口协议通过确认机制和超时重传来实现数据的可靠传输。

发送方在发送数据包后,等待接收方的确认消息。

如果发送方在规定时间内没有收到确认消息,就会认为数据包丢失,将重传该数据包。

接收方在接收到数据包后,发送确认消息给发送方,以表示已经接收到该数据包。

如果接收方在规定时间内未发送确认消息,发送方会重新发送该数据包。

TCP协议中的滑动窗口与拥塞窗口:区别与联系(四)

TCP协议中的滑动窗口与拥塞窗口:区别与联系(四)

TCP协议中的滑动窗口与拥塞窗口:区别与联系引言:在计算机网络中,TCP协议是最常用的传输层协议之一。

而在TCP 协议中,滑动窗口和拥塞窗口是两个重要的概念。

它们分别涉及到网络通信的效率和流量控制问题。

本文将深入探讨滑动窗口和拥塞窗口的区别与联系。

一、滑动窗口滑动窗口是TCP协议中用于实现流量控制和确认机制的一种机制。

通过滑动窗口,发送方和接收方可以有效地处理网络拥塞及数据传输的不确定性。

滑动窗口的原理在TCP协议中,滑动窗口是发送方和接收方之间的一种协调机制。

发送方通过滑动窗口来确定可以发送的数据量,而接收方通过滑动窗口来告知发送方可以接收的数据量。

滑动窗口的大小会随着网络环境和双方处理能力的变化而调整,从而实现流量的控制。

滑动窗口的功能滑动窗口具有以下功能:- 确认机制:接收方通过滑动窗口来告知发送方已经收到的数据,从而确认传输完成。

- 流量控制:发送方通过滑动窗口来设置可以发送的数据量,避免过多数据拥塞网络。

- 重传机制:发送方通过滑动窗口来检测和重传丢失的数据包,保证数据的可靠传输。

二、拥塞窗口拥塞窗口是TCP协议中用于控制网络拥塞程度的一种机制。

通过拥塞窗口,TCP协议可以根据网络拥塞情况来调整数据传输的速率,从而避免网络拥塞。

拥塞窗口的原理拥塞窗口通过动态调整发送方可以发送数据的速率,以避免网络拥塞。

当网络发生拥塞时,拥塞窗口会缩小,降低发送速率;当网络恢复正常时,拥塞窗口会逐渐增大,提高发送速率。

拥塞窗口的功能拥塞窗口具有以下功能:- 控制发送速率:拥塞窗口通过调整发送速率来避免网络拥塞,保证数据能够正常传输。

- 动态适应网络:拥塞窗口能够根据网络拥塞程度的变化,灵活调整发送速率,以适应不同的网络环境和负载。

三、滑动窗口与拥塞窗口的区别尽管滑动窗口和拥塞窗口在TCP协议中都扮演着重要的角色,它们之间存在一些区别。

功能不同滑动窗口主要用于确认机制和流量控制,而拥塞窗口则专注于控制发送速率,避免网络拥塞。

滑动窗口的工作原理

滑动窗口的工作原理

滑动窗口的工作原理
滑动窗口是一种常用的算法技巧,用于在数组或字符串上的连续子序列或子字符串中进行操作或查找。

其工作原理是通过使用两个指针来维护一个窗口,窗口的大小可以根据具体问题的要求进行调整。

具体来说,滑动窗口的工作原理如下:
1. 初始化左右指针:首先,将左指针和右指针都初始化为数组或字符串的起始位置。

2. 移动右指针:将右指针向右移动,以扩展窗口,直到满足特定的条件。

3. 更新结果:在每次移动右指针后,根据问题的要求更新结果。

4. 移动左指针:如果满足特定条件,那么将左指针向右移动,以缩小窗口。

在移动左指针后,需要根据问题的要求更新结果。

5. 重复操作:重复步骤2至步骤4,直到右指针到达数组或字
符串的末尾。

通过不断地移动窗口的左右指针,滑动窗口算法可以在固定时间内解决很多有关连续子序列或子字符串的问题。

例如,可以使用滑动窗口来解决最小覆盖子串、最长无重复字符子串、找到字符串中所有字母异位词等问题。

需要注意的是,在不同的问题场景下,窗口的大小可能需要根据具体情况来调整。

有时候,窗口的大小是固定的;有时候,窗口的大小是可变的,可以根据问题要求进行调整。

总之,滑动窗口通过移动左右指针来维护一个窗口,在连续子序列或子字符串上进行操作或查找。

它是一种高效的解决问题的算法技巧。

滑动窗口技术名词解释

滑动窗口技术名词解释

滑动窗口技术名词解释滑动窗口技术,听上去好像是个高大上的东西,但其实就像是在日常生活中找东西那么简单。

想象一下,你在大街上走,突然发现路边有个小摊,卖着香喷喷的烤串。

你想吃,却又不想停下脚步,怎么办?这时候,你就可以用“滑动窗口”的思路。

就像把眼睛“滑动”过去,快速抓住想要的东西。

这个技术的核心就是在一个固定大小的窗口内,灵活地移动,通过不断地更新数据,找到你真正需要的信息。

无论是在处理数据流,还是分析数组,滑动窗口总能帮你迅速抓住重点,避免了无谓的浪费。

举个简单的例子,假设你正在研究一个数列,想找出某个子数组的和,听起来是不是有点儿复杂?但如果你用滑动窗口的方式,只要固定一个窗口大小,然后在这个范围内来回滑动,就能快速计算出和。

就像在厨房里,做饭的时候不停地试味道,慢慢调整,最终调出最佳的味道。

滑动窗口让你的操作更高效,能在时间上节省不少。

想象一下,如果没有这个技术,你就得一个一个数,简直比上山打猎还累。

这就像是放风筝。

你得抓住风的方向,才能让风筝飞得又高又稳。

滑动窗口的作用就是让你把注意力集中在关键部分,避免在无关紧要的地方浪费时间和精力。

假设你在看电影,总是被旁边的手机和人打扰,结果根本没法好好享受剧情。

用滑动窗口的方法,就像把注意力“聚焦”到屏幕上,慢慢深入剧情,感受每一个情感波动,最终才能体会到电影的魅力。

滑动窗口还可以用在网络流量监控上。

网络数据就像高速公路上的车流,车流量大时,你需要时刻监控每个路口,防止拥堵。

通过滑动窗口技术,你可以在每个时间段内,快速查看流量情况,提前采取措施,避免“堵车”。

想想如果没有这项技术,恐怕数据就像漫天飞舞的雪花,根本无从下手。

滑动窗口的出现就像是给你装上了导航仪,让你在复杂的网络中轻松前行。

滑动窗口也不是万能的,它有自己的局限性。

比如在处理极大数据时,如果窗口大小选择不当,就可能出现效率低下的问题。

这就像我们去逛商场,走太快可能错过好东西,走太慢又容易累。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滑动窗口协议
滑动窗口协议,是TCP使用的一种流量控制方法。

该协议允许发送方在停止并等待确认前可以连续发送多个分组。

由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。

只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。

收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。

当发送窗口和接收窗口的大小都等于 1时,就是停止等待协议。

当发送窗口大于1,接收窗口等于1时,就是回退N步协议。

当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。

协议中规定,对于窗口内未经确认的分组需要重传。

这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n减去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等于1)。

工作原理
TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。

为此TCP在进行数据传输时使用了滑动窗口机制。

TCP滑动窗口用来暂存两台计算机问要传送的数据分组。

每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。

发送端待发数据分组在缓冲区排队等待送出。

被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。

滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。

随着新的确认到来,窗口不断向右滑动。

TCP协议软件依靠滑动窗口机制解决传输效率和流量控制问题。

它可以在收到确认信息之前发送多个数据分组。

这种机制使得网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。

在实际运行中,TCP滑动窗口的大小是可以随时调整的。

收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高数据传输效率的同时,防止拥塞的发生。

称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。

当窗口右边沿向右移动时将允许发送更多的数据,称之为窗口张开。

这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。

当右边沿向左移动时,称为窗口收缩。

Host Requirements RFC强烈建议不要使用这种方式。

但TCP必须能够在某一端产生这种情况时进行处理。

如果左边沿到达右边沿,则称其为一个零窗口。

注意事项
(1)发送方不必发送一个全窗口大小的数据。

(2)来自接收方的一个报文段确认数据并把窗口向右边滑动,这是因为窗口的大小事相对于确认序号的。

(3)窗口的大小可以减小,但是窗口的右边沿却不能够向左移动。

(4)接收方在发送一个ACK前不必等待窗口被填满。

滑动窗口
滑动窗口(Sliding window )是一种流量控制技术。

早期的网络通信中,通信双方不会考虑网
络的拥挤情况直接发送数据。

由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。

所以就有了滑动窗口机制来解决此问题。

参见滑动窗口如何根据网络拥塞发送数据仿真视频。

图片是一个滑动窗口的实例:
滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。

接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。

TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。

发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。

当滑动窗口为0时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。

另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。

(1).窗口机制
滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。

发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。

不同的滑动窗口协议窗口大小一般不同。

发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

下面举一个例子(假设发送窗口尺寸为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号帧。

此时接收窗口状态仍不变。

若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。

1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退n协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。

(2).1比特滑动窗口协议当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。

该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。

由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。

由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。

其发送方和接收方运行的流程图如图所示。

(3).后退n协议由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。

后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。

且发送方在每发送完一个数据帧时都要设置超时定时器。

只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。

如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。

从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须
把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。

由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。

此协议中的发送窗口的大小为k,接收窗口仍是1。

(4).选择重传协议在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。

另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。

一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。

这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图所示。

显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

滑动窗口功能:确认、差错控制、流量控制。

流量控制
TCP的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。

TCP的窗口以字节为单位进行调整,以适应接收方的处理能力。

处理过程如下:减小窗口尺寸
(1)TCP连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区;(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;(3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节流中的字节数。

调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。

滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。

然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。

相关文档
最新文档