停止等待协议

17 Mar 2025 | 4 分钟阅读

在理解停止等待协议之前,我们首先了解错误控制机制。错误控制机制用于确保接收到的数据与发送方发送的数据完全相同。错误控制机制分为两类:停止等待ARQ和滑动窗口。滑动窗口进一步分为两类:回退N帧和选择重传。人们根据使用情况选择错误控制机制,无论是停止等待还是滑动窗口

什么是停止等待协议?

这里的停止等待意味着,发送方希望发送的任何数据,都会将其发送给接收方。发送数据后,他会停止并等待直到收到接收方的确认。停止等待协议是一种流量控制协议,其中流量控制是数据链路层的一项服务。

它是一种数据链路层协议,用于在无噪声信道上传输数据。它提供单向数据传输,这意味着一次只能进行发送或接收数据。它提供流量控制机制,但不提供任何错误控制机制。

使用此帧的目的是,当发送方发送帧时,他会在发送下一帧之前等待确认。

停止等待协议的基元

停止等待协议的基元是

发送方侧

规则 1:发送方一次发送一个数据包。

规则 2:发送方仅在收到前一个数据包的确认后才发送下一个数据包。

因此,发送方侧的停止等待协议的思想非常简单,即一次发送一个数据包,并且在收到确认之前不要发送另一个数据包。

接收方侧

规则 1:接收并消耗数据包。

规则 2:当数据包被消耗后,接收方会向发送方发送确认。

因此,接收方侧的停止等待协议的思想也非常简单,即消耗数据包,一旦数据包被消耗,就发送确认。这被称为流量控制机制。

停止等待协议的工作原理

Stop and Wait Protocol

上图显示了停止等待协议的工作原理。如果存在发送方和接收方,那么发送方发送数据包,该数据包称为数据包。发送方在收到第一个数据包的确认之前不会发送第二个数据包。接收方会发送它已收到的数据包的确认。一旦收到确认,发送方就会发送下一个数据包。此过程一直持续到所有数据包都发送完毕。此协议的主要优点是其简单性,但它也有一些缺点。例如,如果要发送 1000 个数据包,则不能一次性发送所有 1000 个数据包,因为在停止等待协议中,一次只能发送一个数据包。

停止等待协议的缺点

停止等待协议存在以下问题:

1. 因数据丢失引起的问题

Stop and Wait Protocol

假设发送方发送了数据,但数据丢失了。接收方长时间等待数据。由于接收方未收到数据,因此不会发送任何确认。由于发送方未收到任何确认,因此不会发送下一个数据包。这个问题是由于数据丢失引起的。

在这种情况下,会出现两个问题

  • 发送方无限期地等待确认。
  • 接收方无限期地等待数据。

2. 因确认丢失引起的问题

Stop and Wait Protocol

假设发送方发送了数据,并且接收方也已收到。接收方收到数据包后,会发送确认。在这种情况下,确认在网络中丢失,因此发送方没有机会收到确认。发送方也没有机会发送下一个数据包,因为在停止等待协议中,在收到前一个数据包的确认之前,无法发送下一个数据包。

在这种情况下,出现一个问题

  • 发送方无限期地等待确认。

3. 因数据或确认延迟引起的问题

Stop and Wait Protocol

假设发送方发送了数据,并且接收方也已收到。接收方随后发送确认,但确认在发送方的超时周期之后才收到。由于确认接收得很晚,因此可能会错误地将该确认视为对其他数据包的确认。


下一主题IMAP 协议