网络编程--数据链路层

xiaoxiao2021-02-27  252

数据链路层协议若需要提供可靠数据传输服务并确保接收端不产生缓存溢出,就需要引入流量控制与可靠数据传输机制


流量控制策略

基于速率的流量控制:在发送端限制发送数据的速率,这种机制主要解决流量控制问题,通常并不保证数据传输的可靠性;基于反馈信息的流量控制:发送方根据接收方反馈信息,判断是否可以继续发送数据帧或者重发已发送的数据帧,从而解决流量控制问题并实现可靠数据传输。

大部分数据链路层协议通常采用基于反馈信息的流量控制与可靠数据传输控制策略。


常见方法:

停止—等待协议(Stop and Wait)、后退N帧协议(GBN)和选择重传协议(SR)


停止—等待协议(Stop and Wait):发送方发完一个数据帧后,立即停止发送并等待接收方的确认信息,若收到接收方的肯定确认信息(ACK)即可发送新的数据帧;若收到否定确认信息(NAK)或未收到确认信息而超时,发送方将会重发数据帧 由于收发双方之间有传播延迟,当该延迟与数据帧的发送时间相比不能忽略时,会影响信道的利用率。假设数据帧的发送时间(传输延迟)为Ts(Ts = 数据帧长度/信道带宽)、双方的传播延迟为Tp。若不考虑确认帧的发送时间,则发送方从发送数据帧开始到确认接收方正确接收该数据帧为止,在信道没有误码的情况下,最少需要经过Ts + 2Tp时间,因此,停止—等待协议的信道利用率为Ts / ( Ts + 2Tp )。


故为了提高信道使用率。发送方在等待第一帧确认期间,如果条件允许(比如发送方缓存限制等),可以继续发送若干个数据帧,从而提高信道利用率,这种改进的方法称作滑动窗口协议(GBN,SR)

滑动窗口协议的发送方,在未收到第一个帧的确认前最多可发送的数据帧数称作发送窗口Ws,接收方最多可缓存的数据帧数称为接收窗口Wr。GBN协议的Ws > 1,Wr = 1,并且采用累积确认机制;SR协议的Ws > 1,Wr > 1,采用独立确认或累积确认机制。


GBN:

发送方在未收到确认帧的情况下,可连续发送Ws个数据帧;若收到确认帧,发送方可继续发送数据,否则停止发送并等待确认(此时未被确认帧数为Ws)。若在发送过程中出现错帧或丢失帧,发送方需重传该帧及其后已发送的所有数据帧。GBN协议中,由于Wr = 1,所以接收方只能按序接收数据帧,确认帧中的确认序号表明该序号对应的帧及之前的所有数据帧均已被接收方正确接收,即累积确认。


SR:

对于选择重传协议(SR),由于Wr > 1,所以接收方可以缓存失序的数据帧,发送端只需选择性重传未被确认的数据帧。


滑动窗口协议的信道利用率与发送窗口的大小有关,当Ws × Ts ≥ ( Ts + 2Tp )时,信道利用率为100%,否则信道利用率为Ws × Ts / ( Ts + 2Tp )。滑动窗口协议的发送窗口Ws、接收窗口Wr以及帧序号的比特数n之间需满足约束关系:Ws + Wr ≤ 2n。


无论是停止—等待协议、GBN协议还是SR协议,均需要重发未被确认或收到否定确认的数据帧,从而保证数据传输的可靠性,因此发送方需要缓存所有未收到肯定确认的数据帧,直到被确认为止。

转载请注明原文地址: https://www.6miu.com/read-2798.html

最新回复(0)