数据链路层选择式协议C语言,数据链路层滑动窗口协议的设计与实现.docx

数据链路层滑动窗口协议的设计与实现

数据链路层滑动窗口协议的设计与实现实验报告一、实验任务及内容利用所学数据链路层原理,设计一个滑动窗口协议并在仿真环境下编程实现有噪音信道环境下的可靠的双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270 毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度在240~256字节范围。实现有噪音信道环境下的无差错传输。运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。提高滑动窗口协议信道利用率,根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK 搭载定时器的时限。实验环境Windows 7环境PC机,Microsoft Visual C++ 6.0 集成化开发环境二、协议设计协议的分层结构及层服务:包括物理层,数据链路层和网络层三层。该实验主要设计数据链路层协议,为实现有噪声环境下高信道利用率传输,我们采用回退n帧(go back n)技术的协议。发送方窗口大小为31;通过捎带确认来完成可靠的数据通信;出现信道误码导致收帧出错时,接受方丢弃所有后续帧,待定时器超时后发送方重发。该层提供服务:从网络层接受要发送的数据包,将之分拆成数据帧;按一定的成帧方案完成分帧,加校验码,加ack等操作;进行适当的流量判断和拥塞控制;启动定时器将之传递给物理层。数据帧经信道传送给接受方,接受方数据链路层执行与成帧相逆的操作;处理ack信息,终止定时器(或启动ack定时器,ack成帧传送);判断是否为欲接受数据,数据是否出错,提交给网络层。退回N步工作原理示意图:实验所形成帧(成帧方案):DATA Framen +=========+========+========+===============+========+ | KIND(1) | ACK(1) |SEQ(1) | DATA(240~256) | CRC(4) | +=========+========+========+===============+========+ ACK Frame +=========+========+========+ | KIND(1) | ACK(1) | CRC(4) | +=========+========+========+ NAK Frame +=========+========+========+ | KIND(1) | ACK(1) | CRC(4) |+=========+========+========+CRC校验和的多项式定义:本次实验采用的CRC校验方案为CRC-32,与IEEE802.3 以太网校验和生成多项式相同。生成多项式为:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1校验和附加在数据帧尾部,接受方用带校验和的数据来逻辑除以生成多项式,余数为零则数据无误码,反之有误码等待发送方重传。可靠通信和误码控制方案:通过捎带确认来完成可靠的数据通信;出现信道误码导致收帧出错时,接受方丢弃所有后续帧,此时发送方长久接受不到确认信息,引发定时器超时后发送方重发;接受方无数据传送导致发送方无法收到捎带确认时,接受方确认定时器超时,构造一确认帧单独传送。三、软件设计给出程序的数据结构,模块之间的调用关系和功能,程序流程。本次实验我们对go-back-N协议进行了编写,描述如下:数据结构:typedefenum {false,true} boolean;//bloolean typetypedef unsigned char seq_nr;//sequence or ack numberstypedef unsigned char packet[PKT_LEN];//用数组存放数据/* FRAME kind */#define Data 1#define Ack 2#define Nak 3static intphl_ready: //物理层状态next_frame_to_send; // MAX_SEQ > 1; used for outbound stream, and initianize next frame going out ack_expected; // oldest frame as yet unacknowledged, and initianize next ack expected inbound frame_expected; // next frame expected on in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值