数据链路层中的差错控制
数据链路层中的差错控制是指检测和纠正数据帧在传输过程中损坏或丢失的过程。
如果数据帧丢失或损坏,接收方将无法收到正确的数据帧,而发送方也无法获知丢失的情况。数据链路层采用一种技术来检测传输错误并采取必要的措施,即在检测到错误或数据帧丢失时重新传输数据帧。这个过程称为自动重传请求 (ARQ)。
差错控制的阶段
数据链路层中的差错控制机制包括以下阶段:
错误检测 - 发送方或接收方检测到任何传输错误。
确认 - 确认可以是肯定的或否定的。
肯定确认 (ACK) - 接收方在收到正确的帧后发送肯定确认。
否定确认 (NAK) - 接收方在收到损坏的帧或重复的帧时,向发送方发送否定确认。
重传 - 发送方维护一个时钟并设置一个超时时间。如果先前传输的数据帧的确认在超时前未到达,或者收到否定确认,则发送方会重新传输该帧。
差错控制技术
差错控制主要有三种技术:
停等式 ARQ
此协议涉及以下转换:
发送方维护一个超时计数器,在发送帧时启动该计数器。
如果发送方在规定时间内收到已发送帧的确认,则确认已成功交付该帧。然后,它会传输队列中的下一帧。
如果发送方在规定时间内未收到确认,则假设该帧或其确认在传输过程中丢失。然后,它会重新传输该帧。
如果发送方收到否定确认,则会重新传输该帧。
后退 N 帧 ARQ
此协议的工作原理为:
发送方具有称为发送窗口的缓冲区。
发送方根据发送窗口的大小发送多个帧,而无需接收先前帧的确认。
接收方逐个接收帧。它跟踪传入帧的序列号并发送相应的确认帧。
发送方在发送完窗口中的所有帧后,会检查已收到肯定确认的序列号。
如果发送方已收到所有帧的肯定确认,则会发送下一组帧。
如果发送方收到 NACK 或未收到特定帧的任何 ACK,则会重新传输其未收到任何肯定确认之后的帧。
选择重传 ARQ
- 发送方和接收方分别具有称为发送窗口和接收窗口的缓冲区。
发送方根据发送窗口的大小发送多个帧,而无需接收先前帧的确认。
接收方还在接收窗口大小内接收多个帧。
接收方跟踪传入帧的序列号,并将帧缓冲在内存中。
它为所有成功接收的帧发送 ACK,并且仅为丢失或损坏的帧发送 NACK。
在这种情况下,发送方仅发送收到 NACK 的数据包。