有噪信道协议

2025年3月17日 | 阅读 7 分钟

嘈杂信道协议是一种会话协议,用于通信系统中,其中传输信道可能会在传输的数据中引入错误。这种协议旨在处理通信信道中的错误,并确保在接收方放弃后,传输的数据能够被正确接收。嘈杂信道协议的主要目标是通过错误检测和纠正、流量控制以及丢失或损坏的数据帧的重传等技术来最小化传输数据中的错误率。一些嘈杂信道协议的例子包括停止等待协议、滑动窗口协议和自动重传请求(ARQ)协议。

停止等待 ARQ 协议 - 停止等待协议是一种在嘈杂信道上进行可靠数据传输的协议。在此协议中,发送方一次只发送一个帧,并在发送下一个帧之前等待接收方的确认(ACK)。这有助于确保接收方能够有效地接收数据,并消除由于嘈杂信道引起的错误的重传需求。发送方会持续监控信道以检测错误,如果检测到错误,它会等待下一个 ACK 再重新发送该帧。此协议为数据帧的基本单向通信和反向的 ACK 帧增加了错误控制。

流程图

嘈杂信道中停止等待协议的数据流图可以用来描述发送方和接收方之间的数据流。该图通常包含以下组件:

Noisy Channel protocols

发送方: 发送方一次发送一个数据帧,并在发送下一个数据帧之前等待接收方的响应(ACK 或 NACK)。

接收方: 接收方接收数据帧并对其进行处理。如果帧被成功接收,接收方会向发送方发送一个 ACK 信号。如果帧未被成功接收,接收方会向发送方发送一个 NACK 信号。

嘈杂信道: 嘈杂信道是数据帧从发送方传输到接收方的媒介。该信道会向数据帧添加噪声,导致数据错误和损坏。

错误检测: 接收方使用校验和等错误检测策略来查找接收到的数据帧中的错误。

错误纠正: 如果检测到错误,接收方会发送一个 NACK 信号给发送方,要求重传该帧。

在此协议中,发送方一次只发送一个数据帧,并在发送下一个帧之前等待接收方的响应。这确保了接收方有足够的时间来处理每个帧,然后再接收下一个帧。停止等待协议是可靠的,但与其他协议相比,其吞吐量较低。

2. 回退 N 帧 ARQ 协议 - 回退 N 帧自动重传请求(ARQ)协议是一种错误控制协议,用于数据通信中,以确保在嘈杂信道上的数据可靠传输。在嘈杂信道中,接收到的数据包出错的可能性很高,因此需要一种机制来检测和准确识别这些错误。

回退 N 帧 ARQ 协议是一种滑动窗口协议,发送方将一个数据包窗口发送给接收方,接收方会发送一个确认(ACK)给发送方,表明已收到数据包。如果发送方在规定的超时时间内未收到 ACK,则会重新发送整个数据包窗口。

流程图

以下流程图说明了嘈杂信道中回退 N 帧 ARQ 协议的操作。

Noisy Channel protocols

发送方端

  1. 发送方将一个数据包窗口发送给接收方,从序列号 i 开始,到序列号 i + N - 1 结束,其中 N 是窗口长度。
  2. 发送方为窗口中的每个数据包设置一个计时器。
  3. 发送方等待接收方的确认(ACK)。

接收方端

  1. 接收方接收数据包并检查错误。
  2. 如果数据包被成功接收,接收方会向发送方发送一个 ACK,其中包含下一个预期数据包的序列号。
  3. 如果数据包接收时出错,接收方会丢弃该数据包,并向发送方发送一个否定确认(NAK),其中包含下一个预期数据包的序列号。

发送方端(如果未收到 ACK)

  1. 如果在某个数据包的计时器到期之前发送方未收到 ACK,则发送方将重新发送从计时器到期的那个数据包开始的整个数据包窗口。
  2. 发送方为窗口中的每个数据包重置计时器。
  3. 发送方等待接收方的 ACK。

发送方端(如果收到 NAK)

  1. 如果发送方收到接收方的 NAK,则发送方将重新发送接收方未成功接收的数据包。
  2. 发送方为每个重传的数据包重置计时器。
  3. 发送方等待接收方的 ACK。

重复上述步骤,直到接收方成功接收所有数据包。回退 N 帧 ARQ 协议提供了一种在嘈杂信道上传输数据的可靠机制,同时最大限度地减少了所需的重传次数。

重复上述步骤,直到接收方成功接收所有数据包。回退 N 帧 ARQ 协议提供了一种在嘈杂信道上传输数据的可靠机制,同时最大限度地减少了所需的重传次数。

3. 选择重传 ARQ 协议 - 选择重传 ARQ 协议是一种错误控制协议,用于数据通信中,以确保在嘈杂信道上的数据可靠传输。与回退 N 帧 ARQ 协议重新发送整个数据包窗口不同,选择重传 ARQ 协议仅重新发送未正确接收的数据包。

在选择重传 ARQ 协议中,发送方将一个数据包窗口发送给接收方,接收方会发送一个确认(ACK)给发送方,表明已成功接收到数据包。如果接收方检测到数据包中的任何错误,它会发送一个否定确认(NAK)给发送方,要求重传该数据包。

在选择重传 ARQ 协议中,发送方为窗口中的每个数据包保留一个计时器。如果发送方在数据包的计时器到期之前未收到该数据包的 ACK,则发送方将仅重新发送该数据包。

在接收方端,如果一个数据包被成功接收,接收方会发送一个 ACK 回复给发送方,其中包含下一个预期数据包的序列号。但是,如果一个数据包接收时出错,接收方会丢弃该数据包,并发送一个 NAK,其中包含需要重传的数据包的序列号。

与回退 N 帧 ARQ 不同,在选择重传 ARQ 中,接收方缓冲区用于存储所有未按顺序到达的数据包。当收到一个序列号与预期序列号不同的数据包时,会将其缓冲,并且接收方会发送一个 ACK 来确认它收到的最后一个按顺序到达的数据包。

如果收到一个接收方已缓冲的序列号的数据包,则将其丢弃,并且接收方会发送一个 ACK 来确认它收到的最后一个按顺序到达的数据包。

总而言之,选择重传 ARQ 协议提供了一种在嘈杂信道上传输数据的可靠机制,同时最大限度地减少了所需的重传次数。它仅重新发送未正确接收的数据包,并缓冲乱序到达的数据包,以减少所需的重传次数。

流程图

以下流程图说明了嘈杂信道中选择重传 ARQ 协议的操作。

Noisy Channel protocols

发送方端

  1. 发送方将一个数据包窗口发送给接收方,从序列号 i 开始,到序列号 i + N - 1 结束,其中 N 是窗口长度。
  2. 发送方为窗口中的每个数据包设置一个计时器。
  3. 3. 发送方等待接收方的确认(ACK)。

接收方端

  1. 接收方接收数据包并检查错误。
  2. 如果一个数据包被成功接收且按顺序到达,接收方会向发送方发送一个 ACK,其中包含下一个预期数据包的序列号。
  3. 如果一个数据包接收时出错或乱序,接收方会丢弃该数据包,并向发送方发送一个否定确认(NAK),其中包含需要重传的数据包的序列号。
  4. 接收方缓冲乱序的数据包,并发送一个 ACK 来确认它收到的最后一个按顺序到达的数据包。

发送方端(如果未收到 ACK)

  1. 如果发送方收到接收方的 NAK,则发送方仅重新发送未成功接收的数据包。
  2. 发送方为每个重传的数据包重置计时器。
  3. 发送方等待接收方的 ACK。

重复上述步骤,直到接收方成功接收所有数据包。选择重传 ARQ 协议提供了一种在嘈杂信道上传输数据的可靠机制,同时最大限度地减少了所需的重传次数。它仅重新发送未成功接收的数据包,并缓冲乱序的数据包,以减少所需的重传次数。