当前位置:文档之家› 实验一 滑动窗口协议实验

实验一 滑动窗口协议实验

实验一滑动窗口协议实验

◆实验目的:

在NetRiver实验系统中,用C语言实现滑动窗口协议中的1比特滑动窗口协议和后退N帧协议,理解滑动窗口协议

◆实验原理和说明:

(1).窗口机制

滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举一个例子(假设发送窗口尺寸为2,接收窗口尺寸为1):

分析:①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;⑤发送方收到接收方发来的0号帧确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;⑥发送方继续发送2号帧,2号窗口打开,表示2号帧也纳入待确认之列。至此,发送方打开的窗口又已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧,此时接收窗口状态仍不变;⑦接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;⑧发送方收到接收方发来的1号帧收毕的确认信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。

若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退n协议:发窗口>1,接收窗口>1;选择重传协议:发送窗口>1,接收窗口>1。

(2).1比特滑动窗口协议

当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。

(3).后退n协议

由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。

从这里不难看出,后退n协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。此协议中的发送窗口的大小为k,接收窗口仍是1。

(4).选择重传协议

在后退n协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图所示。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。

实验代码以及代码说明:

实现代码如下:

#include"sysinclude.h"

#include

using std :: deque;

using std :: cout;

using std :: endl;

using namespace std;

extern void SendFRAMEPacket(unsigned char* pData, unsigned int len);

#define WINDOW_SIZE_STOP_WAIT 1

#define WINDOW_SIZE_BACK_N_FRAME 4 /* the max windows size */

typedef enum {data, ack, nak} frame_kind;

/* define the structure of frame and frame head */

typedef struct frame_head {

frame_kind kind;

unsigned int seq;

unsigned int ack;

unsigned char data[100];

};

typedef struct frame {

frame_head head;

unsigned int size;

};

/* define the buffer zone */

struct StoreType {

frame *pfrm;

unsigned int sz;

};

deque mQue;

deque mQue2;

bool sendWinFull = false;

int counter = 0;

/*

* 停等协议测试函数

*/

int stud_slide_window_stop_and_wait(char *pBuffer, int bufferSize, UINT8 messageType) {

unsigned int ack;

unsigned int num;

StoreType s;

/* by the messagetype to decide */

switch(messageType) {

case MSG_TYPE_TIMEOUT:

num = ntohl(*(unsigned int *)pBuffer);

s = mQue.front();

/* if the seq is OK,send it */

if (num == ((* s.pfrm).head.seq)) {

SendFRAMEPacket((unsigned char *)(s.pfrm), s.sz);

}

break;

case MSG_TYPE_SEND:

/* prepare a new frame */

s.pfrm = new frame;

(*s.pfrm) = *(frame *)pBuffer;

s.sz = bufferSize;

mQue.push_back(s);

/* send all the data in buffer */

if (!sendWinFull) {

s = mQue.front();

SendFRAMEPacket((unsigned char *)(s.pfrm), s.sz);

sendWinFull = true;

}

break;

case MSG_TYPE_RECEIVE:

/* receive ack */

ack = ntohl(((frame *)pBuffer)->head.ack);

if (mQue.size() != 0) {

s = mQue.front();

if (ntohl(s.pfrm->head.seq) == ack) /* receive right ack seq number */

{

mQue.pop_front();

s = mQue.front();

SendFRAMEPacket(((unsigned char *)s.pfrm), s.sz);/* send frames again */ }

}

else

{

sendWinFull = true; /* databuffer is empty */

}

break;

}

return 0;

}

/*

* 回退n帧测试函数

*/

int stud_slide_window_back_n_frame(char *pBuffer, int bufferSize, UINT8 messageType) {

int ack;

int num;

int j; /* var used in loop as number */

int k;

StoreType s;/* next is to choose from the vars */

switch (messageType)

{

case MSG_TYPE_TIMEOUT:

num = ntohl(*(unsigned int *)pBuffer); /* data change */

for (j = 0; j < mQue2.size() && j < WINDOW_SIZE_BACK_N_FRAME; j++) {

s = mQue2[j];

if ((*s.pfrm).head.seq == num)

break;

}

for (k = j; k < WINDOW_SIZE_BACK_N_FRAME && k < mQue2.size(); k++) { s = mQue2[k];

SendFRAMEPacket((unsigned char *)(s.pfrm), s.sz);/* resend frames */ }

break;

case MSG_TYPE_SEND:

s.pfrm = new frame;

(*s.pfrm) = *(frame *)pBuffer;

s.sz = bufferSize;

mQue2.push_back(s);

if (counter < 4)

{

s = mQue2.back();/* send the N frames */

SendFRAMEPacket((unsigned char *)(s.pfrm), s.sz);

counter++;/* start the counter */

}

break;

case MSIG_TYPE_RECEVE:

ack = ((frame *)pBuffer)->head.ack;/* receive correct ack */

for (j = 0; j < WINDOW_SIZE_BACK_N_FRAME && j < mQue2.size(); j++) {

s = mQue2[j];

if (ack == (*s.pfrm).head.seq)

{

break;

}

}

if (j < mQue2.size() && j < WINDOW_SIZE_BACK_N_FRAME)

{

for (k = 0; k <= j; k++)

{

mQue2.pop_front();

counter--; /* reset cuounter */

}

}

k = counter;

for (; k < WINDOW_SIZE_BACK_N_FRAME && k < mQue2.size() && counter < 4; k++)

{

s = mQue2[k];

SendFRAMEPacket((unsigned char *)(s.pfrm), s.sz);/* continue send frames */

counter++;

}

break;

}

return 0;

}

/*

* 选择性重传测试函数

*/

int stud_slide_window_choice_frame_resend(char *pBuffer, int bufferSize, UINT8 messageType) {

return 0;

在实现1比特协议中,利用函数参数messageType传递的参数MSG_TYPE_TIMEOUT,MSG_TYPE_SEND和MSG_TYPE_RECEIVE,因此在函数主体中用switch进行分类,对应不同参数下的函数响应。

首先定义帧头、帧的结构,定义一个缓冲区,然后利用缓冲区的数据组装帧并调用发送函数发送组好的帧。然后利用返回的MessageType参数实现分类。在收到超时选项时,重新发送该帧(帧序号是ack),如果收到系统要发送帧,直接对缓冲区的帧进行发送;如果收到的是接受帧的确认号,先进行转换,然后对比看是否相同,如果相同并且缓冲区还没有空,继续发送,否则调用发送函数重发该帧。

在后退N帧函数中,实现的窗口大小设置为WINDOW_SIZE_BACK_N_FRAME 4,主体实现框架同一比特滑动窗口,只是多了两个计数器,分别用来记录发出的帧的seq和收到的ack。在switch语句中,对于MessageType传递的参数来作出相应的响应:①当传回的参数为超时时,先调用ntohl函数进行数据转换,再利用超时的帧号与窗口大小找到相应要重传的帧(最大帧号不超过窗口大小);然后开始使用for循环依次发送这些帧。②传回的参数为要发送帧时,取缓冲区的数据构建新帧,然后把构建的帧缓存,启动计数器counter,开始发送帧,每发送一个帧,counter累加(不能超过窗口大小)。③参数为收到帧确认时,如果每一个ack号都是已经发送的帧头(在缓冲区里)的seq(ack=((frame*)pBuffer)->head.ack)相同,继续发送下一组帧。发送下一组帧之前先重新编排帧号,counte r也相应重新编排。在队列里如果序号k小于窗口大小并且counter小于4,用队列mQue2里的s开始继续发送帧。

总结:

整体来说,滑动窗口在实验中是固定的,这样便于处理帧号和ack的确认以及存储。由于实验中实现的后退N帧还是利用了messageType参数,在未收到确认帧的时候只能选择重发滑动窗口中的帧,在帧完全确认接收正确以后才能发送新帧,这样实际运行起来效率会比较低(系统必须等待对方的确认)。

课程设计报告滑动窗口协议仿真

课程设计报告滑动窗口 协议仿真 公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

滁州学院 课程设计报告课程名称:计算机网络 设计题目:滑动窗口协议仿真 系别:计算机与信息工程学院 专业:计算机科学与技术 组别:第五组 起止日期: 2011年11月24日~2011年12月7日 指导教师:赵国柱 计算机与信息工程学院二○一一年制

课程设计任务书 一. 引言 二. 基本原理 窗口机制 1bit滑动窗口协议

后退N协议 选择重传协议 流量控制 三. 需求分析 课程设计题目 开发环境 运行环境 课程设计任务及要求 界面要求 网络接口要求 四. 详细设计 结构体的定义 发送方的主要函数 接受方的主要函数 五. 源代码 发送方的主要代码 接收方的主要代码 六. 调试与操作说明 致谢 [参考文献] 课程设计的主要内容1.引言

早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送ack 确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。 2.基本原理 窗口机制

实验三 动压滑动轴承实验

实验三动压滑动轴承实验 一、实验目的 1.验证动压滑动轴承油膜压力分布规律,了解影响油膜压力分布规律的因素,并根据油膜压力分布曲线确定端泄影响系数K b; 2.测定动压滑动轴承的摩擦特征曲线,并考察影响摩擦系数的因素。 二、实验设备及仪器 1.HZS-1型动压滑动轴承试验台 图1 HZS-1型动压滑动轴承实验台 图1为试验台总体布置,图中件号1为试验的轴承箱,通过联轴器与变速箱7相联,6为液压箱,装于底座9的内部,12为调速电动机,通过三角带与变速箱输入轴相联,8为调速电机控制旋钮,5为加载油腔压力表,由減压阀4控制油腔压力,2为轴承供油压力表,由减压阀控制其压力,油泵电机开关为10,主电机开关为11,试验台的总开关在其正面下方。 图2为试验轴承箱,件号31为主轴,由一对D级滚动轴承支承,32为试验轴承,空套在主轴上,轴承内径d=60mm,有效宽度=60mm。在轴承中间横剖面上,沿周向开7个测压孔,在120°范围内的均匀分布,测压表21~27通过管路分别与测压孔相联。距轴承中间剖面L/4(15mm)处,轴承上端有一个测压孔,表头28与其相联,件号33为加载盖板,固定在箱体上,加载油腔在水平面上的投影面积为60cm2在轴承外圆左侧装有测杆35,环34装在测杆上以供测量摩擦力矩用,环34与轴承中心的距离为150mm,轴承外圆上装有两个平衡锤36,用以在轴承安装前做静平衡。

图2 实验轴承箱 箱体左侧装有一个重锤式拉力计如图3所示,测量摩擦力矩时,将拉力计上的吊钩与环34联接,即可测得摩擦力矩。测杆通过环34作用在拉力计上的力F,由重锤予以平衡,其 数值可由 α sin 1 R WL F= 求得。式中R为圆盘半径,W为重锤之重量,L1为重锤重心到轴 心之距离,α为圆盘之转角,圆盘转角α通过齿轮放大,可使表头指针转角放大10倍,表头刻度即为F的实际值,单位为克。 JZT型调速电动机的可靠调速范围为120~1200转/分,为了扩大调速范围,试验台传动系统中有一个两级变速箱,当手柄向右倾斜,主轴与电机转速相同;当手柄向右倾斜,主轴为电机转速的1/6。因此主轴的可靠调速范围为20~1200转/分。 图3 重锤式拉力计工作原理图 2.测速仪表及温度计 三、实验步骤 1. 测定动压滑动轴承的油膜压力分布,确定轴承端泄影响系数K b

数字图像处理实验报告

数字图像处理实验报告

实验一 数字图像的基本操作和灰度变换 一、 实验目的 1. 了解数字图像的基本数据结构 2. 熟悉Matlab 中数字图像处理的基本函数和基本使用方法 3. 掌握图像灰度变换的基本理论和实现方法 4. 掌握直方图均衡化增强的基本理论和实现方法 二、实验原理 1. 图像灰度的线性变换 灰度的线性变换可以突出图像中的重要信息。通常情况下,处理前后的图像灰度级是相同的,即处理前后的图像灰度级都为[0,255]。那么,从原理上讲,我们就只能通过抑制非重要信息的对比度来腾出空间给重要信息进行对比度展宽。 设原图像的灰度为),(j i f ,处理后的图像的灰度为),(j i g ,对比度线性展宽的原理示意图如图1.1所示。假设原图像中我们关心的景物的灰度分布在[a f , b f ]区间内,处理后的图像中,我们关心的景物的灰度分布在[a g ,b g ]区间内。在这里)(a b g g g -=?()b a f f f >?=-,也就是说我们所关心的景物的灰度级得到了展宽。 根据图中所示的映射关系中分段直线的斜率我们可以得出线性对比度展 b g a g a b )j 图1.1 对比度线性变换关系

宽的计算公式: ),(j i f α, a f j i f <≤),(0 =),(j i g a a g f j i f b +-)),((, b a f j i f f <≤).,( (1-1) b b g f j i f c +-)),((, 255),(<≤j i f f b (m i ,3,2,1 =;n j ,3,2,1 =) 其中,a a f g a = ,a b a b f f g g b --=,b b f g c --=255255,图像的大小为m ×n 。 2. 直方图均衡化 直方图均衡化是将原始图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。 离散图像均衡化处理可通过变换函数: 来实现。 三、实验步骤 1.图像灰度线性变换的实现 (1)读入一幅灰度图像test1.tif ,显示其灰度直方图。 新建M 文件,Untitled1.m ,编辑代码如下。 得到读入图像test1和它的灰度直方图。

滑动窗口协议分析与实现

滑动窗口协议分析与实现 目录 1 引言 (2) 1.1 滑动窗口协议概述 (2) 1.2 本次设计任务 (2) 2 滑动窗口协议介绍 (3) 2.1 滑动窗口协议工作原理 (3)

1 引言 1.1 滑动窗口协议概述 滑动窗口协议可能是计算机网络中最著名的算法,它是TCP使用的一种流量控制方法。滑动窗口协议也称为回退N步协议Go-Back-N(GBN)协议,它可以有三个不同的功能,第一个功能,即在不可靠链路上可靠地传输帧。(一般来说,该算法被用于在一个不可靠的网络上可靠地传输消息。)这是该算法的核心功能。 滑动窗口算法的第二个功能是用于保持帧的传输顺序。这在接收方比较容易实现,因为每个帧有一个序号,接收方要保证已经向上层协议传递了所有序号比当前帧小的帧,才向上传送该当前帧。即,接收方缓存了(即没有传送)错序的帧。 滑动窗口算法的第三个功能是,它有时支持流量控制(flowcontrol),它是一种接收方能够控制发送方使其降低速度的反馈机制。这种机制用于抑制发送方发送速度过快,即抑制传输比接收方所能处理的更多的数据。 滑动窗口协议,允许发送方传输多个分组而不需等待确认,但它也受限于在流水账中未确认的分组数不能超过最大允许数N。只有在接收窗口向前滑动,即接收方向发送方发送了确认反馈,同时发送方收到确认消息时,发送窗口才能向前滑动。 1.2 本次设计任务 本次的设计任务是根据滑动窗口协议的工作原理,在WebRTC的基础上,用C++语言编写一个滑动窗口协议的程序。 要求该程序实现滑动窗口协议的基本功能功能,如:发送帧被接收与否的判断,帧超时重发,帧缓存等。同时需要设计一个测试机制,以检测该程序的正确性、可靠性。

课程设计报告-滑动窗口协议仿真

滁州学院 课程设计报告 课程名称:计算机网络 设计题目:滑动窗口协议仿真 系别:计算机与信息工程学院 专业:计算机科学与技术 组别:第五组 起止日期: 2011年11月24日~2011年12月7日指导教师:赵国柱 计算机与信息工程学院二○一一年制

课程设计任务书

一. 引言 二. 基本原理 2.1 窗口机制 2.2 1bit滑动窗口协议 2.3 后退N协议 2.4 选择重传协议 2.5 流量控制 三. 需求分析 3.1 课程设计题目 3.2 开发环境 3.3 运行环境 3.4 课程设计任务及要求 3.5 界面要求 3.6 网络接口要求 四. 详细设计 4.1 结构体的定义 4.2 发送方的主要函数 4.3 接受方的主要函数 五.源代码 5.1 发送方的主要代码 5.2 接收方的主要代码 六. 调试与操作说明 致谢 [参考文献] 课程设计的主要内容

1.引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家 不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在 数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快, 接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些 问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认 才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ 协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一 个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack 对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第 3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落, 只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重 传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们, 存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后, 就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。 2.基本原理 2.1 窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接受方为其窗口内的每一个序号保留了一个缓冲区。与每个缓冲区相关联的还有一位,用来指明该缓冲区是满的还是空的。 若从滑动窗口的观点来统一看待1比特滑动窗口、后退n及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1比特滑动窗口协议:发送窗口=1,接收窗口=1;后退N协议:发送窗口>1,接收窗口=1;选择重传协议:发送窗口>1,接收窗口>1。 2.2 1bit滑动窗口协议 当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。

gobackn协议实验报告

一个数据帧如图所示: 其中有效数据和校验码可能含有转义字符。 (3) 帧中各个字段的定义和编码,计算CRC校验和的多项式定义 帧的定义编码:帧中的第一比特为开头FLAG,第二比特是帧的类型,共定义了{data,ack,nak} frame_kind三种类型,用枚举常量表述,第三比特是顺序编码,用于确定到达帧的顺序,第四比特是ACK捎带确认讯息,记录了当前已收到帧的确认情况,这是数据帧的头部。若为数据帧,从第五比特开始为网路层的数据,到网路层包裹信息结束后,接上4比特的CRC校验讯息,后有一结束字符FLAG表明该帧结束。 CRC校验数:CRC校验数据由函数crc32()产生,函数crc32()返回一个32位整数为数据生成CRC-32校验和,并且把这 32比特校验和附在数据字节之后。 多项式定义:采用的CRC校验方案为CRC-32,生成多项式为: x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1 校验和附加在数据帧尾部,接受方用带校验和的数据来逻辑除以生成多项式,余数为零则数据无误码,反之有误码等待发送方重传。 (4) 协议工作时两个站点之间信息交换的过程控制,尤其是发生误码条件下的控制方案 协议工作时,两个站点通过互发数据包交换数据,而控制讯息则稍带在数据讯息中传递,当遇到超时情况时,则主动发送空数据包以提供讯息。 当出现帧丢失时,如收到帧的序号有跳跃,或者出现CRC校验出错丢弃了某帧,会主动发送NAK否定帧,提示重传,接收方丢弃所有的后续帧。若长期未产生放送消息,则出现ACK超时事件,主动发送ACK帧提示确认,对方收到确认后,滑动窗口继续发送,若一直未收到确认讯息,则出现数据帧超时事件,发送方会自动重发未确认帧。 11.3 软件设计 给出程序的数据结构,模块之间的调用关系和功能,程序流程。 (1)数据结构:数据结构是整个程序的要点之一,程序维护者充分了解数据结构就可以对主 要算法和处理流程有个基本的理解。描述程序中自定义结构体中各成员的用途,定义的全局变量和主函数中的变量的变量名和变量所起的作用。 采用字符数组结构来存放数据帧:

课程设计报告滑动窗口协议仿真

滁州学院 课程设计报告 课程名称: 计算机网络 第五组 起止日期:2011年n 月24 口~2011年12月7 n 指导教师: 设计题目: 滑动窗口协议仿贞 别: 计算机与信息工程学院 业: 计算机科学与技术 计算机与信息工程学院二O —一年制 别: 赵国柱

课程设计任务书 一.引言二-基本原理 窗口机制 Ibit滑动窗口协议后退N协议选择重传协议流量控制三.需求分析 课程设计题目开发环境

运行环境 课程设计任务及要求 界面要求 网络接口要求 0. 详细设计 结构体的定义 发送方的主要函数 接受方的主要函数 五. 源代码 发送方的主要代码 接收方的主要代码 调试与操作说明 致谢 [参考文献] 课程设计的主要内容 L引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能來不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是Ibit滑动窗口协议,一次只发送一个帧, 等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送 ack确认,而是收到儿个帧后,对按序到达的最后一个帧发送ack确认。 同Ibit滑动窗口协议相比,大大减少了 ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了 5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,乂提出了

滑动轴承实验指导书(更新并附实验报告)

滑动轴承实验 一、概述 滑动轴承用于支承转动零件,是一种在机械中被广泛应用的重要零部件。根据轴承的工作原理,滑动轴承属于滑动摩擦类型。滑动轴承中的润滑油若能形成一定的油膜厚度而将作相对转动的轴承与轴颈表面分开,则运动副表面就不发生接触,从而降低摩擦、减少磨损,延长轴承的使用寿命。 根据流体润滑形成原理的不同,润滑油膜分为流体静压润滑(外部供压式)及流体动压润滑(内部自生式),本章讨论流体动压轴承实验。 流体动压润滑轴承其工作原理是通过韧颈旋转,借助流体粘性将润滑油带人轴颈与轴瓦配合表面的收敛楔形间隙内,由于润滑油由大端人口至小端出口的流动过程中必须满足流体流动连续性条件,从而润滑油在间隙内就自然形成周向油膜压力(见图1),在油膜压力作用下,轴颈由图l(a)所示的位置被推向图1(b)所示的位置。 图1 动压油膜的形成 当动压油膜的压力p 在载荷F 方向分力的合力与载荷F 平衡时,轴颈中心处于某一相应稳定的平衡位置O 1,O 1位置的坐标为O 1(e ,Φ)。其中e =OO 1,称为偏心距;Φ为偏位角(轴承中心O 与轴颈中心O 1连线与外载荷F 作用线间的夹角)。 随着轴承载荷、转速、润滑油种类等参数的变化以及轴承几何参数(如宽径比、相对间隙)的不同.轴颈中心的位置也随之发生变化。对处于工况参数随时间变化下工作的非稳态滑动轴承,轴心的轨迹将形成一条轴心轨迹图。 为了保证形成完全的液体摩擦状态,对于实际的工程表面,最小油膜厚度必须满足下列条件: ()21min Z z R R S h += (1) 式中,S 为安全系数,通常取S ≥2;R z1,R Z2分别为轴颈和铀瓦孔表面粗糙度的十点高度。 滑动轴承实验是分析滑动轴承承载机理的基本实验,它是分析与研究轴承的润滑特性以及进行滑动轴承创新性设计的重要实践基础。 根据要求不同,滑动轴承实验分为基本型、综合设计型和研究创新型三种类型。

图像处理实验报告模板

桂林电子科技大学 实验报告 一、实验目的 1、掌握基本的图像处理方法,包括读取、写入、显示、剪切、运算以及快操作 等等。 2、掌握常用的图像变换方法,分析变换结果。 二、实验内容 编写程序,在Matlab下调试运行,并注意观察分析结果。 1、使用imread函数分别读入图象cameraman.tif 、canoe.tif,并使用subplot 和imshow函数进行显示。再使用imcrop对第一幅图片进行剪切,并保存成文件。 2、申明向量X和矩阵A,使用二维傅立叶变换和fftshift函数进行处理,观察向量和矩阵结果。 3、创建一个1000*1000的全0图像,其中选择某矩形区域设置其象素为1(350:649,475:524),对该二值图逆时针旋转45°角,比较旋转前后的图像和傅里叶变换频谱。 三、实验设备、环境 计算机 四、实验原理 1、图像平滑算法 (1) 简单平均法:

设某像素的灰度值为,迭加噪声后,一幅含噪声的图像可表示为 现取以为中心的邻域S ——NN 方形窗口,在S 域内进行局部平均,得 式中,N 的平方为窗口内像素总数。令 ,则 式中,加权函数 (2)中值滤波: 中值滤波是一种非线性的信号处理方法。中值滤波器在1971 年由J.w.Jukey 首先提出并应用在一维信号处理技术(时间序列分析)中,后来被二维图象信号处理技术所引用。中值滤波在一定的条件下可以克服线性滤波器如最小均方滤波、均直滤波等带来的图象细节模糊,而且对滤除脉冲干扰及图象扫描噪声最为有效。由于在实际运算过程中不需要图象的统计特征,因此这也带来不少方便。但是对于一些细节多,特别是点、线、尖顶细节多的图象不宜采用中值滤波。中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各点灰度值的中值来替代值定点(一般是窗口的中心点)的灰度值。对于奇数个元素,中值是指按大小排序后,中间的数值;对于偶数个元素,中值是指排序后中间两个元素灰度值的平均值。 一般选用3*3或5*5窗口,形状可分为方形或十字形,如下图所示。 (a) 方形 (b) 十字形 图2-1 二维中值滤波窗口形状 二维中值滤波可表示为

滑动轴承实验报告

液体动压滑动轴承实验报告 一、实验目的 1、测量轴承的径向和轴向油膜压力分布曲线。 2、观察径向滑动轴承液体动压润滑油膜的形成过程和现象。 3、观察载荷和转速改变时的油膜压力的变化情况。 4、观察径向滑动轴承油膜的轴向压力分布情况。 5、测定和绘制径向滑动轴承径向油膜压力曲线,求轴承的承载能力。 6、了解径向滑动轴承的摩擦系数f 的测量方法和摩擦特性曲线λ的绘制方法。 二、实验设备及工具滑动轴承实验台 三、实验原理 1、油膜压力的测量 轴承实验台结构如图1所示,它主要包括:调速电动机、传动系统、液压系统和实验轴承箱等部分组成。 在轴承承载区的中央平面上,沿径向钻有8个直径为1mm 的小孔。各孔间隔为 22.50,每个小孔分别联接一个压力表。在承载区内的径向压力可通过相应的压力表直接读出。 将轴径直径(d=60mm )按比例绘在纸上,将1~8个压力表读数按比例相应标出。(建议压力以1cm 代表5kgf/cm 2)将压力向量连成一条光滑曲线,即得到轴承中央剖面油膜压力分布曲线)。 同理,读出第4和第8个压力表示数,由于轴向两端端泄影响,两端压力为零。光滑连结0‘,8’,4‘,8’和0‘各点,即得到轴向油膜压力分布曲线。 图1 轴承实验台结构图 1、操纵面板 2、电机 3、三角带 4、轴向油压传感器接头 5、外加载荷传感器 6、螺旋加载杆 7、摩擦力传感器测力装置 8、径向油压传感器(8只) 9、传感器 支撑板 10、主轴 11、主轴瓦 12、主轴箱 、管路敷设技术通过管线不仅可以解决吊顶层配置不规范高中资料试卷问题,而且可保障各类管路习题到位。在管路敷设过程中,要加强看护关于管路高中资料试卷连接管口处理高中资料试卷弯扁度固定盒位置保护层防腐跨接地线弯曲半径标等,要求技术交底。管线敷设技术中包含线槽、管架等多项方式,为解决高中语文电气课件中管壁薄、接口不严等问题,合理利用管线敷设技术。线缆、电气课件中调试资料试卷电气设备,在安装过程中以及安装结束后进行 高中资料试卷调整试验;通电检查所有设备高中资料试卷相互作用与相互关系,根据生产工艺高中资料试卷要求,对电气设备进行空载与带负荷下高中资料试卷调控试验;对设备进行调整使其在正常工况下与过度工作下都可以正常工作;对于继电保护进行整核对定值,审核与校对图纸,编写复杂设备与装置高中资料试卷调试方案,编写重要设备高中资料试卷试验方案以及系统启动方案;对整套启动过程中高中资料试卷电气设备进行调试工作并且进行过关运行高中资料试卷技、电气设备调试高中资料试卷技术电力保护装置调试技术,电力保护高中资料试卷配置技术是指机组在进行继电保护高中资料试卷总体配置时,需要在最大限度内来确保机组高中资料试卷安全,并且尽可能地缩小故障高中资料试卷破坏范围,或者对某些异常高中资料试卷工况进行自动处理,尤其要避免错误高中资料试卷保护装置动作,并且拒绝动作,来避免不必要高中资料试卷突然停机。因此,电力高中资料试卷保护装置调试技术,要求电力保护装置做到

滑动窗口实验

计算机通信网络实验 滑动窗口实验 学院: 班级: 学号: 姓名: 2012年11月14日

一、实验目的 实现一个滑动窗口协议的数据传送部分,目的在于使学生更好地理解基本滑动窗口协议的基本工作原理,掌握计算机网络协议的基本实现技术。 二、原理简介 (1)窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。 发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。 (2)1比特滑动窗口协议 当发送窗口和接收窗口的大小固定为1时,滑动窗口协议退化为停等协议(stop-and-wait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送新的帧,因而只用一比特来编号就够了。

(3)后退n协议 由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退n协议。后退n协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送,且发送方在每发送完一个数据帧时都要设置超时定时器,只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。 三、实验步骤 1.编写滑动窗口协议的实现程序; 2.在模拟实现,调试并运行自己编写的协议实现程序; 3.了解协议的工作轨迹,如出现异常情况,在实验报告中写出原因分析。 四、实验过程 1、程序功能及设计思路 功能概述: 用客户端/服务器模式代表A站、B站。先由客户端输入服务器IP地址,然后客户端和服务器之间建立连接。在服务器中可以自行设置发送窗口的大小(如果需要实现的是停等式协议,那么就将发送窗口设为1),设置完后,服务器开始向客户端根据滑动窗口(停等式)的协议规定发送数据帧,同时启动计时器,客户端收到数据帧后马上向服务器发送确认帧,服务器如果没有及时收到客户端的确认帧,就要返回到出错的地方进行重发。 实现滑动窗口协议的算法: 发送端: 1、socket初始化,绑定端口,监听,接受连接; 2、设置发送窗口大小winsize; 3、启动定时器,设置时间为0.2s*winsize; 4、组帧并发送数据,即设置序号SN、数据data、长度msglen,之后发送一个窗口中的帧,每发送一个数据SN++;若发送完毕,则执行第6步; 5、接收确认帧,每收到一个正确的确认帧,则改变滑动窗口上下限,若正确接收所有确认帧,则关闭定时器,返回第3步;若接收超时或有确认帧丢失,则SN=right_number,返回第3步; 6、关闭socket,重新建立新的进程,等待下一个连接,返回第2步。 接收端: 1、socket初始化,连接服务器; 2、接收数据帧,将data存入缓存recvBuf,RN=SN+1; 3、发送确认帧,若接收完毕,则关闭socket,否则返回第二步。 实现停等式协议的算法: 和上述滑动窗口协议的算法类似,只需在发送端的第二步中将发送窗口大小winsize设置为1即可。

滑动窗口的仿真协议书范本

计算机网络课程设计书

计算机网络课程设计说明书 (封面) 学院名称:计算机与信息工程学院班级名称:网络工程一班 学生: 学号: 201321 题目:滑动窗口协议仿真指导教师 姓名:邵雪梅 起止日期: 2015.6.23-2015.6.29

第一部分:正文部分 一,选题背景 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。 同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。本文主要介绍如何根据滑动窗口协议的原理,在Visual C++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。本次程序设计分两部分:第一部分是发送方,第二部分是接收方。通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作机制。

机械设计实验报告2011

机械设计实验报告 姓名: 班级: 学号: 日期: 机械设计教研室 河南机电高等专科学校

机械设计现场认识实验报告 一、实验目的 二、实验设备 三、回答问题 1.螺纹的类型有、、、、螺纹联接的类型有、、、。螺纹联接的防松有、、, 2.键联接的类型有、。花键联接的类型有、。 3.普通V带的型号有。V带轮的结构型式有、、、。V带传动的张紧装置有、、。4.链传动的型式有、、。5.齿轮的结构型式有、、。 6.蜗轮的结构型式有、、、。7.滑动轴承按其所承受载荷方向的不同,可分为、。向心滑动轴承的结构形式有、、、、。8.常用滚动轴承的类型及其代号有、、、、、、、、、。滚动轴承的内圈的轴向固定方法有、、、。滚动轴承外圈的轴向固定方法有、、、。滚动轴承的密封形式有接触式和非接触式密封两种,接触式密封有、两种。非接触式密封有、两种。 9.联轴器可分为、、三大类。 刚性联轴器的型式有、、、、、。 10.离合器的类型有、、、、 、。 11.轴按承载类型有、、。轴上零件的轴向固定方式有。 轴上零件的周向固定方式有。12.按照所受载荷的不同,弹簧可分为、、、。

带传动实验报告一、实验目的 二、实验设备及仪器 三、带传动实验参数 1. 带的种类(V带、圆带、三角带)。 2. 预紧力:2F01= N;2F02= N。 3. 带轮基准直径:d1= mm ;d2= mm 4.测力杆力臂长:L1=L2= mm 5.测力杆刚性系数:K1=K2= N/格 四、实验数据记录与计算 五、绘制弹性滑动曲线和效率曲线

液体动压滑动轴承实验报告 一、实验目的 二、实验设备 三、实验参数 轴颈直径d=mm;轴承宽度B=mm 润滑油动力粘度η=P a s ;润滑油温度t=C 四、实验数据记录 油膜压力测试 转速n = rpm;负载F = N; 五、绘制径向、轴向油膜压力分布曲线 1.径向油膜压力分布曲线 2.轴向油膜压力分布曲线

滚动轴承实验

滚动轴承实验报告 一、实验目得 1、测定与绘制滑动轴承径向油膜压力曲线,求轴承得承载能力。 2、观察载荷与转速改变时油膜压力得变化情况。 3、观察径向滑动轴承油膜得轴向压力分布情况。 4、了解径向滑动轴承得摩擦系数f 得测量方法与摩擦特性曲线得绘制原理及方法。 二、实验原理 1.左、右滚动轴承座可轴向移动,各装有轴向载荷传感器,可通过电脑或数显测试并计算单个滚动轴承轴向载荷与总轴向载荷得关系; 2.右滚动轴承上装有8 个径向载荷传感器,可通过计算机或操作面板显示测绘滚动轴承在轴向、径向载荷作用下轴承径向载荷分布变化情况; 3.通过电脑直接测量滚子对外圈得压力及变化情况,绘制滚动体受载荷变化曲线。 三、实验设备 1、 ZQGZ滚动轴承实验台 2、滚动轴承:圆锥滚子轴承30310 深沟球轴承 6310 3、可移动得滚动轴承座:1对; 4、滚动轴承、径向加载装置:1套; (作用点位置可在0~180mm内任意调节); 5、滚动轴承径向载荷传感器:精度等级:0、05 量程:10000N,1个/台; 6、轴向载荷传感器:量程:5000N,2个/台; 四、实验内容及注意事项 1、滚动轴承径向载荷分布及变化实验;测试在总轴向与径向载荷作用下,滚动轴承径向载荷分布及变化情况,并作出载荷分布曲线。 2、注意事项 a)选定一对实验轴承,本实验装置提供向心球轴承与圆锥滚子轴承,每一种 轴承有大小型号各一种出厂已装配好可任选一台、 b)实验前首先调整好左右轴向受力支撑(称重传感器支座)位置,使端盖外伸 与传感器刚好接触、 c)静态实验需调节加载支座,使加载力得方向保持在一定角度,并保持空载。 d)将测力及传感器得检测点一一接至检测系统对应得接口 e)打开电源,使检测系统处于工作状态、 f)将检测系统与PC 机串行口相连,并打开分析界面、

计算机网络抓包实验报告

实验报告二

学号1040407105 实验项目 名称 利用Wireshark 进行抓包分析 上面的截图是抓取到的包,下面分别针对其中的一个TCP,UDP和ICMP进行分析 1.TCP TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793 说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。 在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

学号1040407105 实验项目 名称 利用Wireshark 进行抓包分析 首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。 在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。 在拥塞控制上,采用慢启动算法。 对于上面的抓包,选取其中的一个TCP进行分析 Source:119.147.91.131 Destination:180.118.215.175 Length:56 Info:http>500001[FIN,ACK] Seq=41,Ack=2877,win=66528 Len=0 1.1抓到的数据链路层中的帧 Frame 211:56bytes 即所抓到的帧的序号为211,大小是56字节 1.2 IP层中的IP数据报 Header Length:20bytes 即首部长度为20个字节;

滑动窗口实验报告

滑动窗口实验报告(含源码) 一、实验目的 1.实现一个数据链路层协议的数据传送部分。 2.更好地理解数据链路层协议中的“滑动窗口”技术的基本工作 原理。 3.掌握计算机网络协议的基本实现技术。 二、实验要求 在一个数据链路层的模拟实现环境中,用C语言实现下两个数据链路层协议。 1.1比特滑动窗口协议 2.回退N帧滑动窗口协议 三、实验内容 充分理解滑动窗口协议,根据滑动窗口协议,模拟滑动窗口协议中发送端的功能,对系统发送的帧进行缓存并加入窗口等待确认,并在超时或者错误时对部分帧进行重传。 编写停等及退回N滑动窗口协议函数,响应系统的发送请求、接收帧消息以及超时消息,并根据滑动窗口协议进行相应处理。四、源代码及注释 #include "" #include using namespace std; extern void SendFRAMEPacket(unsigned char* pData, unsigned int len); ead = *p;

buffer[last_buffered_frame % BUFFER_SIZE].size = bufferSize; ize); continue; SendFRAMEPacket((unsigned char*)(&buffer[i % BUFFER_SIZE]), buffer[i % BUFFER_SIZE].size); } return 0; } default : break; } return -1; } /* * 回退n帧测试函数 */ int stud_slide_window_back_n_frame(char *pBuffer, int bufferSize, UINT8 messageType) { Frame_head* p = (Frame_head*)pBuffer; unsigned int timeoutNum = *(unsigned int*)pBuffer; switch (messageType) { ead = *p; buffer[last_buffered_frame % BUFFER_SIZE].size = bufferSize; ++ last_buffered_frame; cout << "exp_ack : " << exp_ack << endl; if (ack >= exp_ack) { ++ expect_frame; if (next_frame < last_buffered_frame) { SendFRAMEPacket((unsigned char*)(&buffer[next_frame % BUFFER_SIZE]), buffer[next_frame % BUFFER_SIZE].size); ++ next_frame; } } else break; } return 0;

课程设计报告滑动窗口协议仿真精编

课程设计报告滑动窗口 协议仿真精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

滁州学院 课程设计报告 课程名称:计算机网络 设计题目:滑动窗口协议仿真 系别:计算机与信息工程学院 专业:计算机科学与技术 组别:第五组 起止日期: 2011年11月24日~2011年12月7日指导教师:赵国柱 计算机与信息工程学院二○一一年制

课程设计任务书 一. 引言 二. 基本原理 窗口机制 1bit滑动窗口协议 后退N协议 选择重传协议 流量控制

三. 需求分析 课程设计题目 开发环境 运行环境 课程设计任务及要求 界面要求 网络接口要求 四. 详细设计 结构体的定义 发送方的主要函数 接受方的主要函数五. 源代码 发送方的主要代码 接收方的主要代码六. 调试与操作说明 致谢 [参考文献]

课程设计的主要内容 1.引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是1bit滑动窗口协议,一次只发送一个帧,等收到ack确认才发下一个帧,这样对信道的利用率太低了。因此提出了一种采用累积确认的连续ARQ 协议,接收方不必对收到的帧逐个发送ack确认,而是收到几个帧后,对按序到达的最后一个帧发送ack确认。同1bit滑动窗口协议相比,大大减少了ack数量,并消除了延迟ack对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了5个帧,而中间的第3个帧丢失了。这时接收方只能对前2个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的3个帧再重传一次,这就是回退N协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的

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

数据链路层滑动窗口协议的设计和实现样本数据链路层滑动窗口协议的设计和实现本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 数据链路层滑动窗口协议的设计与实现实验报告 一、实验任务及内容利用所学数据链路层原理,设计一个滑动窗口协议并在仿真环境下编程实现有噪音信道环境下的可靠的双工通信。 信道模型为8000bps全双工卫星信道,信道传播时延270毫秒,信道误码率为10--55,信道提供字节流传输服务,网络层分组长度在240~256字节范围。 (1)实现有噪音信道环境下的无差错传输。 (2)运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。 (3)提高滑动窗口协议信道利用率,根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK搭载定时器的时限。 实验环境Windows7环境PC,机,Microsoft VisualC++集成化开发环境 二、协议设计协议的分层结构及层服务::包括物理层,数据链路层和网络层三层。

该实验主要设计数据链路层协议,为实现有噪声环境下高信道利用率传输,我们采用回本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 退n n帧(go backn)技术的协议。 发送方窗口大小为31;通过捎带确认来完成可靠的数据通信;出现信道误码导致收帧出错时,接受方丢弃所有后续帧,待定时器超时后发送方重发。 该层提供服务::从网络层接受要发送的数据包,将之分拆成数据帧;按一定的成帧方案完成分帧,加校验码,加ack等操作;进行适当的流量判断和拥塞控制;启动定时器将之传递给物理层。 数据帧经信道传送给接受方,接受方数据链路层执行与成帧相逆的操作;处理ack信息,终止定时器(或启动ack定时器,ack成帧传送);判断是否为欲接受数据,数据是否出错,提交给网络层。 退回N N步工作原理示意图::本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 实验所形成帧((成帧方案))::DATA Framen+=========+========+========+===============+======== +|KIND (1)|ACK (1)|SEQ

相关主题