本文概述
- 线学科
- 流量控制
- 错误控制
数据链接层提供三个功能:
- 线规
- 流量控制
- 错误控制
文章图片
线学科
- 线路纪律是数据链路层的功能, 可在链路系统之间提供协调。它确定可以发送的设备以及何时可以发送数据。
- ENQ / ACK
- 投票/选择
END / ACK代表“查询/确认”, 当链路上没有可用的错误接收器, 并且在两个设备之间具有专用路径时, 便可以使用能够接收传输的设备。
END / ACK协调哪个设备将开始传输以及接收者是否准备就绪。
END / ACK的工作
发送器发送称为询问(ENQ)的帧, 询问接收器是否可用于接收数据。
接收器以肯定确认(ACK)或否定确认(NACK)进行响应, 其中肯定确认表示接收器已准备好接收传输, 而否定确认表示接收器无法接受传输。
【网络数据链接控制】以下是接收方的响应:
- 如果对ENQ的响应为肯定, 则发送方将发送其数据, 并且一旦发送完所有数据, 则设备将以EOT(发送结束)帧结束其发送。
- 如果对ENQ的响应是否定的, 则发送方将断开连接并在另一时间重新开始传输。
- 如果响应既不是否定的也不是肯定的, 则发送方认为ENQ帧在传输过程中丢失了, 并在放弃之前进行了三次尝试建立链接。
文章图片
投票/选择
线路规则的“轮询/选择”方法适用于将一个设备指定为主站, 而其他设备作为辅助站的拓扑。
投票/选择的工作
- 在这种情况下, 主设备和多个辅助设备由一条传输线组成, 并且所有交换都通过主设备进行, 即使目的地是辅助设备也是如此。
- 主设备具有对通信链路的控制, 而辅设备遵循主设备的指令。
- 主设备确定允许哪个设备使用通信信道。因此, 可以说它是会话的发起者。
- 如果主设备要从辅助设备接收数据, 它会询问辅助设备它们要发送的数据, 此过程称为轮询。
- 如果主设备要向辅助设备发送一些数据, 则它告诉目标辅助设备准备好接收数据, 此过程称为选择。
- 当主要设备要发送东西时, 将使用选择模式。
- 当主设备要发送一些数据时, 它会通过发送选择(SEL)帧来提醒辅助设备即将进行的传输, 该帧的一个字段包括预期辅助设备的地址。
- 当辅助设备接收到SEL帧时, 它将发送一个指示辅助就绪状态的确认。
- 如果辅助设备准备好接受数据, 则主设备将两个或多个数据帧发送到预期的辅助设备。一旦数据被发送, 辅助设备发送一个确认信息, 表明已经接收到数据。
文章图片
轮询
- 当主设备要从辅助设备接收某些数据时, 将使用“轮询”模式。
- 当主设备要接收数据时, 它会询问每个设备是否有任何要发送的数据。
- 首先, 主服务器询问(轮询)第一辅助设备, 如果它以NACK(否定确认)做出响应, 则意味着它没有任何可发送的内容。现在, 它接近第二个辅助设备, 它以ACK响应, 意味着它有要发送的数据。辅助设备可以一个接一个地发送多个帧, 或者有时可能需要在发送每个帧之前发送ACK, 具体取决于所使用协议的类型。
文章图片
流量控制
- 它是一组过程, 告诉发送方在数据淹没接收方之前可以发送多少数据。
- 接收设备的速度和存储数据的内存有限。因此, 接收设备必须能够通知发送设备在达到限制之前暂时停止传输。
- 它需要一个缓冲区, 一个内存块, 用于存储信息, 直到信息被处理为止。
- 停止等待
- 滑动窗口
- 在Stop-and-wait方法中, 发送方在发送每个帧之后都等待确认。
- 收到确认后, 仅发送下一帧。交替发送和等待帧的过程继续进行, 直到发送方发送EOT(传输结束)帧为止。
Stop-and-wait方法很简单, 因为在发送下一帧之前检查并确认每个帧。
停止等待的缺点
停止等待技术效率低下, 因为每个帧都必须一直穿越到接收器, 并且确认要一直发送到下一帧才发送。发送和接收的每个帧都使用遍历链接所需的整个时间。
滑动窗口
- 滑动窗口是一种流控制方法, 其中发送方可以在获得确认之前发送几个帧。
- 在滑动窗口控制中, 由于可以有效利用通信信道的容量, 因此可以一个接一个地发送多个帧。
- 单个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。现在, 如果ACK到达并带有一个数字4表示0到3帧已完好无损, 并且发送方窗口已扩展为包括接下来的四个帧。因此, 发送方窗口包含六个帧(5, 6, 7, 0, 1, 2)。
文章图片
接收器窗口
- 在传输开始时, 接收器窗口不包含n个帧, 但包含n-1个帧空间。
- 当新框架到达时, 窗口的大小将缩小。
- 接收器窗口不代表接收到的帧数, 但是代表发送ACK之前可以接收的帧数。例如, 窗口的大小为w, 如果接收到三帧, 则窗口中可用的空间数为(w-3)。
- 发送确认后, 接收器窗口将以等于确认的帧数的数量扩展。
- 假设窗口的大小为7, 则意味着接收器窗口包含7个帧的7个空格。如果接收到一帧, 则接收器窗口会缩小并将边界从0移到1。这样, 窗口就会一一缩小, 因此窗口现在包含六个空格。如果发送了从0到4的帧, 则在发送确认之前, 窗口包含两个空格。
文章图片
错误控制 错误控制是一种错误检测和重新传输的技术。
错误控制类别:
文章图片
停止等待ARQ
停止等待ARQ是一种用于在帧损坏或丢失的情况下重新传输数据的技术。
该技术基于以下原理工作:发送方直到接收到最后发送的帧的确认, 才发送下一帧。
重传需要四个功能:
- 发送设备保留最后发送的帧的副本, 直到接收到确认为止。如果未正确接收帧, 保留副本将使发送方重新传输数据。
- 数据帧和ACK帧都交替编号为0和1, 以便可以分别对其进行标识。假设数据1帧确认数据0帧意味着数据0帧已正确到达, 并期望接收数据1帧。
- 如果在最后发送的帧中发生错误, 则接收器发送未编号的NAK帧。在接收到NAK帧后, 发送方将重新发送数据。
- 它与计时器一起使用。如果在指定的时间内未收到确认, 则发送方认为该帧在传输过程中丢失, 因此它将重新传输该帧。
- 损坏的帧:当接收方收到损坏的帧(即, 该帧包含错误)时, 它将返回NAK帧。例如, 当发送数据0帧, 然后接收方发送ACK 1帧时, 意味着数据0已正确到达, 并发送数据1帧。发送方发送下一帧:数据1。它到达未损坏的状态, 并且接收方返回ACK0。发送方发送下一帧:数据0。接收方报告错误并返回NAK帧。发送方重新发送数据0帧。
- 丢失帧:发送方配备了计时器, 并在发送帧时开始。有时, 帧尚未到达接收端, 因此无法肯定或否定地对其进行确认。发送方等待确认, 直到计时器关闭。如果计时器关闭, 它将重新发送最后发送的帧。
SlidingWindow ARQ是用于连续传输错误控制的技术。
用于重传的三个功能:
- 在这种情况下, 发送方将保留所有已传输帧的副本, 直到它们被确认为止。假设已经发送了从0到4的帧, 并且最后一个确认是针对帧2的, 则发送方必须保留帧3和4的副本, 直到它们正确接收为止。
- 接收器可以根据情况发送NAK或ACK。 NAK帧告诉发送者数据已被损坏。由于滑动窗口是一种连续的传输机制, 因此必须对ACK和NAK都进行编号以标识帧。 ACK帧由一个数字组成, 代表接收者希望接收的下一帧。 NAK框架由代表损坏框架的数字组成。
- 滑动窗口ARQ配备有计时器来处理丢失的确认。假设在接收到任何确认之前已发送了n-1个帧。发送方等待确认, 因此它将启动计时器并等待再发送。如果分配的时间用完, 发送方将根据使用的协议重新发送一个或所有帧。
- Go-Back-n ARQ:在Go-Back-N ARQ协议中, 如果一帧丢失或损坏, 则它将重新传输所有帧, 此后, 该帧将不会收到肯定的ACK。
- 损坏的帧:当帧损坏时, 接收器将发送NAK帧。
文章图片
在上图中, 在第三个帧中发现错误之前已传输了三个帧。在这种情况下, 将返回ACK 2, 告知已成功接收帧0, 1, 没有任何错误。接收器发现数据2帧中的错误, 因此它返回NAK 2帧。框架3在损坏的框架之后传输时也被丢弃。因此, 发送者重新发送帧2, 3。
- 丢失的数据帧:在滑动窗口协议中, 数据帧按顺序发送。如果丢失任何帧, 则下一帧到达接收器的顺序不正确。接收器检查每个帧的序列号, 发现已跳过的帧, 然后为丢失的帧返回NAK。发送设备重新发送由NAK指示的帧以及丢失帧之后发送的帧。
- 丢失的确认:发送方可以在等待任何确认之前发送窗口允许的最大帧数。一旦达到窗口的限制, 发送方便不再有要发送的帧。它必须等待确认。如果确认丢失, 则发送者可以永远等待。为避免这种情况, 发送方配备了计时器, 只要达到窗口容量, 计时器便开始计数。如果在该时限内未收到确认, 则发送方自上次ACK起重新发送该帧。
- 选择性拒绝ARQ技术比Go-Back-n ARQ更有效。
- 在此技术中, 仅重发已接收到否定确认(NAK)的那些帧。
- 接收器存储缓冲区将保留所有损坏的帧, 直到正确接收到错误的帧。
- 接收器必须具有适当的逻辑, 以便以正确的顺序重新插入帧。
- 发送方必须包含一个搜索机制, 该机制仅选择请求的帧进行重传。
文章图片