数据链路控制与协议



数据链路层负责实现点对点数据流和错误控制机制。

流量控制

当一个数据帧(第2层数据)从一个主机发送到另一个主机通过单一媒介时,要求发送方和接收方以相同的速率工作。也就是说,发送方以接收方能够处理和接受数据的速度发送数据。如果发送方或接收方的速度(硬件/软件)不同怎么办?如果发送方发送得太快,接收方可能会过载(淹没),并且数据可能会丢失。

可以部署两种类型的机制来控制流量

  • 停等协议

    这种流量控制机制强制发送方在传输数据帧后停止并等待,直到收到已发送数据帧的确认。

    Stop and Wait
  • 滑动窗口

    在这种流量控制机制中,发送方和接收方都同意发送多少个数据帧后应发送确认。正如我们所学到的,停等协议流量控制机制浪费了资源,此协议试图尽可能多地利用底层资源。

错误控制

当传输数据帧时,数据帧可能在传输过程中丢失或接收损坏的可能性存在。在这两种情况下,接收方都没有收到正确的数据帧,并且发送方对任何丢失一无所知。在这种情况下,发送方和接收方都配备了一些协议,这些协议可以帮助它们检测传输错误,例如数据帧丢失。因此,发送方要么重新传输数据帧,要么接收方可以请求重新发送先前的数据帧。

错误控制机制的要求

  • 错误检测 - 发送方和接收方,或者两者之一,必须确定传输过程中是否存在某些错误。

  • 肯定确认(ACK) - 当接收方收到正确的帧时,应确认它。

  • 否定确认(NACK) - 当接收方收到损坏的帧或重复的帧时,它会向发送方发送 NACK,并且发送方必须重新传输正确的帧。

  • 重传:发送方维护一个时钟并设置一个超时时间段。如果先前传输的数据帧的确认在超时之前没有到达,则发送方会重新传输该帧,认为该帧或其确认在传输过程中丢失了。

有三种类型的技术可供数据链路层使用,以通过自动重传请求 (ARQ) 控制错误

  • 停等ARQ

    Stop and Wait ARQ

    在停等ARQ中可能会发生以下转换

    • 发送方维护一个超时计数器。
    • 发送帧时,发送方启动超时计数器。
    • 如果帧的确认及时到达,则发送方将传输队列中的下一帧。
    • 如果确认没有及时到达,则发送方假设帧或其确认在传输过程中丢失了。发送方重新传输该帧并启动超时计数器。
    • 如果收到否定确认,则发送方重新传输该帧。
  • 回退N ARQ

    停等协议ARQ机制没有充分利用资源。当收到确认时,发送方处于空闲状态,什么也不做。在回退N ARQ方法中,发送方和接收方都维护一个窗口。

    Go-back-n ARQ

    发送窗口大小使发送方能够在不接收先前帧的确认的情况下发送多个帧。接收窗口使接收方能够接收多个帧并确认它们。接收方跟踪传入帧的序列号。

    当发送方发送窗口中的所有帧时,它会检查已收到肯定确认的序列号。如果所有帧都得到肯定确认,则发送方发送下一组帧。如果发送方发现它已收到 NACK 或未收到特定帧的任何 ACK,则它会重新传输它未收到任何肯定确认之后的全部帧。

  • 选择重传ARQ

    在回退N ARQ中,假设接收方没有为其窗口大小提供任何缓冲空间,并且必须在帧到达时处理每个帧。这强制发送方重新传输所有未确认的帧。

    在选择重传ARQ中,接收方在跟踪序列号的同时,将帧缓存在内存中,并且仅为丢失或损坏的帧发送 NACK。

    在这种情况下,发送方仅发送收到 NACK 的数据包。

广告