📅  最后修改于: 2021-01-12 02:46:42             🧑  作者: Mango
数据链路层负责实现点对点流和错误控制机制。
当数据帧(第2层数据)通过单一介质从一台主机发送到另一台主机时,发送方和接收方必须以相同的速度工作。即,发送方以接收方可以处理和接受数据的速度发送。如果发送方或接收方的速度(硬件/软件)不同,该怎么办?如果发送方发送速度太快,则接收方可能会过载(被淹没),并且数据可能会丢失。
可以部署两种类型的机制来控制流:
停止并等待
这种流控制机制迫使发送方在发送数据帧后停止并等待,直到收到对发送的数据帧的确认为止。
滑动窗口
在这种流控制机制中,发送方和接收方都同意在应发送确认之后的数据帧数。随着我们学习,停止和等待流控制机制的浪费,该协议尝试尽可能多地利用基础资源。
当发送数据帧时,有可能在传输过程中丢失数据帧或接收到损坏的数据帧。在这两种情况下,接收方均未收到正确的数据帧,发送方对丢失也一无所知。在这种情况下,发送方和接收方都配备了一些协议,可帮助他们检测传输错误,例如数据丢失。帧。因此,发送方重新发送数据帧,或者接收方可以请求重新发送先前的数据帧。
错误控制机制的要求:
错误检测-发送方和接收方(无论是发送方还是接收方)都必须确定传输过程中存在一些错误。
肯定ACK-接收器收到正确的帧后,应确认它。
否定ACK-接收方收到损坏的帧或重复的帧时,它将NACK发送回发送方,并且发送方必须重新发送正确的帧。
重传:发送方维护时钟并设置超时时间。如果先前发送的数据帧的确认未在超时之前到达,则发送方重新发送该帧,则认为该帧或其确认在传输中丢失。
数据链路层可以部署三种可用的技术,以通过自动重复请求(ARQ)控制错误:
停止等待ARQ中可能会发生以下转换:
停止和等待ARQ机制没有充分利用资源。收到确认后,发送方处于空闲状态,不执行任何操作。在Go-Back-N ARQ方法中,发送方和接收方都维护一个窗口。
发送窗口的大小使发送方可以发送多个帧,而无需接收先前的确认。接收窗口使接收器可以接收多个帧并进行确认。接收器跟踪传入帧的序列号。
当发送方在窗口中发送所有帧时,它将检查接收到肯定确认的序列号。如果所有帧都得到肯定确认,则发送方发送下一组帧。如果发件人发现它已收到NACK或未收到特定帧的任何ACK,它将重新发送所有帧,此后它不会收到任何肯定的ACK。
在Go-back-N ARQ中,假定接收器没有用于其窗口大小的任何缓冲区空间,并且必须在到达时处理每个帧。这将强制发送者重新发送所有未确认的帧。
在选择性重复ARQ中,接收器在跟踪序列号的同时,将帧缓存在内存中,并仅对丢失或损坏的帧发送NACK。
在这种情况下,发送方仅发送接收到NACK的数据包。