Exp1滑动窗口协议实验报告
《Exp1滑动窗口协议实验报告》由会员分享,可在线阅读,更多相关《Exp1滑动窗口协议实验报告(5页珍藏版)》请在装配图网上搜索。
1、Exp1 滑动窗口协议 实验报告【实验目标】l 理解和掌握“滑动窗口”技术。l 基于计算机网络实验系统NetRiver进行。l NetRiver系统提供了各实验的上下文和接口函数,利用C/C+编程语言实现典型协议的核心部分。l 使用NetRiver系统完成程序代码的编译、调试和测试,验证协议实现的正确性。【实验原理】1-bit滑动窗口协议1-bit滑动窗口协议中,需要保证发送窗口大小不超过1。我们用ack_expected表示发送窗口下界,即希望得到确认的帧号;用window_size表示当前发送窗口的大小。当有事件到达时,根据事件的类型进行相应处理:l 超时事件:此时pBuffer指向的UI
2、NT32类型存储的是主机序的序列号seq,将seq与当前窗口区间ack_expected, ack_expected+windoe_size)进行比较,从seq开始连续进行发送。l 网络层发送事件:此时网络层想要发送一个新帧,pBuffer指向的是网络层准备好的帧,我们将该帧放入缓冲队列,并在发送窗口未满时进行1次发送。l 帧到达事件:此时我们收到了一个帧,通过ntohl将其确认号转化成主机序ack,然后对比ack是否等于ack_expected,若是则发送窗口下界加1,此时若还有帧在缓冲区则尝试进行1次发送,发送窗口上界加1。回退n帧滑动窗口协议回退n帧滑动窗口协议和1-bit滑动窗口协议相
3、比,主要的区别在于窗口大小的不同,以及处理超时事件时,应从超时的帧开始进行连续发送。其他事件的处理则没有不同。【实验中遇到的问题】起始编号实验中帧号从1开始编号,而不是通常认为的0。静态变量由于两个函数将被分别连续调用,故不适合使用全局变量,否则将出现未初始化的现象。这里我使用了函数内的静态变量来保证合适的初始值。实验系统不稳定实验过程中挺经常遇到服务器超时的现象,而且有时同一个程序运行两次也会有不同的结果。一个经验性的做法是在程序中增加一些cout语句,实践上能够保证结果正确,但具体原因尚不清楚。【源代码】#include sysinclude.h#include using namespa
4、ce std;extern void SendFRAMEPacket(unsigned char* pData, unsigned int len);#define WINDOW_SIZE_STOP_WAIT 1#define WINDOW_SIZE_BACK_N_FRAME 4/ 帧类型typedef enum data, ack, nak frame_kind;/ 帧头typedef struct frame_head frame_kindkind;/帧类型unsigned intseq;/序号unsigned intack;/确认号unsigned chardata100;/数据;/ 完
5、整帧typedef struct frame frame_headhead;/帧头unsigned intsize;/数据的大小;/ 队列元素 typedef struct store_elm frame*pframe;/帧头unsigned intlen;/数据长度;/* 停等协议测试函数*/int stud_slide_window_stop_and_wait(char *pBuffer, int bufferSize, UINT8 messageType)/ 发送缓冲区static deque buffDeque;static UINT32 window_size = 0;static
6、UINT32 ack_expected = 1;/ 起始编号为 1UINT32 seq, ack;store_elm s;switch (messageType) case MSG_TYPE_TIMEOUT:seq = *(UINT32 *)pBuffer);/ 给出主机序if (ack_expected = seq & seq ack_expected + window_size) for (UINT32 i = seq - ack_expected; i window_size; +i)SendFRAMEPacket(unsigned char *)(buffDequei.pframe),
7、 buffDequei.len);break;case MSG_TYPE_SEND:s.pframe = new frame;/ 缓存新帧*s.pframe = *(frame *)pBuffer;s.len = bufferSize;buffDeque.push_back(s);if (window_size head.ack);ack_expected = ntohl(buffDeque0.pframe-head.seq);if (ack = ack_expected) / 如果是等待的帧buffDeque.pop_front();-window_size;+ack_expected;if
8、 (buffDeque.size() 0 & window_size WINDOW_SIZE_STOP_WAIT) / 尝试发送s = buffDequewindow_size+;SendFRAMEPacket(unsigned char *)(s.pframe), s.len);break;default:break;return 0;/* 回退n帧测试函数*/int stud_slide_window_back_n_frame(char *pBuffer, int bufferSize, UINT8 messageType)/ 发送缓冲区static deque buffDeque;sta
9、tic UINT32 window_size = 0;static UINT32 ack_expected = 1;/ 起始编号为 1UINT32 seq, ack;store_elm s;cout message Type : (char) (0 + messageType) endl;switch (messageType) case MSG_TYPE_TIMEOUT:seq = *(UINT32 *)pBuffer);/ 给出主机序if (ack_expected = seq & seq ack_expected + window_size) for (UINT32 i = seq -
10、ack_expected; i window_size; +i)SendFRAMEPacket(unsigned char *)(buffDequei.pframe), buffDequei.len);break;case MSG_TYPE_SEND:s.pframe = new frame;/ 缓存新帧*s.pframe = *(frame *)pBuffer;s.len = bufferSize;buffDeque.push_back(s);if (window_size head.ack);ack_expected = ntohl(buffDeque0.pframe-head.seq);
11、while (ack = ack_expected) / 如果是等待的帧buffDeque.pop_front();-window_size;+ack_expected;if (buffDeque.size() 0 & window_size WINDOW_SIZE_BACK_N_FRAME) / 尝试发送s = buffDequewindow_size+;SendFRAMEPacket(unsigned char *)(s.pframe), s.len);break;case MSG_TYPE_RESEND:seq = *(UINT32 *)pBuffer);/ 给出主机序default:break;return 0;
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卡通可爱绿色小学生家长会模板课件
- 卡通可爱老师教育教学模板课件
- 卡通可爱幼儿园大班家长会模板课件
- 卡通夏日暑假班会家长会模板课件
- 卡通可爱创意爱情告白求婚婚礼婚庆策划方案模板课件
- 卡通可爱军人动态模板通用模板课件
- 卡通可爱五一劳动最光荣主题班会模板课件
- 卡通可爱小学生常用急救知识模板课件
- 卡通动画小乌龟Franklin_02_02【声音字幕同步】课件
- 卡通儿童预防冬季流感科普宣传模板课件
- 卡通动漫动物人物绘制课件
- 卡通可爱儿童节主题活动策划方案模板课件
- 卡通儿童珍爱生命防溺水主题班会模板课件
- 卡通动漫教育教学课程设计教师说课模板课件
- 身体工作动态静心资料来源Osho的静心与健康若欲详解敬请课件