计算机网络差错检验实验报告.docxVIP

  • 9
  • 0
  • 约3.79千字
  • 约 5页
  • 2021-01-25 发布于山东
  • 举报
.. 实验一 差错检验 问题分析和需求定义 1.1 问题分析 网络上的信号最终都是通过物理传输线路进行传输的, 如果高层没有采用差错控制, 那 么物理层传输的数据信号是可能有差错的。 为了保证数据的正确性, 在物理层的基础上设计 了数据链路层。 设计数据链路层的主要作用就是在原始的、 有差错的物理传输线路的基础上,采用差错检测、 差错控制与流量控制等方法, 将有差错的物理线路改进成逻辑上无差错的数据链路,以向网络层提供高质量的服务。 1.2 需求定义 目前,进行差错检测和差错控制的主要方法是: 在需要传输数据分组后面加上一定的冗 余信息, 这样的冗余信息通常都是通过对所发送的数据应用某种算法进行计算而得到的。 数 据的接收方在接收到数据后进行同样的计算再与收到的冗余信息进行比较, 如果结果不同就 说明出现了差错,此时可以要求发送方重传该组数据,以此达到保证数据准确性的目的。 在本实验中我们需要完成网际校验和算法的程序实现, 通过此程序对发送数据计算和添 加校验码,对接收数据进行差错检测。 算法的原理以及实现思路 2.1 算法的原理 在需要传输的数据包中, 加上一定的冗余信息。 这些冗余信息通常都是对所发送的数据应用某种算法进行计算而得到的校验码。接收端:对接收到的信息(包含收到的冗余信息) 用同一种算法(协议)进行计算后,得到结果为 0 的校验码,说明收到了正确的数据,否则 收到的数据出现差错 , 并将此数据报丢弃。 “ A,B,C,...,Y,Z ”分别表示一系列 8 位组, 用[A,B]这样形式的字节组来表示 A*256+B 的整数,那么该字节序列的反码和就可以通过以下两种 表达式之一给出: [A,B] + [C,D] + ... + [Y ,Z] [A,B] + [C,D] + ... + [Y ,Z] [A,B] + [C,D] + ... + [Y,Z] [A,B] + [C,D] + ... + [Z,0] 其中, + 表示反码算数运算相加, 第一个公式适用于偶数个字节的校验和, 第二个公式 适用于计算奇数个字节的校验和。 注 :把被校验的数据按 16 位进行累加 ,若有进位,将进位加至结果最低位,得 16 位累加 ;.. .. 和,对 16 位累加和求反码,得到校验码 。 2.2 算法的实现思路 校验和计算算法主要分为三个步骤: 数据文件的输入、 校验和的计算和校验结果的输出。 其中,主要是数据的输入和校验和的计算。 2.2.1 数据的输入 在本实验中输入的数据是以字符形式存储的, 而校验和的计算则要采用数据形式, 所以从文件读取数据时,都要进行字符到数据的相互转换。 2.2.2 校验和的计算 本实验中采用端循环进位算法,将数据按一定数位进行累加,最高位的进位则循环加入最低位。待校验的数据按 16 位一个单位相加,采用端循环进位,最后对所得的数据取反码。 因为待校验的数据是以字节方式分隔的, 所以为了方便,将 16 位的数据分成高 8 位和低 8 位分别处理。 2.2.3 校验和结果的输出 使用输出语句进行输出。 算法实现的正确性测试 运行程序,得到 CheckSum.exe 文件。运行 jyh.txt 文件,之后得出其校验和。将得出的校验 和写入 jyh.txt 文件中,再次运行文件,若得到的校验和为 0,则无错误发生。 差错测试方案 如 3 中所实现, 如果经过多次测试, 算法的程序实现正确, 则可以人工模拟出传输错误的数据,让接收方检测出差错。 程序流程图 计算机网络课程设计 p16 ;.. .. 程序代码分析 # includestdio.h # includestdlib.h int main(int argc,char * argv[]) { //定义并初始化变量 FILE *fp; //fp 为指向文件的指针 char ch; //ch 用于存放在文件中读到的一个字符 unsigned char chr1,chrh; //chr1 用于存放低四位, chrh 用于存放高四位 unsigned int count=0,checksum=0,chr=0; //count 计数用于保存读到字符的次数, checksum 用于存放校验和, chr 用于 存放高八位和低八位数 unsigned long sum=0; //sum 用于存放十六进制数根据算法累加得到的结果 //检查输入命令格式 if(argc!=2) //如果命令行输入的参数个数不为 2 { printf(Please input command: CheckSum input_file); // 打印提示语句 return -1; //结束程序,返回 -1 } //打开文本文件 if((fp=fopen(argv[1],r)

文档评论(0)

1亿VIP精品文档

相关文档