停止等待协议 (SW)
正常情况
-
SW
即Stop and Wait
-
发送方发送分组给接收方后,必须收到接收方的
ACK
,才能发送下一个分组 - 如果接收方检测出分组有误,则发送
NAK
给发送方,要求发送方重传 - 如图:
超时重传
- 发送方的分组在传输中意外丢失,那么
- 如下
确认丢失
- 如果接收方的
ACK
丢失,发送方触发超时重传:接收方如何区别重复分组
确认迟到
- 如果接收方对
DATA0
的确认迟到,那么会导致DATA0
的重传 - 然后姗姗来迟的
ACK0
被当成了重传的DATA0
的确认分组,并开始传输DATA1
- 如果
DATA1
传输失败,但是上一个DATA0
的确认分组,会让发送方误以为是DATA1
的确认分组,从而导致分组DATA1
缺失 - 因此,需要对确认分组
ACK
也编号
缺点
- 发送方必须停止等待上一个分组确认才可以发送下一个分组,信道利用率低
回退N帧协议(GBN)
正常情况
-
GBN
即Go Back N
-
首先规定用几个比特给分组编号,如 3 个,即序号
0~7
-
发送窗口尺寸
Wt
的取值必须在1 < Wt <
2
3- 1
-
接收窗口尺寸
Wr
取值只能是1,即Wr = 1
-
位于发送窗口的分组都可以连续发送
-
当接收窗口的序号与接收分组的序号一致时,接收窗口向后滑动
累计确认
- 接收方可以对收到的分组进行累计确认
回退N帧
- 如果发送过程中出现了错误,例如 5 号分组出错被丢弃
- 那么后面的 6 ~ 1 号分组因为与接收窗口的序号不一致,也只能丢弃
- 因此需要发送方重新发送 N 帧
Wt取值过大
- 如果发送窗口大于等于
2
n- 1
,假如此处取 7,那么
缺点
- 仅有一个分组出错,就会导致其后的所有分组重传,在网络条件差的情况下,效率很低
选择重传协议(SR)
正常情况
-
SR
即Selective Request
- 首先规定用几个比特给分组编号,如 3 个,即序号
0~7
- 发送窗口尺寸
Wt
的取值必须在1 < Wt <=
2
3-1 - 接收窗口尺寸
Wr = Wt
分组丢失时
-
接收方会接收成功的分组,并尽可能的滑动接收窗口
-
发送方收到确认分组后,标记哪些分组被成功发送,并尽可能的滑动窗口
-
未收到确认分组的,发送方则触发超时重传
-
如下
Wt 取值过大
- 导致接收方无法分辨新、旧数据分组