在OSI模型的物理层,实现了传输但是仍没有实现通信。
通信至少需要两个一起工作的设备,一个发送一个接收,同时双方还需要大量的协调工作。
数据链路层控制是实现了通信中的线路规程、流量控制和错误控制等功能。
数据链路层的线路规程功能
数据链路层的线路规程功能监视链路的建立,以及给定时刻一个具体设备进行数据传送的权力。
数据规程可以以两种方式实现::询问/应答(ENQ/ACK)方式 和轮询/选择方式。第一种方式在对等式通信中采用,第二种方式 在主从式通信中采用。
询问/应答模式(ENQ/ACK)应用在当两个设备之间存在一条 专用链路时的情况下。它负责协调哪个设备可以开始传输以及预期 的接收方是否已经就绪并可以进行接收。
在半双工和全双工传输下,启动设备建立会话过程。在半双工 传输中,启动方在响应方等待时就将数据发送出去;响应方在启动方 结束操作或要求一个回应时可以接管链路控制。在全双工传输中,一 旦会话建立,两个设备就可以同时进行传送。
轮询/选择模式是在以一个设备设计为主设备而其它设备为从 设备的拓扑结构中采用的。因此,既需要确定设备是否就绪,还需 要确定信道的使用权问题。
主设备控制链路,总是会话的发起者,从设备遵从其指令工作。 如果主设备希望接收数据,它将询问从设备是否有数据待发送,这个 过程称为轮询;如果主设备希望发送数据,它告知目标从设备准备好 接收数据,这个过程称为选择。
在多点链路中,每个设备都有一个不同的地址。在任何一次传输中,这个地址会在每一帧数据的地址域或报文头出现。
当主设备有数据待发送时采用选择模式。在发送数据前,主设备 产生并发送一个选择帧(SEL),如果相应的从设备当前是激活的并 且正在运行,就向主设备返回一个肯定应答帧(ACK),然后主设备 可以开始发送数据。
当主设备请求从设备进行传输采用轮询模式。当询问到达从设 备时,它如果没有数据要发送,就发回一个否定应答(NAK),否则 就发送数据帧。这设备读入该数据帧后向从设备返回一个应答帧( ACK)来确认已经接收。
流量控制是指一组过程,这组过程被用来被用来限制在等待应答前通过传输链路的数据量。
在控制通过传输链路的数据流量上采用两种方法:停等协议和 滑动窗口协议。
在停等协议中,发送方每发出一帧后就等待一个应答帧。只有 当收到应答信号后,才发送下一帧,直到发送方发送了一个传输结 束帧(EOT)。
停等协议实现简单,采用半双工工作模式,效率比较低。
在滑动窗口协议中,发送方在收到应答消息前可以发送若干帧 数据,使用一个ACK帧来对多个数据帧的接收进行确认。
滑动窗口协议需要发送方和接收方都要创建额外的缓冲区。这 个窗口可以在收发两方存储数据帧,并且对收到应答之前可以传输 的数据帧的数目进行了限制。
- 发送窗口
当数据帧发送出去时,发送窗口从左面开始收缩。当应答来到 时,发送窗口向右方扩展。
- 接收窗口
当接收数据帧时,接收窗口从左面开始收缩。当应答来到时, 发送窗口向右方扩展。
- 实例
为了更好地区分帧编号,窗口的大小应该比模数小1。