c gobackn 代码_gobackn协议实验报告

一,描述本次实验的任务、内容和实验环境。

1

,实验内容和任务:

利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音

信道环境下。

两站点之间无差错双工通信。

信道模型为

8000bps

全双工卫星信道,

信道传播

时延

270

毫秒,信道误码率为

10-5

,信道提供字节流传输服务,网络层分组长度在

240~256

字节范围。

深刻理解数据链路层的字节填充方式的成帧技术,

误码检测的

CRC

校验技术,

及滑动窗口的工作机理。

对参数进行设计,

充分理解滑动窗口协议的工作原理并利用所学的

理论知识,经过认真的推算,计算出最优取值,并通过程序的运行进行验证。

2

,实验设备环境:

WindowsXP

环境

PC

机,

Microsoft Visual C++ 6.0

集成化开发环境。

二,

协议设计:

(1)

设计该协议的目的,基本原理

该实验协议包括物理层,数据链路层和网络层。

本实验主要设计数据链路层协议,实现有噪声环境下高信道利用率传输,采用了回退

n

帧技术的协议。接受方窗口大小为

1

,发送方窗口大小为

N

。通过捎带确认(

piggybacking

)

来完成可靠的数据通信;

由于出现信道误码而导致收帧出错时,

接受方会丢弃所有的后续帧,

待定时器超时后发送方重发。

首先从网络层接受要发送的数据包,

将之分拆成数据帧;

然后

按成帧方案完成分帧,加校验码,加

ack

等操作;再进行适当的流量判断和拥塞控制;最后

启动定时器将之传递给物理层。

数据帧经信道传送给接受方,

接受方数据链路层执行与成帧

相逆的操作;处理

ack

信息,终止定时器(或启动

ack

定时器,

ack

成帧传送);判断是否为

预期数据,数据是否出错,提交给网络层。

(2)

成帧方案,帧边界和转义字符的定义及转义方法

使用的成帧方案:含字节填充的分界符法,即让每一帧都用一些特殊的字节(

FLAG

)作

为开始和结束。

当有效载荷域中含有标志字节或转义字节时,

在每个在有效载荷域中出现的

标志字节或转义字节前均要加一个转义字节(

ESC

)。接受端的数据链路层在将数据送给网

络之前删除掉转义字节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(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)等待。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值