网工干货知识

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

滑动窗口协议

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

滑动窗口协议允许在收到确认之前发送多个数据包。

  • 通过使用“窗口”来管理数据包的流动,可以提升网络的效率和吞吐量,尤其是在长距离或延迟较高的连接情况下。
  • 滑动窗口协议适用于需要可靠且有序地传输数据包的场景,比如数据链路层以及传输层的传输控制协议中。

与滑动窗口协议相关的术语

传输延迟(Tt):是时候将数据包从主机传输到输出链接了。如果B是……带宽这里的“链接”指的是某种连接或关联方式,而“D”则代表需要传输的数据量。

T_t = $\frac{\text{数据大小} (D)}{\text{带宽} (B)}$

2. 传播延迟(Tp):这是指主机中的第一个数据位通过输出链路传输到目的地所需的时间。这个时间取决于距离d以及波的传播速度s(这些参数又取决于介质的特性)。

T_p = \frac{\text{距离} (d)}{\text{传播速度} (s)}

3. 效率:其定义为数据包的总有效时间与总周期时间的比率。对于“停止等待”协议来说,……

总时间(TT) = 数据处理时间(Tt(data)) + 平均处理时间(Tp(data)) +
感谢 + 再次感谢
= Tt(data) + Tp(data) + Tp(确认)
= Tt + 2*Tp

由于确认消息的体积非常小,因此它们的传输延迟可以忽略不计。

效率 = $\frac{T_t}{T_t + 2T_p} = \frac{1}{1 + 2a}$,其中 $a = \frac{T_p}{T_t}$。

4. 有效带宽(EB)或吞吐量每秒传输的位数数量。

EB = 数据大小(D) / 总周期时间(Tt + 2*Tp)
通过带宽(B)进行乘法和除法运算。
= (1/(1+2a)) * B [其中,a = Tp/Tt]
= 效率 * 带宽

5. 链接的容量如果某个频道是……全双工模式那么,比特就可以在双向传输中传输,而且不会发生任何冲突。一个信道/链路能够承载的最大比特数,就是它的容量。

容量 = 带宽(B) × 传播时间(Tp)
对于全双工通道来说,
容量 = 2 × 带宽(B) × 传播时间(Tp)

流水线概念

In 停止并等待协议每次只传输一个数据包。在发送完一个数据包之后,发送方必须等待接收方的确认,然后再继续发送下一个数据包。

这种设置的问题在于其效率低下——因为通信通道只被利用了一部分,实际上在等待期间,还有更多的数据包可以传输到通信通道中。

总循环时间为:T_{\text{cycle}} = T_t + 2T_p

现在,让我们来计算一下,在一个周期时间内,理论上可以传输多少个数据包吧:

  • 在T中t单位 →1包可以被传播/传递
  • 1个单位内\tfrac{1}{T_t}数据包可以被传输出去。
  • 在(T)中t + 2Tp)单位 →\(\frac{T_t + 2T_p}{T_t} = 1 + \frac{2T_p}{T_t}\)

如果我们使用这种表示方式的话……a = \frac{T_p}{T_t}

  • 每个周期中的数据包数量 = 1 + 2a
滑动窗口

在总循环时间内可以传输的最大数据包数量:在收到第0个数据包的确认后,窗口会滑动,而下一个数据包就可以被分配序列号0。我们继续使用已经确认过的序列号,这样就能保持头部大小最小化,如下图所示。

发送多个数据包

在总循环时间内可以传输的最大数据包数量= 1 + 2a

示例:设 Tt = 1 毫秒(每个数据包的传输时间),Tp = 1.5 毫秒(传播时间)。

  • 在发送方发送完数据包0之后,它会立即继续发送数据包1、2和3。
  • 第0个数据包的确认信息在以下时间之后到达:
  • 2(T)p= 3 毫秒

In 停止-等待机制只传输了1个数据包。

  • Tt+2(T)p=4 毫秒

在Sliding Window机制下,会保留那些已经发送但尚未得到确认的数据包。这样,多个数据包就可以被高效地传输了。

发送窗口所需的最小位数

正如我们上面所看到的那样,

最大窗口大小 = 1 + 2*a,其中 a = Tp/Tt
所需的最小序列号数量 = 1 + 2*a。

当前窗口中的每个数据包都被分配了一个序列号。

  • 发送方窗口位为了表示发送窗口,所需的位数如下:

\text{比特数} = \lceil \log_2 (1 + 2a) \rceil

  • 协议头部约束有时候,头部中的序列号字段是固定的。如果该字段为固定值的话……N位我们可以拥有它。2ⁿ序列号.
  • 窗口大小:

窗口大小 (ws) = min(1 + 2a, 2^N)

  • 表示窗口所需的最小位数:

\text{位数} = \lceil \log_2 (ws) \rceil

本次讨论仅涉及发送窗口的相关内容。至于接收窗口的处理方式,即如何使用Go-Back-N或Selective Repeat技术来实现流水线处理,则将在后续的文章中进行详细讨论。

滑动窗口协议的几种类型

滑动窗口协议有两种类型,分别是Go-Back-N ARQ和Selective Repeat ARQ。

  1. Go-Back-N ARQ:在收到确认之前,可以发送多个帧。如果某个帧丢失了,或者没有收到确认,那么从那个点开始的所有帧都需要重新发送。
  2. 选择性重传ARQ:在收到确认之前,会发送多个帧。不过,只有那些丢失或错误的帧才会被重新发送。接收方可以存储那些顺序混乱的帧,直到所有缺失的帧都到达为止。

相关文章:

  • Go-Back-N ARQ
  • 选择性重传ARQ
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

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