窗口滑动协议的简单理解

(哈哈,写的真心不错)本文转载自:微信ID:kaidiancs   微信公共号:开点工作室

里面有好多技术类的文章,大大多多关注


百度2015笔试中有这样一道题目:


数据链路层采用后退N帧(GBN)协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收到0、2、3号帧的确认,则发送方需要重发的帧数是(    )。

A.4    

B.2

C.3

D.5


本题考查计算机网络中的滑动窗口协议知识。


在计算机网络参考模型中,数据链路层功能包括组帧、差错控制、流量控制以及可靠数据传输等。


数据链路层协议所基于的物理层可能产生比特差错而出现帧错误,并且发送方的发送速度超过接收方的处理速度时,会导致接收方缓存溢出而产生帧丢失,因此,数据链路层协议若需要提供可靠数据传输服务并确保接收端不产生缓存溢出,就需要引入流量控制与可靠数据传输机制。流量控制策略有两种:基于速率的流量控制和基于反馈信息的流量控制。基于速率的流量控制是在发送端限制发送数据的速率,这种机制主要解决流量控制问题,通常并不保证数据传输的可靠性;基于反馈信息的流量控制是发送方根据接收方反馈信息,判断是否可以继续发送数据帧或者重发已发送的数据帧,从而解决流量控制问题并实现可靠数据传输。大部分数据链路层协议通常采用基于反馈信息的流量控制与可靠数据传输控制策略。


常见的数据链路层流量控制与可靠数据传输控制方法有:停止—等待协议(Stop and Wait)、后退N帧协议(GBN)和选择重传协议(SR)。停止—等待协议原理如下:发送方发完一个数据帧后,立即停止发送并等待接收方的确认信息,若收到接收方的肯定确认信息(ACK)即可发送新的数据帧;若收到否定确认信息(NAK)或未收到确认信息而超时,发送方将会重发数据帧。事实上,无论是停止—等待协议、GBN协议还是SR协议,均需要重发未被确认或收到否定确认的数据帧,从而保证数据传输的可靠性,因此发送方需要缓存所有未收到肯定确认的数据帧,直到被确认为止。由于收发双方之间有传播延迟,当该延迟与数据帧的发送时间相比不能忽略时,会影响信道的利用率。假设数据帧的发送时间(传输延迟)为Ts(Ts = 数据帧长度/信道带宽)、双方的传播延迟为Tp。若不考虑确认帧的发送时间,则发送方从发送数据帧开始到确认接收方正确接收该数据帧为止,在信道没有误码的情况下,最少需要经过Ts + 2Tp时间,因此,停止—等待协议的信道利用率为Ts / ( Ts + 2Tp )。


通信双方传播延迟较大时(如卫星信道),若采用停止—等待协议,信道的利用率会很低。改进的方法是:发送方在等待第一帧确认期间,如果条件允许(比如发送方缓存限制等),可以继续发送若干个数据帧,从而提高信道利用率,这种改进的方法称作滑动窗口协议,上述的GBN和SR协议均为滑动窗口协议。滑动窗口协议的发送方,在未收到第一个帧的确认前最多可发送的数据帧数称作发送窗口Ws,接收方最多可缓存的数据帧数称为接收窗口Wr。GBN协议的Ws > 1,Wr = 1,并且采用累积确认机制;SR协议的Ws > 1,Wr > 1,采用独立确认或累积确认机制。


后退N帧协议(GBN)工作原理如下:发送方在未收到确认帧的情况下,可连续发送Ws个数据帧;若收到确认帧,发送方可继续发送数据,否则停止发送并等待确认(此时未被确认帧数为Ws)。若在发送过程中出现错帧或丢失帧,发送方需重传该帧及其后已发送的所有数据帧。GBN协议中,由于Wr = 1,所以接收方只能按序接收数据帧,确认帧中的确认序号表明该序号对应的帧及之前的所有数据帧均已被接收方正确接收,即累积确认。


对于选择重传协议(SR),由于Wr > 1,所以接收方可以缓存失序的数据帧,发送端只需选择性重传未被确认的数据帧。


滑动窗口协议的信道利用率与发送窗口的大小有关,当Ws × Ts ≥ ( Ts + 2Tp )时,信道利用率为100%,否则信道利用率为Ws × Ts / ( Ts + 2Tp )。滑动窗口协议的发送窗口Ws、接收窗口Wr以及帧序号的比特数n之间需满足约束关系:Ws + Wr ≤ 2n。


该题中数据链路层采用后退N帧(GBN)协议,发送方已经发送了编号为0~7的帧。发送方收到0、2、3号帧的确认,表明3 、2、1、0号帧均已收到,但4号帧未被确认,根据GBN协议的原理,计时器超时时4、5、6、7号帧均需重发,重发帧数为4。


故正确答案是C。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
滑动窗口协议是一种基于数据链路层的协议,用于在网络中进行数据传输。它的原理是将数据分割成多个大小相同的数据包,然后通过滑动窗口的方式进行传输。 滑动窗口协议的工作过程如下: 1. 发送方将要发送的数据分割成多个数据包,并为每个数据包分配一个序号。 2. 发送方维护一个窗口,该窗口包含了可以发送的所有数据包。窗口的大小表示了发送方可以发送的最大数据包数量。 3. 发送方将窗口中的数据包发送给接收方,并等待接收方的确认信息。 4. 接收方收到数据包后,对数据包进行校验,如果数据包正确无误,则发送确认信息给发送方。 5. 发送方收到确认信息后,将窗口向前滑动一个数据包的长度,继续发送下一个数据包。 6. 如果发送方没有收到确认信息,则会超时重传该数据包。 7. 如果接收方在一定时间内未收到数据包,则会要求发送方重传该数据包。 8. 当所有数据包都被发送并且接收方已经确认了所有数据包时,传输完成。 滑动窗口协议的优点是可以提高网络传输的效率,减少了网络拥塞的可能性。同时,滑动窗口协议还支持可靠传输和流量控制,可以确保数据的完整性和正确性,防止数据的丢失和重复发送。 总之,滑动窗口协议是一种常见的数据传输协议,在网络中广泛应用。其原理是将数据分割成多个数据包,通过滑动窗口的方式进行传输,从而提高网络传输的效率和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值