网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

滑动窗口协议概述及相关问题解答

更新时间:2026年03月27日   作者:spoto   标签(Tag):

滑动窗口协议是一种用于数据链路层和传输层的流量控制机制,它旨在确保帧或数据包在发送方和接收方之间的传输过程既可靠又高效。滑动窗口协议中的关键概念包括:

  • 窗口大小指的是在需要收到确认之前,可以发送的帧数。
  • 发送窗口它决定了发送方在等待ACK响应之前可以传输多少帧。
  • 接收窗口表示接收方愿意接受多少帧数据。
  • 致谢/认可接收方确认已成功接收到帧数据。
  • 滑动窗口协议的几种类型:
    • 停止-等待机制每次只发送一帧数据,然后等待ACK响应。
    • Go-Back-N (GBN)发送方可以在不等待的情况下发送多个帧(窗口大小N)。但如果出现错误,发送方会重新发送从出错的那一帧开始的后续帧。
    • 选择性重传(SR)只有那些错误或丢失的帧会被重新发送回来,而不是整个序列。
  • 有用的时间Tt(data)
  • 总时长Tt(data) + 2*Tp + Tq + Tpro + Tt(ack)
  • 效率 = Tt(data) / (Tt(data) + 2*Tp + Tq + Tpro + Tt(ack))
Tt(data):数据包的传输延迟
Tp:数据包的传播延迟
排队延迟
Tpro:处理延迟
Tt(ack):用于确认信息的传输延迟时间。

停下来等待

停止并等待的ARQ方式这是一种用于可靠传输数据帧的滑动窗口协议。在噪声较大的信道或连接中,采用停止等待ARQ协议来实现数据的流量控制和错误控制。停止等待ARQ协议会先发送一个数据帧,然后等待接收方的确认消息。

  • 发送方窗口大小 (W)s)= 1
  • 接收窗口大小(W)r) = 1
  • 序列号 ≥ 1 + 1
  • 采用独立确认机制
  • 无序丢弃的数据包
  • 效率 = (有效时间)/(总时间)
停止并继续运行吧。

返回N点处

In Go-Back-N发送方可以发送多个数据包,而无需等待每个数据包的确认结果。不过,它只能发送一定数量的数据包(这被称为“窗口大小”)。如果某个数据包丢失或未被确认,那么发送方必须重新发送该数据包以及所有后续的数据包,即使这些数据包已经成功接收了。

  • 发送方窗口大小 Ws= N
  • 接收窗口大小 Wr= 1
  • 序列号 ≥ N + 1
  • 可以根据需要选择使用累积式确认方式,或者独立式确认方式。具体选择哪种方式取决于“确认计时器”的设置。
  • 无序丢弃的数据包
  • 效率 = 使用时间 / 总时间
GB-N 工作图

选择性重传

选择性重传协议(SRP)与GBN协议相比,SRP的主要区别在于:它使用了缓冲区,同时发送方和接收方都维护着各自的缓冲区。当连接非常不可靠时,SRP的表现会更好。因为在这种情况下,重传的频率会更高,因此选择性地重传某些帧比重新传输所有帧更为高效。此外,SRP还需要一个全双工的连接环境才能正常工作。

  • 发送方窗口大小 Ws= N
  • 接收窗口大小 Wr= N
  • 序列号 ≥ N + N
  • 仅使用独立的确认机制
  • 可以接受乱序传输的数据包。
  • 效率 = 作业数量 × 有效时间 / 总时间
选择性重复工作

练习题目

示例1.在“停等协议”中,每4次操作就会进行一次停顿。th数据包丢失了,我们需要发送总共10个数据包。那么,发送所有数据包需要多少次传输呢?

说明/解释

1 2 3 4 5 6 7 8 9 10(最初如此)
^
1 2 3 4 4 5 6 7 8 9 10(数据包编号4被重新发送)
^
1 2 3 4 4 5 6 7 7 8 9 10(数据包编号10被重新发送)
^
1 2 3 4 4 5 6 7 7 8 9 10 10(结果)

因此,我们再次传输了第4、7、10号数据包。总共传输了13个数据包。

示例2.在S&W协议中,如果错误概率为p,那么需要发送的数据包数量为‘n’。那么,我们到底需要发送多少个数据包呢?

说明/解释

总重传次数 = n * p0+ n*p1+ n*p2+ n*p3+ n*p4+ …… = n(1 + p + p)2+ p3+ p4+...) = n * (1 / (1-p)),利用无限级数的求和公式得出。

示例3.在GBN协议中,发送窗口的大小为10,同时T也保持不变。p= 49.5毫秒 & Tt那么,当带宽为1000比特每秒时,该协议的效率以及吞吐量分别是多少呢?

说明/解释

效率 = N/(1+2a)。因为这里只有传输延迟和传播延迟,所以 N = 10(给定的值),a = T。p/Tt= 49.5

效率 = 10 / (1 + 2 * 49.5)

= 10/100

= 0.1,即10%

吞吐量 = 效率 × 带宽 = 0.1 × 1000 = 100

示例4.在GB3中,如果每5个数据包中有1个丢失,而我们需要发送总共10个数据包,那么需要多少次重传呢?

说明/解释

1 2 3 4 5 6 7 | 8 9 10
^ $ (第5份文件丢失了)
1 2 3 4 5 6 7 5 6 7 8 9 | 10
* ^ $
1 2 3 4 5 6 7 5 6 7 8 9 7 8 9 10
* ^ $
1 2 3 4 5 6 7 5 6 7 8 9 7 8 9 10 9 10(计数从*开始,一直到^)
从 ^ 到 $ 的重新传输已经完成。
注意:从最后一个数据包开始,对于丢失的数据包,我们需要重新发送整个数据窗口。总的传输次数共计为18次。

示例5.在SR W中s共有5个数据包,我们发送了10个数据包。其中,每5个数据包中就有1个数据包丢失了。那么,需要进行的重传次数是多少呢?

说明/解释

1 2 3 4 5 6 7 8 9 10
^
1 2 3 4 5 5 6 7 8 9 10
^
1 2 3 4 5 5 6 7 8 9 9 10

在这里,我们看到,在SR过程中,窗口大小并没有起到任何作用,唯一发生的情况是丢失的数据包会被重新发送。总的传输次数为12次。

示例6.如果存在K个比特的序列,那么如何确定S&W、GBN和SR中的发送窗口大小和接收窗口大小呢?

说明/解释

给定了 K 位。

适用于S&W W品牌的产品s= 1,且Wr= 1

对于GBN来说,Ws= 2K-1 和 Wr= 1

对于SR来说,Ws= 2K-1以及Wr= 2(K-1)

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

上一篇: TCP连接终止

下一篇: TCP定时器

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料