Go-Back-N协议详解:网络通信中的重传机制

需积分: 0 6 下载量 116 浏览量 更新于2024-07-12 收藏 2MB PPT 举报
"Go-Back-N协议是一种网络通信协议,主要应用于数据链路层的错误检测和纠正。该协议在确保可靠传输的同时,利用多缓冲区结构提高通信效率。本资源来自于电子科技大学网络讲义,深入讲解了协议原理及其关键元素。 Go-Back-N协议的结构模型包括一个发送方的多缓冲区,其中每个缓冲区用于存储待发送或等待确认的数据单元(PDU)。新产生的PDU按照序号顺序滑入缓冲区的底部,而一旦某个PDU接收到确认,它会从缓冲区底部滑出并被销毁,其余PDU随之滑向底部。如果缓冲区顶部有空位,新的PDU会被取来封装并发送,保持通信的连续性。然而,如果超时未收到应答,发送方将采取重传策略,即重新发送缓冲区内的所有PDU。 通信协议的基础定义包括语义(Semantics)、语法(Syntax)和时序(Timing)。语义定义了不同类型的PDU及其功能,语法规定了PDU之间的信息交互格式,而时序则规定了这些交互的时间关系。协议实体是执行协议规则的实体,它们遵循三个准则:对等实体准则(信息交换仅发生在对等实体间),独立性准则(信息交换不受底层服务影响),以及透明性准则(信息交换对两端实体如同直接进行)。 协议通常包含目标、功能和算法三个部分。目标是协议要达成的意图,功能将目标分解为可实现的任务,而算法则是实现这些功能的具体步骤。协议实体通常由服务接口、算法模块和下层接口组成,服务接口向上层提供服务,算法模块负责核心功能实现,下层接口则用于适应和使用下一层提供的服务。 在不同情境中,协议可以是点对点的,涉及两个实体之间的交互,也可以是主从式,其中一个实体(如主设备)与多个从设备(非对等实体)通信。" 在Go-Back-N协议中,其核心机制是基于滑动窗口的概念,允许发送方在等待确认之前发送一定数量的数据包,提高了吞吐量。但同时,这也带来了重传的风险,如果中间有数据包丢失,可能导致整个窗口内的数据都需要重传。因此,Go-Back-N协议在效率和可靠性之间做了平衡,是ARQ(Automatic Repeat reQuest)机制的一种实现方式,适用于需要高效传输且能容忍一定延迟的环境。
2010-12-21 上传
(1)初始化。开网络层允许;ack_expected = 0(此时处于发送窗口的下沿);next_frame_to_send = 0,frame_expected = 0(初始化正在发送的帧和期待的帧序号);nbuffered = 0(进行发送窗口大小初始化);(2)等待事件发生(网络层准备好,帧到达,收到坏帧,超时)。(3)如果事件为网络层准备好,则执行以下步骤。从网络层接收一个分组,放入相应的缓冲区;发送窗口大小加1;使用缓冲区中的数据分组、next_frame_to_send和frame_expected构造帧,继续发送;next_frame_to_send加1;跳转(7);(4)如果事件为帧到达,则从物理层接收一个帧,则执行以下步骤。首先检查帧的seq域,若正是期待接收的帧(seq = frame_expected),将帧中携带的分组交给网络层,frame_expected加1;然后检查帧的ack域,若ack落于发送窗口内,表明该序号及其之前所有序号的帧均已正确收到,因此终止这些帧的计时器,修改发送窗口大小及发送窗口下沿值将这些帧去掉,继续执行步骤(7);(5)如果事件是收到坏帧,继续执行步骤(7)。(6)如果事件是超时,即:next_frame_to_send = ack_expected,从发生超时的帧开始重发发送窗口内的所有帧,然后继续执行步骤(7)。(7)若发送窗口大小小于所允许的最大值(MAX-SEQ),则可继续向网络层发送,否则则暂停继续向网络层发送,同时返回互步骤(2)等待。