传输层: 选择重传协议

选择重传协议


返回N协议简化了接收方的处理过程.接收方只需跟踪一个变量,并且不需要对失序到达的分组缓存,而是简单地把失序到达的分组它们丢掉.但是如果低下的网络层协议丢失了很多分组,那么返回N协议的效率就会很低.每当一个分组损坏,发送方就需要重传所有待确认的分组,虽然其中有些分组实际上已经完好地 被接收了.


选择重传协议(Selective-Repeat, SR)


选择重传协议只重传真正丢失的分组.


窗口

选择重传协议的接收窗口和发送窗口一样大(2^m-1) 比返回N协议的窗口(2^m)小了一倍



选择重传的接收窗口与发送窗口一样大.选择重传协议允许与接受窗口一样多的分组失序到达,并保存这些失序到达的分组,知道连续的一组分组被交付给应用层.因为发送窗口与接收窗口是相同的,所以发送出来的所有分组都可以失序到达,而且会被保留知道交付为止.但是必须强调一点,在一个可靠的协议中,接收方永远不会吧分组失序地交给应用层.在他们被交付给应用层之前,先要等待那些更早发出来的分组到达.



计时器


理论上选择重传协议要为每个分组使用一个计时器.当某个计时器超时后,只有相应的分组被重传.换而言之,返回N协议将所有的分组当做一个整体对待,而选择重传协议则分别对待每一个分组.但是大多数SR的运输层仅使用了一个计时器. 注意只使用一个计时器而做到跟踪所有发出去的分组的情况的做法是:标记发出分组,当ACK=Sf 时,将窗口滑过所有连续的已确认的分组,如果还有未确认的分组,则则重发所有检测到的未被确认的分组并重启计时器,如果所有分组都被确认了则停止计时器.

确认


在GBN中确认值(ACK) 是累计的,它定义了下一个希望接收的分组序号,同时也证实了此前所有的分组都已经被完好的接收了.在SR中,确认号(ACK)之定义完好接收的那一个分组的序号,并不反馈任何其他分组的信息.





你可能感兴趣的:(TCP/IP协议族_系列笔记)