计算机网络 - 数据链路控制和协议

  • 简述

    数据链路层负责实现点对点的流量和差错控制机制。
  • 流量控制

    当一个数据帧(Layer-2 数据)通过单一介质从一台主机发送到另一台主机时,要求发送方和接收方以相同的速度工作。也就是说,发送方以接收方可以处理和接受数据的速度发送。如果发送方或接收方的速度(硬件/软件)不同怎么办?如果发送方发送速度过快,接收方可能会过载(淹没)并且数据可能会丢失。
    可以部署两种类型的机制来控制流量:
    • Stop and Wait 这种流量控制机制强制发送方在发送数据帧后停止并等待,直到收到对发送的数据帧的确认。
      停止并等待
    • Sliding Window
      在这种流控制机制中,发送方和接收方都同意应发送确认的数据帧数。正如我们所了解的,停止和等待流控制机制浪费资源,该协议试图尽可能地利用底层资源。
  • 错误控制

    传输数据帧时,数据帧可能会在传输过程中丢失或接收到损坏。在这两种情况下,接收方都没有收到正确的数据帧,并且发送方对任何丢失一无所知。在这种情况下,发送方和接收方都配备了一些协议,可以帮助他们检测传输错误,例如数据丢失-框架。因此,要么发送方重新发送数据帧,要么接收方可以请求重新发送先前的数据帧。
    差错控制机制要求:
    • Error detection  - 发送方和接收方,无论是两者还是任何一方,都必须确定在传输过程中存在一些错误。
    • Positive ACK  - 当接收器接收到正确的帧时,它应该确认它。
    • Negative ACK  - 当接收方接收到损坏的帧或重复的帧时,它会向发送方返回一个 NACK,发送方必须重新发送正确的帧。
    • Retransmission:  发送者维护一个时钟并设置一个超时时间。如果在超时之前对先前发送的数据帧的确认没有到达,则发送方会重新发送该帧,认为该帧或其确认在传输过程中丢失了。
    数据链路层可以部署三种可用的技术来通过自动重复请求 (ARQ) 控制错误:
    • 停止等待 ARQ

      停止并等待 ARQ
      在停止等待 ARQ 中可能发生以下转换:
      • 发送方维护一个超时计数器。
      • 发送帧时,发送方启动超时计数器。
      • 如果帧的确认及时到达,发送方发送队列中的下一帧。
      • 如果确认没有及时到达,则发送方假定帧或其确认在传输过程中丢失。发送方重新传输帧并启动超时计数器。
      • 如果接收到否定确认,则发送方重新传输该帧。
    • 返回-N ARQ

      停止等待 ARQ 机制并没有充分利用资源。当收到确认时,发送方处于空闲状态,什么也不做。在 Go-Back-N ARQ 方法中,发送方和接收方都维护一个窗口。
      返回-n ARQ
      发送窗口大小使发送方可以发送多个帧,而无需收到先前帧的确认。接收窗口使接收器能够接收多个帧并确认它们。接收器跟踪传入帧的序列号。
      当发送者发送窗口中的所有帧时,它会检查它收到肯定确认的序列号。如果所有帧都得到肯定确认,则发送者发送下一组帧。如果发送方发现它已经收到 NACK 或没有收到任何特定帧的 ACK,它会重新传输所有帧,之后它没有收到任何肯定的 ACK。
    • 选择性重复 ARQ

      在 Go-back-N ARQ 中,假设接收器没有任何缓冲区空间用于其窗口大小,并且必须在每个帧到来时对其进行处理。这强制发送方重新传输所有未确认的帧。
      在选择性重复 ARQ 中,接收器在跟踪序列号的同时,将帧缓存在内存中,并仅针对丢失或损坏的帧发送 NACK。
      在这种情况下,发送方仅发送接收到 NACK 的数据包。