📅  最后修改于: 2020-11-09 09:58:25             🧑  作者: Mango
数据链接控件
数据链路控制是数据链路层提供的服务,用于在物理介质上提供可靠的数据传输。例如,在半双工传输模式下,一个设备一次只能传输数据。如果链路末端的两个设备同时传输数据,它们将发生冲突并导致信息丢失。数据链路层提供了设备之间的协调,因此不会发生冲突。
数据链接层提供三个功能:
线学科
- 线路纪律是数据链路层的功能,可在链路系统之间提供协调。它确定可以发送的设备以及何时可以发送数据。
线路纪律可以通过两种方式实现:
结束/确认
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帧。
- 丢失帧:发送方配备了计时器,并在发送帧时开始。有时,帧尚未到达接收端,因此无法肯定或否定地对其进行确认。发送方等待确认,直到计时器关闭。如果计时器关闭,它将重新发送最后发送的帧。
推拉窗ARQ
SlidingWindow ARQ是用于连续传输错误控制的技术。
用于重传的三个功能:
- 在这种情况下,发送方保留所有已传输帧的副本,直到它们被确认为止。假设已经发送了从0到4的帧,并且最后一个确认是针对帧2的,则发送方必须保留帧3和4的副本,直到它们正确接收为止。
- 接收器可以根据情况发送NAK或ACK。 NAK帧告诉发送者数据已被损坏。由于滑动窗口是一种连续的传输机制,因此必须对ACK和NAK都进行编号以识别帧。 ACK帧由一个数字组成,代表接收方希望接收的下一帧。 NAK框架由代表损坏框架的数字组成。
- 滑动窗口ARQ配备有计时器来处理丢失的确认。假设在接收到任何确认之前已发送了n-1个帧。发送方等待确认,因此它将启动计时器并等待再发送。如果分配的时间用完,发送方将根据使用的协议重新发送一个或所有帧。
滑动窗口ARQ中使用的两种协议:
- Go-Back-n ARQ:在Go-Back-N ARQ协议中,如果一帧丢失或损坏,则它会重新传输所有帧,此后它不会收到肯定的ACK。
重传可能出现三种可能性:
在上图中,在第三个帧中发现错误之前已传输了三个帧。在这种情况下,将返回ACK 2,告知已成功接收帧0,1,没有任何错误。接收器发现数据2帧中的错误,因此它返回NAK 2帧。框架3在损坏的框架之后传输时也被丢弃。因此,发送者重新发送帧2,3。
- 丢失的数据帧:在滑动窗口协议中,数据帧按顺序发送。如果任何帧丢失,则下一帧到达接收器的顺序不正确。接收器检查每个帧的序列号,发现已跳过的帧,然后为丢失的帧返回NAK。发送设备重新发送由NAK指示的帧以及丢失帧之后发送的帧。
- 丢失的确认:在等待任何确认之前,发送方可以发送窗口允许的尽可能多的帧。一旦达到窗口的限制,发送方便不再有要发送的帧。它必须等待确认。如果确认丢失,则发送者可以永远等待。为避免这种情况,发送方配备了计时器,一旦达到窗口容量,计时器便开始计数。如果在该时限内未收到确认,则发送方自上次ACK起重新发送该帧。
选择性拒绝ARQ
- 选择性拒绝ARQ技术比Go-Back-n ARQ更有效。
- 在此技术中,仅重发已接收到否定确认(NAK)的那些帧。
- 接收器存储缓冲区将保留所有损坏的帧,直到正确接收到错误的帧为止。
- 接收器必须具有适当的逻辑,以正确的顺序重新插入帧。
- 发送方必须包含一个搜索机制,该机制仅选择请求的帧进行重传。