错误控制
传输数据帧时,数据帧可能会在传输过程中丢失或接收到损坏。在这两种情况下,接收方都没有收到正确的数据帧,并且发送方对任何丢失一无所知。在这种情况下,发送方和接收方都配备了一些协议,可以帮助他们检测传输错误,例如数据丢失-框架。因此,要么发送方重新发送数据帧,要么接收方可以请求重新发送先前的数据帧。
差错控制机制要求:
-
Error detection - 发送方和接收方,无论是两者还是任何一方,都必须确定在传输过程中存在一些错误。
-
Positive ACK - 当接收器接收到正确的帧时,它应该确认它。
-
Negative ACK - 当接收方接收到损坏的帧或重复的帧时,它会向发送方返回一个 NACK,发送方必须重新发送正确的帧。
-
Retransmission: 发送者维护一个时钟并设置一个超时时间。如果在超时之前对先前发送的数据帧的确认没有到达,则发送方会重新发送该帧,认为该帧或其确认在传输过程中丢失了。
数据链路层可以部署三种可用的技术来通过自动重复请求 (ARQ) 控制错误:
-
停止等待 ARQ
在停止等待 ARQ 中可能发生以下转换:
- 发送方维护一个超时计数器。
- 发送帧时,发送方启动超时计数器。
- 如果帧的确认及时到达,发送方发送队列中的下一帧。
- 如果确认没有及时到达,则发送方假定帧或其确认在传输过程中丢失。发送方重新传输帧并启动超时计数器。
- 如果接收到否定确认,则发送方重新传输该帧。
-
返回-N ARQ
停止等待 ARQ 机制并没有充分利用资源。当收到确认时,发送方处于空闲状态,什么也不做。在 Go-Back-N ARQ 方法中,发送方和接收方都维护一个窗口。
发送窗口大小使发送方可以发送多个帧,而无需收到先前帧的确认。接收窗口使接收器能够接收多个帧并确认它们。接收器跟踪传入帧的序列号。
当发送者发送窗口中的所有帧时,它会检查它收到肯定确认的序列号。如果所有帧都得到肯定确认,则发送者发送下一组帧。如果发送方发现它已经收到 NACK 或没有收到任何特定帧的 ACK,它会重新传输所有帧,之后它没有收到任何肯定的 ACK。
-
选择性重复 ARQ
在 Go-back-N ARQ 中,假设接收器没有任何缓冲区空间用于其窗口大小,并且必须在每个帧到来时对其进行处理。这强制发送方重新传输所有未确认的帧。
在选择性重复 ARQ 中,接收器在跟踪序列号的同时,将帧缓存在内存中,并仅针对丢失或损坏的帧发送 NACK。
在这种情况下,发送方仅发送接收到 NACK 的数据包。