Exp1滑动窗口协议实验报告

上传人:xt****7 文档编号:100732261 上传时间:2022-06-03 格式:DOCX 页数:5 大小:20.69KB
收藏 版权申诉 举报 下载
Exp1滑动窗口协议实验报告_第1页
第1页 / 共5页
Exp1滑动窗口协议实验报告_第2页
第2页 / 共5页
Exp1滑动窗口协议实验报告_第3页
第3页 / 共5页
资源描述:

《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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!