停止-等待协议SW-ARQ的一种
01m08s

机制:确认与否认、重传、超时重传、给数据分组编号、给确认分组编号
发送方给接收方发送一个数据分组,接收方收到后对其进行差错检测,若没有检测出误码,则接受该数据分组并给发送方发送确认分组。简记为 ACK。发送方收到对所发送数据分组的确认分组号,才能发送下一个数据分组。假设这个数据分组在传输过程中出现了误码,接收方收到后对其进行差错检测,出了物码则丢弃该数据分组,并给发送方发送否认分组,简记为 NAK。
发送方收到对所发送数据分组的否认分组后,就知道了自己之前所发送的数据分组出现了物码而被接收方丢弃,于是立刻重传该数据分组。接收方收到后对其进行差错检测,若没有检测出误码,则接受该数据分组,并给发送方发送确认分组,**因此发送方每发送来一个数据分组后,并不能立刻将该数据分组从发送缓存中删除,因为之后有可能需要重传该数据分组。只有在收到针对该数据分组的确认分组后,才能将其从发送缓存中删除。
更复杂的SW
04m48s
发送方发出时出现了丢失
点对点的数据链路层里其实不太能出现丢失的情况
但是复杂的拓扑互联网络里,路由之间可能是会的

发送方可在每发送完一个数据分组时,就启动一个超时计时器。若到了超时计时器所设置的超时重传时间 RTO,但发送方仍未收到接收方的确认分组或否认分组,就重传之前已发送过的数据分组。如图所示,这段时间是收发双方之间的平均往返时间 RTT,一般可将超时重传时间 RTO 设置为略大于收发双方的平均往返时间 RTT。当发送方的超时计时器出现超时,就立刻重传之前已发送的数据分组。接收方若正确接收到重传的数据分组,就给发送方发送相应的确认分组,发送方收到后就可以发送下一个数据分组了。接收方若正确接收到该数据分组,就给发送方发送相应的确认分组。至此,我们再确认、否认和重传这两种机制的基础上,又给停止等待协议添加了超时重传机制。
确认分组丢失
确认分组在传输过程中丢失了,这必然会造成发送方的超时重传,这样接收方就会收到两个相同的数据分组。如果接收方不能识别出所接收的数据分组与前一次接收的数据分组是重复的,则会导致分组重复这种传输差错。为了避免分组重复这种传输错误,必须给每个分组带上序号。如图所示,对于停止等待协议,由于每发送完一个数据分组就进行停止等待,只要保证每发送一个新的数据分组,其序号与上次发送的数据分组的序号不同就可以了。因此,用一个比特来编号就够了,携带序号 0 或 1,这两个接收方连续收到序号相同的数据分组时,就可识别出分组重复这种传输差错。这时,接收方应当丢弃重复的数据分组,并且还必须向发送方再发送一个确认分组。发送方收到后,可以给接收方发送下一个数据分组,其序号与上一个数据分组的序号是不同的,接收方若正确接收到该数据分组,就给发送方发送相应的确认分组。至此,我们在确认、否认和重传、超时重传这三种机制的基础上,又给停止等待协议添加了给数据分组编号的机制
- 每个分组编号,携带标识,保证只会收到一次,不会因为重传收到两次
确认分组的编号问题
发送方发送 0 号数据分组,接收方正确接收后,给发送方发送确认分组,由于某种原因,该确认分组迟到了,这必然会导致发送方对 0 号数据分组的超时重传。在 0 号数据分组的重传过程中,发送方收到了迟到的确认分组,于是给接收方发送 1 号数据分组,接收方收到重传的 0 号数据分组,根据序号可知这是重复的数据分组将其丢弃,并针对 0 号数据分组再发送一个确认分组,这样发送方就会收到两个针对 0 号数据分组的确认。然而,发送方会将第二个针对 0 号数据分组的确认误认为是针对 1 号数据分组的确认。如果给确认分组也编上序号,发送方就可以知道这是对 0 号数据分组的重复确认,忽略即可。接收方正确收到 1 号数据分组后,给发送方发送针对 1 号数据分组的确认,分组确认号为1,发送方收到后给接收方发送下一个数据分组,序号为0。请同学们注意,这个 0 号数据分组与之前的 0 号数据分组不是同一个数据分组,接收方正确接收号,给发送方发送相应的确认分组确认号为0。

注意事项,总结:


SW的信道利用率



横坐标为时间。为了简单起见,假设收发双方之间是一条直通的信道,发送方发送完一个数据分组后就停止发送,并等待接收方对该数据分组的确认。当收到确认分组后,可以发送下一个数据分组,如此反复进行。这一段时间是发送方发送数据分组所耗费的发送时延,即为 TD。这一段时间是信号在收发双方之间往返传播所耗费的时间,记为 RTT。
这一段儿时间是接收方发送确认分组所耗费的发送时延,记为TA,这是使用停止等待协议的发送方从发送一个数据分组开始到可以发送下一个数据分组为止所经历的总时间。由于仅仅是在时间 TD 内才用来传送有用的数据,也就是数据分组,因此信道利用率优,可用下式来计算, TA 一般都远小于TD,这是因为确认分组的长度一般都远小于数据分组的长度,因此 TA 可以忽略。
当信号在收发双方之间往返传播所耗费的时间 RTT 远大于数据分组的发送时间。 TD 时,例如地球同步卫星链路的 RTT 就很大。如果我们使用这样的链路而要发送的数据分组又很小且发送速率很大时,信道利用率就会很低。当 RTT 远小于数据分组的发送时间 TD 时,例如无线局域网的 RTT 一般远小于TD,此时的信道利用率还是比较高的。需要说明的是,上述推导未考虑出现超时重传的情况,若出现超时重传,对于传送有用的数据信息来说,信道利用率还要降低。
综上所述,在往返时间 RTT 相对较大的情况下,为了提高信道利用率,收发双方不适合采用停止等待协议,而可以选择使用回退 n 真协议或选择重传协议。
例题
14m13s

总结
