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

上传者: aliluya200 | 上传时间: 2021-05-05 16:49:05 | 文件大小: 3KB | 文件类型: C
(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)等待。

文件下载

评论信息

  • 猫子猪 :
    可以过,还是有参考价值的
    2015-10-08
  • 最美的时光_ :
    很不错的文件,谢谢分享。
    2015-05-15
  • 水梦伊珊 :
    程序基本正常,就是讲解部分不是十分全面!!
    2014-10-23
  • xxxxxx_RRRuby :
    挺好的,就是利用率有点低,而且好像没有ACK定时器
    2014-05-08
  • 孤独的骆驼 :
    代码还算清楚,可以作为作业参考~~
    2014-05-04
  • 遥遥远远 :
    可以,但是没有头文件
    2014-04-19
  • elani :
    代码挺清晰的,值得参考
    2014-01-03
  • 暮卷西山 :
    很好用,可以交作业
    2013-11-23
  • paoluzoutianxia :
    只有主函数,没有两个头文件,不能直接使用,但是程序还是很正确,很好
    2012-11-25
  • oBaiDu12 :
    整个实现完整清晰,有文本报告,内容也很详细 代码也有注释 非常好
    2012-11-24

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明