滑动窗口协议
滑动窗口协议是数据链路层协议,用于可靠且顺序地交付数据帧。滑动窗口也用于传输控制协议 (TCP)。
在此协议中,发送方可以在收到接收方的确认之前一次发送多个帧。术语“滑动窗口”指的是用于保存帧的虚拟框。滑动窗口方法也称为窗口技术。
工作原理
在这些协议中,发送方有一个称为发送窗口的缓冲区,接收方有一个称为接收窗口的缓冲区。
发送窗口的大小决定了出站帧的序列号。如果帧的序列号是一个 n 位字段,则可以分配的序列号范围为 0 到 2𝑛−1。因此,发送窗口的大小为 2𝑛−1。因此,为了容纳 2𝑛−1 的发送窗口大小,选择一个 n 位序列号。
序列号按模 n 编号。例如,如果发送窗口大小为 4,则序列号将为 0、1、2、3、0、1、2、3、0、1,依此类推。序列号中的位数为 2,以生成二进制序列 00、01、10、11。
接收窗口的大小是接收方一次可以接受的帧的最大数量。它决定了发送方在收到确认之前可以发送的帧的最大数量。
示例
假设我们有发送窗口和接收窗口,每个窗口的大小为 4。因此,两个窗口的序列号将为 0,1,2,3,0,1,2,依此类推。下图显示了发送帧和接收确认后窗口的位置。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
滑动窗口协议的类型
滑动窗口 ARQ(自动重传请求)协议分为两类:
后退 N ARQ
后退 N ARQ 允许在收到第一个帧的确认之前发送多个帧。它使用滑动窗口的概念,因此也称为滑动窗口协议。帧按顺序编号,并发送有限数量的帧。如果在一段时间内未收到某个帧的确认,则从该帧开始的所有帧都将重新传输。
选择重传 ARQ
此协议也允许在收到第一个帧的确认之前发送多个帧。但是,这里只重新传输错误的或丢失的帧,而正确的帧则被接收并缓冲。