数据链路层的滑动窗口协议goback-n

时间:2014-01-10 10:02:52
【文件属性】:
文件名称:数据链路层的滑动窗口协议goback-n
文件大小:3KB
文件格式:C
更新时间:2014-01-10 10:02:52
gobackn (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)等待。

网友评论

  • 可以过,还是有参考价值的
  • 很不错的文件,谢谢分享。
  • 程序基本正常,就是讲解部分不是十分全面!!
  • 挺好的,就是利用率有点低,而且好像没有ACK定时器
  • 代码还算清楚,可以作为作业参考~~
  • 可以,但是没有头文件
  • 代码挺清晰的,值得参考
  • 很好用,可以交作业
  • 只有主函数,没有两个头文件,不能直接使用,但是程序还是很正确,很好
  • 整个实现完整清晰,有文本报告,内容也很详细 代码也有注释 非常好