选择重传ARQ

选择重传ARQ 是一个自动重传请求（ARQ）的具体实例。它可以用作一个消息单元传送和确认的协议。
当用作传送消息单元的协议时，发送进程根据一个指定大小的 窗口持续发送若干帧 ，即使发送过程中丢失帧，也会继续发送。和 Go-back-N ARQ不一样，接收进程在出错后还是继续接收和确认帧。这是 滑动窗口协议 的发送和接收窗口大小大于1的一般情况。

接收进程记录它没有收到的最早的帧的序列号，并发送ACK时使用这个序列号。如果一个发送的帧没有到达接收方，发送方继续发送后面的帧，直到它填满发送窗口 。接收方持续用接收的帧填充它的接收窗口，并且每次回复一个带有序列号的ACK帧。一旦发送窗口所有帧都发送了 ，发送方重新发送的帧号与ACK对应的帧，然后继续。
发送和接收窗户的大小必须是相同的，而且最大取值最大序列号的一半（序列号是假设编号从0到 n -1），为了当所有数据包都丢失时避免出错。假设所有的ACK都丢失了，如果接收窗口大于最大序列号的一半，一些甚至可能是所有的超时重传的帧，都是不能被识别的重复发送。

在每个发送的帧得到确认后，发送方移动发送窗口。

接收窗口的尺寸不能超过序号范围的1/2，否则可能造成帧的重叠。另外，发送窗口的尺寸一般和接收窗口的尺寸相同，发送端为每一个发送缓存设置一个定时计数器，定时器一旦超时，相应输出缓存区中的帧就被重发。

Category:邏輯鏈路控制
Category:网络协议