Data Communication Computer Network 简明教程
Data-link Control & Protocols
数据链路层负责实现点对点流程和错误控制机制。
Flow Control
当一个数据帧(第 2 层数据)通过一个介质从一个主机发送到另一个主机时,要求发送方和接收方以相同速度工作。也就是说,发送方以接收方能够处理和接收数据的速度发送数据。如果发送方或接收方的速度(硬件/软件)不同怎么办?如果发送方发送得太快,接收方可能会超载(淹没),数据可能会丢失。
可以部署两种类型的机制来控制流:
-
Stop and Wait
这种流控制机制强制发送方在传输数据帧后停止并等待收到已发送数据帧的确认。
-
Sliding Window 在这种流控制机制中,发送方和接收方都同意在发出确认后数据帧的数量。正如我们所学到的,停止并等待流控制机制浪费了资源,此协议尝试尽可能地利用底层资源。
Error Control
当传输数据帧时,数据帧在传输过程中可能会丢失,或者接收到时损坏。在这两种情况下,接收方都不会收到正确的数据帧,并且发送方对任何丢失的情况一无所知。在这种情况下,发送方和接收方都配备了一些协议,帮助他们检测传输错误,例如数据帧丢失。因此,发送方会重新传输数据帧,或者接收方可能会请求重新发送上一个数据帧。
错误控制机制的要求:
-
Error detection - 发送方和接收方,二者之一或两者,必须确定传输过程中存在一些错误。
-
Positive ACK - 当接收方接收到正确的帧时,它应该确认。
-
Negative ACK - 当接收方收到损坏的帧或重复的帧时,它向发送方发送 NACK,并且发送方必须重新传输正确的帧。
-
Retransmission: 发送方维护一个时钟并设置一个超时时间。如果之前传输的数据帧的确认在超时之前没有到达,则发送方将重新传输该帧,认为该帧或其确认在传输过程中丢失。
数据链路层可以使用以下三种类型的技术,通过自动重复请求 (ARQ) 来控制错误:
-
停止等待 ARQ 在停止等待 ARQ 中可能会发生以下转换:发送方维护一个超时计数器。在发送帧时,发送方将启动超时计数器。如果及时收到帧的确认,发送方将传输队列中的下一个帧。如果没有及时收到确认,发送方将假定帧或其确认在传输过程中丢失。发送方将重新传输帧并启动超时计数器。如果收到否定确认,发送方将重新传输帧。
-
回退 N ARQ 停止等待 ARQ 机制无法充分利用资源。收到确认后,发送方将处于空闲状态,无所事事。在回退 N ARQ 方法中,发送方和接收方都将维护一个窗口。发送窗口大小使发送方能够在不接收前一个帧的确认下发送多个帧。接收窗口使接收方能够接收多个帧并确认这些帧。接收方将跟踪传入帧的序列号。当发送方在窗口中发送所有帧后,会检查已收到积极确认的序列号。如果所有帧都已得到积极确认,发送方将发送下一组帧。如果发送方发现已收到 NACK 或没有收到特定帧的任何 ACK,则会重新传输在此之后未收到任何积极 ACK 的所有帧。
-
选择性重复 ARQ 在回退 N ARQ 中,假定接收方没有用于其窗口大小的任何缓冲器空间,并且必须在帧到达时处理每个帧。这会强制发送方重新传输未确认的所有帧。在选择性重复 ARQ 中,接收方在跟踪序列号的同时,将帧缓冲在存储器中并仅向丢失或损坏的帧发送 NACK。在这种情况下,发送方仅发送收到 NACK 的数据包。