首页 > 编程知识 正文

GBN协议和SR协议,GBN协议属于哪一层

时间:2023-05-04 11:04:30 阅读:226209 作者:1805

        GBN:回退N步协议。GBN 协议也常被称为滑动窗口协议(sliding-window protocol)。至于为什么需要限制 N 的范围,是因为这是流量控制的方法之一。Go-Back-N 回退N在回退N步协议中,fddgs发送方发送多个分组,而不需要等待确认,但他也受限与在流水线中未确认的分组数不能超过某个最大数N。

        由于传统的rdt协议利用率较低,所以我们需要改进它的性能。所以我们用到了流水线技术,流水线技术是解决这种特殊性能问题的一个非常简单的方法:不使用停等方式运行,允许发送端发送多个分组而无需等待确认。但流水线技术同样也带来了一些不便:

必须增加序号的范围。因为每个传输中的分组(不计算重传的)必须有一个唯一的序号,而且也许有多个在输送中尚未确认的分组协议的发送端和接收端也必须缓存多个分组。发送方最低限度应当能缓冲那些已发送但没有确认的分组,接收方或许也需要缓存那些已正确接收的分组所需序号范围和对缓冲的要求取决于数据传输协议如何处理丢失、损坏和延时过大的分组。

        解决流水线的差错恢复有两种基本方法,分别为  GBN) 和 选择重传(Selective Repeat, SR)

        GBN协议又叫做滑动窗口协议。所以我们就用滑动窗口的思想去理解它即可。

        下面是GBN协议发送方扩展FSM的描述:

发送方必须响应三种类型的事件:

上层的调用。当上层调用 rdt_send() 时,发送方首先检查发送窗口是否已满,即是否有 N 个已发送但未被确认的分组。如果窗口未满,则产生一个分组并将其发送,并相应地更新变量。如果窗口已满,发送方只需将数据返回给上层,隐式地指示上层该窗口已满。然后上层可能会过一会儿再试。在实际实现中,发送方更可能缓存这些数据,或者使用同步机制(如一个信号量或标志)允许上层在仅当窗口不满时才调用 rdt_send()。收到一个ACK。在 GBN 协议中,对序号为 n 的分组的确认采取累积确认(cumulative acknowledgment)的方式,表明接收方已正确接收到序号为 n 的以前且包括 n 在内的所有分组。超时事件。协议的名字“回退 N 步”来源于出现丢失和时延过长分组时发送方的行为。就像在停等协议中那样,定时器将再次用于恢复数据或确认分组的丢失。如果出现超时,发送方重传所有已发送但未被确认过的分组。上图中发送方仅使用一个定时器,如果收到了一个 ACK,但仍有已发送但未被确认的分组,则定时器被重新启动。如果没有已发送但未被确认的分组,该定时器被终止。

下图是GBN协议接收方扩展FSM描述:

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。