- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络goBackN.ppt
数据链路层滑动窗口协议的设计与实现 基本内容 实验内容 设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信 信道模型 8000bps全双工卫星信道 单向传播时延270毫秒 信道误码率为10-5 物理层接口:提供帧传输服务,帧间有1ms帧边界 网络层属性:分组长度固定256字节 实验组人数 1~3人 实验设备环境 WindowsXP,Microsoft Visual C++ 6.0 实验步骤 熟悉编程环境 安装好VC6.0或兼容的更高版本的C语言编程环境 了解程序的主体运行框架 可利用的子程序 协议设计和程序总体设计 设计好要实现的滑动窗口协议,定义帧字段,规划程序的总体结构,相关子程序的设置 编码和调试 将所设计的协议编码实现并上机调试通过,实现数据链路层两个站点之间的通信。 软件测试和性能评价 在无误码信道环境下运行测试 有误码信道环境下的无差错传输 要求:稳定运行20分钟以上,效率不能太低 实验报告及程序验收 Windows环境编译和运行 编译 程序运行(启动两个进程) A站:datalink.exe a3 B站:datalink.exe b3 产生的日志文件 datalink-A.log datalink-B.log Linux环境编译和运行 操作系统 RedHat,Fedora Ubuntu 编译 make 程序运行(启动两个进程) A站:./datalink.exe a3 B站:./datalink.exe b3 产生的日志文件 datalink-A.log datalink-B.log 程序运行:命令行选项 启动执行EXE文件时,在命令行中附带一些选项对程序的执行进行控制 日志函数 函数 extern void log_printf(char *fmt, ...); extern void lprintf(char *fmt, ...); 举例 log_printf(”Received a frame, %d bytes\n”, len); 该语句输出: 23.176 Received a frame, 248 bytes log_printf(”Received a frame, ”); log_printf(”%d bytes\n”, len); 所得到的输出: 23.176 Received a frame, 23.176 248 bytes 应使用 log_printf(”Received a frame, ”); lprintf(”%d bytes\n”, len); 日志文件 log_printf和lprintf在当前屏幕的输出存于日志文件中 上下层接口函数 运行环境的初始化 void protocol_init(int argc, char **argv); 与网络层模块的接口 #define PKT_LEN 256 void enable_network_layer(void); void disable_network_layer(void); int get_packet(unsigned char *packet); void put_packet(unsigned char *packet, int len); 与物理层模块的接口 int recv_frame(char *buf,int size); void send_frame(char *buf, int len); 事件驱动函数 int wait_for_event(int *arg); #define NETWORK_LAYER_READY 0 #define PHYSICAL_LAYER_READY 1 #define FRAME_RECEIVED 2 #define DATA_TIMEOUT 3 #define ACK_TIMEOUT 4 样例程序datalink.c 样例程序实现了简单的全双工“停-等”协议 未设ACK定时器,收到数据就立刻回复ACK 未实现NAK 编辑,编译和运行 分别在两个DOS窗口运行datalink a和datalink b,那么会启动两个站运行。 如果运行datalink a3和datalink b3,那么,会打印出协议运行信息。协议运行信息的输出,也是在datalink.c中设定的 CRC校验和的产生与验证 unsigned int crc32(unsigned char *buf, int len); 校验和产生 char *p;为p指向的缓冲区内243字节数据生成校验和,并把校验和附在243字节之后 *(unsigned int *)(p + 243) = c
文档评论(0)