
以太网层的滑动窗口协议Goback-n
5星
- 浏览量: 0
- 大小:None
- 文件类型:C
简介:
初始化阶段。首先设置网络层的接受状态;定义ack_expected变量为0(此时处于发送窗口下沿);设定next_frame_to_send和frame_expected均为0(表示正在处理的帧序号及预期的帧数);同时将nbuffered设为0以进行发送窗口大小的初始配置。(2)等待特定事件的发生,包括网络层准备好、数据包到达或接收到损坏的帧以及发生超时的情况。(3)当接收到网络层准备好事件时,执行以下操作:接收一个分组并存入相应的缓冲区;增加发送窗口的容量;利用缓冲区中的数据分组、next_frame_to_send变量及frame_expected值生成所需的帧,并继续发送;将next_frame_to_send增1后转至步骤(7)。(4)若接收到数据包到达事件,则从物理层接收一个数据框,执行以下操作:检查该数据框的seq字段,确认其是否为当前预期的接收到的数据框序号;若是,则将数据框中的分组交由网络层处理,并将frame_expected增1;接着查看ack字段,若其处于发送窗口范围内,则表示所有预期接收的数据框均已正确接收到。此时应终止这些数据框的计时器功能,调整发送窗口大小及下沿位置以移除相关数据框,并转至步骤(7)。(5)若接收到损坏帧事件,则直接跳转至步骤(7)。如果发生超时事件且next_frame_to_send等于ack_expected值,则从最近一次超时的帧开始重新发送所有需要发送的数据框,随后继续执行步骤(7)。(6)当发送窗口大小已达到允许的最大容量MAX-SEQ限制时,应暂停进一步向网络层发送数据;同时返回至步骤(2),等待事件再次发生。
全部评论 (0)
还没有任何评论哟~


