今天看啥  ›  专栏  ›  FrankerSung

数据链路层--滑动窗口--后退N帧协议

FrankerSung  · 简书  ·  · 2019-04-04 22:03

后退N帧协议(Go Back N)

发送窗口 :发送方维持一组连续的允许发送的帧的序号。


滑动窗口

接收窗口 :接收方维持一组连续的允许接收帧的序号。

GBN发送方必须响应的三件事

  1. 上层的调用
    上层要发送数据时,发送方先检查发送窗口是否已满,
    如果未满,则产生一个帧并将其发送;
    如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。
    (实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
  2. 收到了一个ACK
    GBN协议中,对n号帧的确认采用累积确认的方式,标明接收方已经收到n号帧和它之前的全部帧。
  3. 超时事件
    协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。
    就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。
    如果出现超时,发送方重传所有已发送但未被确认的帧。

GBN接收方要做的事

  1. 如果正确收到n号帧,并且按序,那么接收方为这个n帧发送一个ACK,并将该帧中的数据部分交付给上层。
  2. 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息:expectedseqnum (下一个按序接收的帧序号)。

滑动窗口长度

窗口长度可以无限吗? 你想得美!
若采用n个比特对帧编号,那么发送窗口的尺寸Wt应满足:1 ≤ WT ≤ 2n-1。
因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。

Choosing a Window size(N)
There are a few things to keep in mind when choosing a value for N:
The sender must not transmit too fast. N should be bounded by the receiver’s ability to process packets.
N must be smaller than the number of sequence numbers (if they are numbered from zero to N) to verify transmission in cases of any packet (any data or ACK packet) being dropped.
Given the bounds presented in (1) and (2), choose N to be the largest number possible.

GBN协议总结

  1. 累积确认(偶尔捎带确认)
  2. 接收方只按顺序接收帧,不按序无情丢弃
  3. 确认序号最大的、按序到达的帧
  4. 发送窗口最大为2n-1,接收窗口大小为1

例题:
数据链路层采用了后退N帧(GBN )协议,发送方已经发送了编号为0~7的帧。当计时器超时时,若发送方只收0、2、3号帧的确认,则发送方需要重发的帧数是( )。
A . 2 B . 3 C . 4 D . 5
重新发送4、5、6、7帧

GBN协议优缺点

优点:因连续发送数据帧而提高了信道利用率
缺点:在重传时必须把原來已经正确传送的数据帧重传,从而降低了传送效率。


reference
《王道MOOC计网》




原文地址:访问原文地址
快照地址: 访问文章快照