停止等待协议的意义
除了比特出差错,底层信道还会出现丢包问题。为了实现流量控制。
停止等待协议的前提
虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
“停止-等待”就是每发送完一个分组就停止发送,等待对方确认,在收到确认后再发送下一个分组。
停止等待协议的实际应用情况
分为无差错情况&有差错情况:
无差错情况
没有帧错或者丢帧情况。
有差错情况
1. 数据帧丢失或检测到帧出错
发送方每发送一帧,会通过计时器设置一个时间上限,接收方未收到帧或者收到帧之后检测到帧错后就无法传回确认该帧收到的确认帧。发送方到达时间上限之后,重新发送一次该帧。
这样就要求发送方:
1.1 发送完一个帧后,必须保留它的副本。
1.2 数据帧和确认帧必须编号
2. 确认帧ACK丢失
接收方发送确认帧如果发送错误或者发送失败,还是会触发发送方的超时重传机制,这样接收方再次收到之前已经收到的帧之后,就会把这个重复的帧丢弃,并再传一遍确认帧。
3. 确认帧ACK迟到
假如发送方发送第一帧A1,接收方收到A之后返回确认帧ackA1,但是因为种种原因,ackA1晚于发送方设置的时间上限到达发送方,这样发送方在到达时间上限之后又发发送了一遍A2,这样接收方在收到了A2之后同上一种情况一样,丢弃重复帧并返回确认帧ackA2,无论ackA1和ackA2谁先到达发送方,假设为ackA1先回到了发送方,发送方都会知道,帧A发送成功了,就会继续发送帧B,但是过后还会收到ackA2,发送方就会把ackA2丢弃。
停止等待协议优劣
优势: 简单
劣势: 信道利用率太低
信道利用率
发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
假设发送方的发送时延是,接收方发送确认帧的确认时延为,往返时延为,那么信道利用率为:
也可以表示为:
其中T为发送周期,L表示的发送的比特数量,C指发送速率。
信道吞吐率
信道吞吐率 = 信道利用率 * 发送方的发送速率