一、可靠传输实现机制
1.停止等待协议SW
case1、确认与否认
在发送端发送数据出现误码时,接收端回复一个NAK否认码,并要求发送端再发送一次。
case2、超时重传
接收端接收不到数据分组时,发送端就会一直处于等待接受端回复ACK或NAK的状态。
这时就可以在发送端启动一个超时计时器,超时后就会重新发送数据分组。
超时重传时间一般选为 略大于从发送端到接收端的平均往返时间。
case3、确认丢失
接受端发送的ACK丢失了,此时发送端重传了数据分组,就导致了分组重复的情况。
解决方法:用一个比特(0/1)将数据分组编号,避免发送端的重复超时重传。
case4、确认迟到
接受方的ACK迟到了,发送端超时重传了数据分组,但一段时间后,第一次发送的确认分组到达了接收端,导致了重复确认的情况 . 数据链路层一般不会出现这种情况。
解决方法:对确认分组也进行编号
信道利用率: 停止等待协议的信道利用率较低。
2.后退N帧协议GBN
原理:设置一个窗口,窗口尺寸WT的取值为 :
1
<
W
T
≤
2
3
−
1
1<W_T\leq2^3-1
1<WT≤23−1
在本例中取发送窗口大小为5,并采用3个比特给分组编号,即0-7。接受窗口WR的取值为1。
接收方不一定要对收到的数据分组逐个发送确认,而是可以在收到几个数据分组后(由具体实现决定,本例中是5个)对按序到达的最后一个数据分组发送确认。ACKn表示序号为及以前的所有数据分组都已正确接收。
如果数据分组中有一个数据帧出现了错误,则丢弃该批次的所有数据分组并要求重传。
信道利用率:采用流水线传输,利用率比停止等待协议高。
3.选择重传协议SR
SR协议的接收窗口的尺寸W应大于1,以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。
发送方可在未收到接收方分组的情况下,将序号落在发送窗口内的多个数据分组发送出去。
接收方可接收未按序到达但没有无码并且序号落在接收窗口内的数据分组。
若有数据分组丢失了,并不会影响接收窗口接受其他正常的数据分组。正常接收到数据的接收窗口会返回确认分组,但是未正常接收的不会返回确认分组。当丢失的数据分组重传到达接收端后,接收端的接收窗口才能向前滑动(未到达是不允许滑动的)。发送窗口的窗口尺寸为,
1
<
W
T
≤
2
n
−
1
1<W_T\leq2^n-1
1<WT≤2n−1
接受窗口的窗口尺寸为,
1
<
W
R
≤
W
T
1<W_R\leq W_T
1<WR≤WT
当WR=1时,与后退N帧协议相同。