数据链路控制2025年3月17日 | 阅读 10 分钟 数据链路控制是由数据链路层提供的服务,用于在物理介质上提供可靠的数据传输。例如,在半双工传输模式下,一次只能传输一个设备的数据。如果链路两端的设备同时传输数据,它们将发生冲突并导致信息丢失。数据链路层提供了设备之间的协调,以防止发生冲突。 数据链路层提供三个功能  线路管理- 线路管理是数据链路层的一个功能,它提供链路系统之间的协调。它决定了哪个设备可以发送,以及何时可以发送数据。
线路管理可以通过两种方式实现 END/ACK END/ACK 代表查询/确认,当链路中没有错误接收器可用,并且两个设备之间有专用路径时使用,这样能够接收传输的设备就是预期的设备。 END/ACK 协调哪个设备将开始传输以及接收器是否已准备好。 END/ACK 的工作原理 发送方发送一个称为查询(ENQ)的帧,询问接收方是否可以接收数据。 接收方要么以正确认可(ACK)或否定确认(NACK)进行响应,其中正确认可表示接收方已准备好接收传输,否定确认表示接收方无法接受传输。 接收方的响应如下 - 如果对 ENQ 的响应是肯定的,发送方将传输其数据,并在所有数据传输完成后,该设备将以 EOT(传输结束)帧结束其传输。
- 如果对 ENQ 的响应是否定的,那么发送方将断开连接并稍后重新启动传输。
- 如果响应既不是否定也不是肯定,发送方假定 ENQ 帧在传输过程中丢失,并在放弃之前尝试建立三次连接。
 轮询/选择 轮询/选择线路管理方法适用于其中一个设备被指定为主站,其他设备为从站的拓扑结构。 轮询/选择的工作原理 - 在这种情况下,主设备和多个从设备共享一条传输线,即使目标是从设备,所有的交换都通过主设备进行。
- 主设备控制通信链路,从设备遵循主设备的指令。
- 主设备决定哪个设备被允许使用通信通道。因此,我们可以说它是会话的发起者。
- 如果主设备想从从设备接收数据,它会询问从设备它们是否有什么要发送的,这个过程称为轮询。
- 如果主设备想将一些数据发送给从设备,那么它会告诉目标从设备准备好接收数据,这个过程称为选择。
选择 - 当主设备有东西要发送时,会使用选择模式。
- 当主设备要发送一些数据时,它会通过传输一个选择(SEL)帧来提醒从设备即将传输,帧的其中一个字段包含目标从设备的地址。
- 当从设备收到 SEL 帧时,它会发送一个表示从设备准备状态的确认。
- 如果从设备准备好接收数据,主设备会向目标从设备发送两个或多个数据帧。数据传输完成后,从设备会发送一个确认,表明数据已收到。
 轮询 - 当主设备想从从设备接收一些数据时,会使用轮询模式。
- 当主设备想接收数据时,它会询问每个设备它们是否有东西要发送。
- 首先,主设备询问(轮询)第一个从设备,如果它响应 NACK(否定确认),则表示它没有什么要发送的。然后,它询问第二个从设备,它响应 ACK,则表示它有数据要发送。从设备可以连续发送一个或多个帧,有时根据所使用的协议类型,可能需要在发送每个帧之前发送 ACK。
 流量控制- 这是一组程序,用于告知发送方在数据使接收方过载之前可以传输多少数据。
- 接收设备的速度和存储数据的内存是有限的。因此,接收设备必须能够通知发送设备在达到限制之前暂时停止传输。
- 它需要一个缓冲区,一块内存用于存储信息直到处理。
已经开发了两种方法来控制数据流 停止等待 - 在停止等待方法中,发送方在发送每个帧后等待确认。
- 收到确认后,才会发送下一帧。交替发送和等待帧的过程一直持续到发送方传输 EOT(传输结束)帧。
停止等待的优点 停止等待方法很简单,因为在发送下一帧之前,每个帧都会被检查并确认。 停止等待的缺点 停止等待技术效率低下,因为每个帧都必须一路传输到接收方,并且在发送下一帧之前,确认信号也要一路传输回来。发送和接收的每个帧都占用了穿越链路所需的全部时间。 滑动窗口 - 滑动窗口是一种流量控制方法,在这种方法中,发送方可以在收到确认之前发送多个帧。
- 在滑动窗口控制中,可以一个接一个地发送多个帧,从而可以有效地利用通信信道的容量。
- 单个 ACK 确认多个帧。
- 滑动窗口指的是发送方和接收方两端的假想盒子。
- 窗口可以容纳两端的帧,并且对在收到确认之前可以传输的帧数设定了上限。
- 即使窗口没有完全填满,也可以确认帧。
- 窗口有一个特定的尺寸,以模 n 的方式编号,这意味着它们从 0 到 n-1 编号。例如,如果 n = 8,则帧的编号为 0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1........
- 窗口的大小表示为 n-1。因此,在确认之前最多可以发送 n-1 帧。
- 当接收方发送 ACK 时,它会包含它想要接收的下一个帧的编号。例如,为了确认以帧号 4 结尾的帧序列,接收方将发送包含数字 5 的 ACK。当发送方看到带有数字 5 的 ACK 时,它就知道从 0 到 4 的帧已被接收。
发送方窗口 - 在传输开始时,发送方窗口包含 n-1 帧,当它们被发送出去时,左边界会向内移动,缩小窗口的大小。例如,如果窗口大小为 w,如果发送了三个帧,那么发送方窗口中剩余的帧数为 w-3。
- 一旦收到 ACK,发送方窗口就会扩展到与 ACK 确认的帧数相等的数量。
- 例如,窗口大小为 7,如果已发送帧 0 到 4 且尚未收到确认,则发送方窗口仅包含两个帧,即 5 和 6。现在,如果收到带有数字 4 的 ACK,表示帧 0 到 3 已到达且未损坏,发送方窗口将扩展以包含接下来的四个帧。因此,发送方窗口包含六个帧(5,6,7,0,1,2)。
 接收方窗口 - 在传输开始时,接收方窗口不包含 n 帧,但包含 n-1 个帧的空位。
- 当新帧到达时,窗口的大小会缩小。
- 接收方窗口不表示已接收的帧数,而是表示在发送 ACK 之前可以接收的帧数。例如,如果窗口大小为 w,如果接收了三个帧,则窗口中的可用空位数为 (w-3)。
- 一旦发送了确认,接收方窗口就会按等于确认帧数的数量扩展。
- 假设窗口大小为 7,意味着接收方窗口包含七个用于七个帧的空位。如果收到一帧,则接收方窗口会缩小,并将边界从 0 移动到 1。这样,窗口一次缩小一个,因此窗口现在包含六个空位。如果发送了帧 0 到 4,则在发送确认之前,窗口包含两个空位。
 错误控制错误控制是一种错误检测和重传技术。 错误控制的类别  停止等待 ARQ 停止等待 ARQ 是一种用于在数据帧损坏或丢失时重传数据的方法。 该技术基于发送方在收到最后一个传输帧的确认之前不会传输下一个帧的原则。 重传需要四个特征 - 发送方会保留最后一个传输帧的副本,直到收到确认。保留副本允许发送方在帧未正确接收时重传数据。
- 数据帧和 ACK 帧都交替编号为 0 和 1,以便单独识别它们。假设数据 1 帧确认了数据 0 帧,表示数据 0 帧已正确到达,并期望接收数据 1 帧。
- 如果最后一个传输帧发生错误,则接收方会发送一个未编号的 NAK 帧。收到 NAK 帧后,发送方会重传数据。
- 它与计时器一起工作。如果在规定时间内未收到确认,则发送方假定帧在传输过程中丢失,因此它会重传该帧。
重传的两种可能性 - 损坏的帧:当接收方收到损坏的帧,即帧包含错误时,它会返回 NAK 帧。例如,当发送数据 0 帧时,然后接收方发送 ACK 1 帧,表示数据 0 已正确到达,并传输数据 1 帧。发送方传输下一帧:数据 1。它无损到达,接收方返回 ACK 0。发送方传输下一帧:数据 0。接收方报告错误并返回 NAK 帧。发送方重传数据 0 帧。
- 丢失的帧:发送方配有计时器,并在传输帧时启动。有时帧未到达接收端,因此无法进行正面或负面确认。发送方等待确认,直到计时器超时。如果计时器超时,它会重传最后一个传输的帧。
滑动窗口 ARQ 滑动窗口 ARQ 是一种用于连续传输错误控制的技术。 重传使用的三个特征 - 在这种情况下,发送方会保留所有已传输帧的副本,直到它们被确认。假设已传输帧 0 到 4,并且最后一个确认是针对帧 2 的,发送方必须保留帧 3 和 4 的副本,直到它们被正确接收。
- 接收方可以根据情况发送 NAK 或 ACK。NAK 帧告诉发送方数据已损坏。由于滑动窗口是一种连续传输机制,因此 ACK 和 NAK 都必须编号以识别帧。ACK 帧包含一个数字,表示接收方期望接收的下一个帧。NAK 帧包含一个数字,表示损坏的帧。
- 滑动窗口 ARQ 配备了计时器来处理丢失的确认。假设在收到任何确认之前已发送 n-1 帧。发送方等待确认,因此它启动计时器并在发送更多内容之前等待。如果在规定时间内超时,发送方会根据所使用的协议重传一帧或所有帧。
滑动窗口 ARQ 中使用的两个协议 - 回退 N ARQ(Go-Back-n ARQ):在 Go-Back-N ARQ 协议中,如果一个帧丢失或损坏,它将重传该帧之后所有未收到正确认可的帧。
重传可能发生的三种情况  在上图中,在发现第三个帧损坏之前,已传输三个帧。在这种情况下,已返回 ACK 2,表明帧 0、1 已成功接收且无错误。接收方发现数据 2 帧的错误,因此它返回 NAK 2 帧。由于帧 3 是在损坏帧之后传输的,因此也被丢弃。因此,发送方重传帧 2、3。 - 数据帧丢失:在滑动窗口协议中,数据帧按顺序发送。如果任何帧丢失,接收到的下一个帧将乱序。接收方会检查每个帧的序列号,发现跳过的帧,并返回对丢失帧的 NAK。发送设备将重传 NAK 指示的帧以及丢失帧之后传输的帧。
- 确认丢失:发送方可以在等待任何确认之前发送窗口允许的最大帧数。一旦达到窗口限制,发送方将没有更多帧要发送;它必须等待确认。如果确认丢失,发送方可能会永远等待。为了避免这种情况,发送方配有计时器,该计时器在窗口容量达到时开始计数。如果在时限内未收到确认,则发送方将重传最后一个 ACK 之后的帧。
选择性重传 ARQ - 选择性重传 ARQ 技术比回退 N ARQ 更有效。
- 在此技术中,仅重传已收到否定确认(NAK)的帧。
- 接收方的存储缓冲区会暂存所有损坏的帧,直到有错误错误的帧被正确接收。
- 接收方必须具备适当的逻辑来按正确顺序重新插入帧。
- 发送方必须包含一个搜索机制,该机制仅选择请求的帧进行重传。

|