- 131
- 0
- 约2.09千字
- 约 17页
- 2018-04-23 发布于河南
- 举报
计算校验和程序
第4章计算校验和程序 概述 为保证网络上数据传输的可靠性,在IP、ICMP、IGMP、UDP和TCP等协议中都设置了校验和项,实际中使用的校验和算法是网际校验和算法 提纲 编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高 编程训练目的 掌握在给定的数据报格式条件下构造数据报并计算数据报的校验和的方法,加深对网络差错校验技术的理解 掌握网际校验和算法原理与软件实现方法 熟悉计算网际校验和的增量式计算法 提纲 编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高 编程训练要求 编写程序,计算自定义格式数据报的网际校验和: 自定义的格式如下: 程序要求以命令行方式运行: Checksum inputfile outputfile 其中,Checksum是程序名;inputfile是输入文件,该文件包含数据字段的内容;outputfile为输出文件,该文件保存封装完毕后的数据报 程序运行的参考界面 提纲 编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高 网际校验和算法 把检验和字段置0,把所有需要被校验的数据划分为16 位一组的比特序列,然后对每16位的反码求和,结果取反,便得到校验和 为了验证校验和的正确性,对所有的数据求反码和,如果结果全1,则表示校验结果正确 网际校验和算法特性 交换律和结合律 字节顺序独立 并行计算 可以提高校验和计算速度的技术 延迟进位 循环展开 数据读入与校验合二为一 增量式更新 提纲 编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高 核心程序设计思路及实现 读入数据文件并构造数据报 创建输入流,直接使用2进制的方式打开输入文件 构造数据报缓冲区,给数据报赋值 核心程序设计思路及实现(续) 核心程序设计思路及实现(续) 输出完整数据报 创建输出流,使用2进制的方式打开输出文件 通过write()函数将存储在缓冲区的数据报一次性写入到输出文件 提纲 编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高 扩展与提高 扩展与提高 * 数据字段 …… 校验和(16位) 长度 (8位) 报文类型(8位,指定为0xab) ifstream fInfile; // 创建输入文件流 fInfile.open(argv[1], ios::in|ios::binary); //打开指定的输入文件 /*定义数据报缓冲区,缓冲区大小为4+wLen ,其中4为数据报类型字段、长度字段 及校验和字段的长度和,wLen为数据字段长度*/ unsigned char * pBuf = new unsigned char[4+wLen]; pBuf[0] = unsigned char(0xab); // 给数据报类型字段赋值 pBuf[1] = unsigned char(wLen); // 给数据报长度字段赋值 *(unsigned short *)(pBuf+2) = 0;// 计算校验和之前,校验和字段先置为0 fInfile.read(pBuf+4, wLen); // 根据输入文件填充数据报的数据字段fInfile.open(argv[1], ios::in|ios::binary); //打开指定的输入文件 // 计算校验和并把结果填入到数据报的校验和字段 *(unsigned short *)(pBuf+2) = checksum_calculating((unsigned short *)pBuf, 4+wLen); 计算校验和 延迟进位法 算法思想是:将进位累加的过程延迟到整个累加循环结束之后进行,从而提高计算速度 实现:在32位的计算机上,把需要校验的数据按16位一组进行累加,结果存放在32位的累加器中,这样溢出位就保存在高16位上。全部累加结束后再把32位累加器中高16位累加到低16位上,那么低16位值的反码即为最终的校验和 fstream fOutfile; // 创建输出文件流 // 以2进制方式打开输出文件 fOutfile.open(argv[2],ios::in|ios::out|ios::binary|ios::trunc); // 将pBuf中的数据报写入输出文件 fOutfile.write((char *)pBuf, 4+wLen); HC —— 修改前的头部校验和 C —— 修改前的反码和 HC —— 修改后的头部校验和 C —— 修改后的反码和 m —— 修改前的16位数值 m —— 修改后的16位数值 增量式更新法 C = C + (-m) + m = C +
您可能关注的文档
- 互换性作业答案(一).ppt
- windows_xp所有快捷键集合!.doc
- 第四讲场效应管.ppt
- 函数与函数表示法.doc
- 教育常用的几个统计方法.doc
- 实训三、日常账务核算.doc
- 2上--平面体系的几何组成分析.ppt
- 社会实践竞标书答辩ppt.ppt
- 数据库原理第四章标准查询语言SQL(第一部分).ppt
- 知情谈话制度——医患沟通制度.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)