TCP可靠传输的ARQ协议
基本知识
- ARQ(Automatic Repeat-reQuest)协议主要包含:停等ARQ协议、连续ARQ协议,其中连续ARQ协议是为了解决停等ARQ协议信道利用率低的问题,目前传统的连续ARQ协议有回退N帧ARQ协议、选择性重传ARQ协议。
- 注意: AQR协议的一个特点是:发送窗口的大小 <= 窗口总数
- ARQ协议通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。具体来说,如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送数据。
工作原理
- 发送方在超时发生前收到接收方的确认,这意味着帧或数据包已被正确接收,超时是接收方必须向发送方发送确认的特定时间段。
- 如果发生超时:发送方在规定时间内未收到确认,则意味着帧或数据包在传输过程中损坏或丢失。
- 发送方会重新发送数据包,这些协议确保重复这一过程,直到发送正确的数据包为止。
协议类型
ARQ 包含三个协议:停止 – 等待协议(SW),回退N帧协议(GBN),选择重传协议(SR)。
- 停止 – 等待协议(SW):发送方每发送一帧之后就必须等待接受方的确认返回,仅当接受放确认正确接收后,再继续发送下一帧。即开始下一个分组传输前必须保证当前分组被正确接受。该方法所需缓冲存储空间最小,在等待确认信号时不发送数据,导致信道利用率低,尤其是传输时延很大时,信道效率很低。
- 回退N帧协议(GBN):发送端发送完一个数据分组后,并不停下来等待确认消息,而是连续发送N个数据分组消息。当发送方接受到接受方的状态报告指示报文出错,发送方将重传过去的n个报文。该方法比停等式减少等待时间,提高吞吐率;但是一帧出错,必须重传其帧和后面n-1帧,增加了系统开销,在信道越差时,有待于确认的帧越多,可能要退回来重发很多帧,所以此方法性能不一定比停等式优越。
-
“N”:表示你一次性可以传多少个球(数据包)。比如,你一次性可以传3个球,那么“N”就是3。
-
“回退”:如果某个球丢了,你不是只重新传那个球,而是从那个球开始,重新传后面所有的球。比如,球3丢了,你重新传球3、球4、球5……直到朋友确认收到。
-
在后退N帧协议中,当接收方检测到某个帧出错后,则简单地丢弃该帧及其后所有的后续帧,发送方超时后需重传该数据帧及其后续的所有帧。这里应注意,连续ARQ协议中,接收方一般采用累积确认的方式,即接收方对按序到达的最后一个分组发送确认,因此本题中收到3的确认帧就表示编号为0、1、2、3的帧已接收,而此时发送方未收到1号帧的确认只能代表确认帧在返回的过程中丢失了,而不代表1号帧未到达接收方。因此需要重传的帧为编号是4、5、6、7的帧。
-
- 选择重传协议(SR):当发送方接受到接受方的状态报告指示报文出错时,发送方只发送出错的报文。因此必须在接受端加大缓存,以备所有序号都收到且连续然后一并交给主机。
参考文章
TCP可靠传输:ARQ协议(停止等待、超时重传、滑动窗口、回退N帧、选择重传)-CSDN博客