计网协议5和协议6程序设计报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计网协议5和协议6程序设计报告

程序设计报告 (2011/2012学年第一学期) 题 目:数据链路层滑动窗口协议的设计与实现 学 生 姓 名 朱瑞霖、李小明 学 生 学 号 、 日 期 2011-12-01 一、实验内容和实验目的 利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。通过该实验,进一步巩固和深刻理解数据链路层误码检测的CRC 校验技术,以及滑动窗口的工作机理。滑动窗口机制的两个主要目标: (1) 实现有噪音信道环境下的无差错传输; (2)充分利用传输信道的带宽。 在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理 地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK 搭载定时器的时限。这些参数的设计,需要充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优 取值,并通过程序的运行进行验证。 通过该实验提高同学的编程能力和实践动手能力,体验协议软件在设计上各种问题和调试难度,设计在运行期可跟踪分析协议工作过程的协议软件,巩固和深刻理解理论知识并利用这些知识对系统进行优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。 Window操作系统下,Microsoft Visual C++ 6.0 集成化开发环境。 三、实验分工 协议5主要由李小明完成,协议6主要由朱瑞霖完成,两协议的测试以及部分参数的设定、测试由两人共同完成。实验报告由李小明和朱瑞霖共同整理完成。 四、软件设计 数据结构分析 协议五 #define inc(k)if(kMAX_SEQ)k++;else k=0 inc宏定义了窗口更新函数,按循环式前进更新。 #define DATA_TIMER 2800 DATA_TIMER定义了超时重发的定时器时间 #MAX_SEQ 7 MAX_SEQ定义了最大窗口序列 #pragma comment(lib,Protocol.lib) 该句用来导入静态链接库Protocol.lib typedef struct{ unsigned char kind; /* FRAME_DATA */ unsigned char ack; //ACK number unsigned char seq; //seq bumber unsigned char data[PKT_LEN]; //净荷域 unsigned int padding; //存放CRC校验和 }frame;int between(unsigned char a,unsigned char b,unsigned char c) 判断帧有没有在当前窗口中static void put_frame(unsigned char *frame, int len) 在帧上计算添加校验和,再发送至物理层 static void send_data_frame(void) 将帧传递给物理层传送,并开始计时器计时 (b)协议六 #define MAX_SEQ 31 MAX_SEQ定义了最大窗口序列 #define DATA_TIMER 3800 DATA_TIMER定义了超时重发的定时器时间 #define ACK_TIMER 1100 ACK_TIMER定义了ACK定时器超时重发时间 #define NR_BUFS 16 NR_BUFS定义了缓冲 #define inc(k)if(kMAX_SEQ)k++;else k=0 inc宏定义了窗口更新函数,按循环式前进更新。 帧结构定义如下: typedef struct FRAME { unsigned char kind; seq_nr ack; seq_nr seq; packet data; unsigned int padding; }Frame; 为了体现出网络层数据包与帧结构的不同,对帧结构进行再次封装。不过由于程序没用 到网络层方面的东西,因此网络层包结构只包含帧结构字段,不包含其他字段。 其定义如下: typedef struct{ unsi

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档