3.4流量控制和可靠传输机制
ARQ(Auto Repeat reQuest)自动重传机制
流量控制的方法:
后两种又可以归类成滑动窗口协议,与停止等待协议并列
停止等待协议(Stop-and-Wait)
就是每发送完一个一个分组就停止发送,等待对方确认,确认后再发送下一个分组
这里的ACK(Acknowledge character)即为确认字符
1)运行过程中两种情况:
- 无差错的情况:
- 有差错的情况
1.数据帧丢失或者检测到帧出错
注意:
1.发送一个帧后,必须保留副本
2.数据帧和确认帧必须编号
- ACK丢失
- ACK迟到
2)性能分析:
简单,信道利用率低:
信道利用率=发送数据的时间/整个发送周期的时间
例题:(这个例题中没有给接受ACK的时间,所以接收时间记为0)
信道利用率和信道吞吐率的关系
后退N帧协议(Go-Back-N)
发送方按窗口中的顺序依次发送0,1,2,3,4,5帧,每发送一个帧,收到确认该帧的消息后,窗口往前移动,若发送0-3号帧,只收到了ACK2,没收到ACK0和ACK1,那么可以确认0,1,2帧都发送成功,但是如果没有收到ACK2,ACK1,ACK0,(此时发送方发送的1号帧,2号帧都被丢弃了),且在0号帧的确认帧在规定时间接收不到,那么后退到0号帧,重新发送。
2)运行过程:
3)3个需要注意的点:
1.上层调用
4)滑动窗口的长度
发送窗口:w属于(1,2^n-1)区间内
接收窗口:1
5)重点总结:
1.累计确认(就是接收到3号帧,表示0,1,2帧都收到了)
2.接收方只按顺序接收帧,其余丢弃
3.确认序号最大的,按序到达的帧
4.发送窗口为(1,2^n-1),接收窗口为1
6)性能分析
优点:比停止等待协议的信道利用率高
缺点:重传了好多不需重传的帧
选择重传协议(Selective Repeat)
采用3个比特给分组编号,序号为0 ~ 7,发送窗口大小为1 ~ 2^(3-1)
正常情况:假设发送窗口尺寸为4,发送窗口向接收窗口发送0,1,2,3个帧,接收方依次收下,然后往后滑动4个帧,接受4,5,6,7帧,依次进行
不正常情况1:发送方向接收方发送0~3数据帧,但是2号数据帧丢失了,接收方收到了0,1,3号数据帧,并把窗口往前移动两位,回复ACK0,1,3,发送窗口收到回应后向前移动两位,现在发送窗口的值为(2,3,4,5)其中3号帧会被标记为收到回复的帧,现在就剩下了4号和5号帧未发送,发送窗口再发送2号,4号和5号帧,等待接收方的回应
滑动窗口的长度:
1)发送窗口最好等于接收窗口
2)w(发送)=w(接收)=2^(n-1)(下图是2,因为帧是从0到3,用两个比特位表示,n=2)
这里的原因是如果用3位比特为帧编号,序号为0~7,最大只能选择4位的发送窗口,如果选择了5位发送窗口,先发送了0,1,2,3,4数据,接收端收到了这几帧,返回了确认字符,而ACK0未收到,所以接收窗口向前移动了5个字符,又是0,1,2,3,4帧,而由于未收到ACK0,发送窗口就又发了一边0号帧,这一帧是旧帧,而接收窗口无法区分是新帧还是旧帧。
所以发送窗口的大小最大为2^(n-1)
重点总结:
1.对数据帧逐一确认,收一个确认一个
2.只传出错的帧
3.接收方有缓存
4.接受窗口和发送窗口的大小