实验五 计算机网络基本算法的实现_第1页
实验五 计算机网络基本算法的实现_第2页
实验五 计算机网络基本算法的实现_第3页
实验五 计算机网络基本算法的实现_第4页
实验五 计算机网络基本算法的实现_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 实验五 计算机网络基本算法的实现6.1 实验目的1. 熟悉IP数据报、UDP数据报的差错检验方法,即反码求和的工作原理。2. 掌握反码求和的实现方法。6.2实验内容1. 熟悉IP数据报、UDP数据报的差错检验方法。2. 编写反码求和的程序,并调试通过。6.3 实验要求每位同学在TC2.0环境下编程实现IP数据报和UDP数据报反码求和程序,并利用所提供数据进行验证。6.4 实验步骤6.4.1 IP数据报反码求和程序设计Step1:输入程序框架在TC环境下输入如下程序框架:#include "stdio.h"/* 反码求和函数,输入被求和的字节数组(buf:数据起始地址

2、,count:16位段数),返回求和结果 */unsigned short cksum(unsigned short *buf,int count)/* 每位同学自己完善本函数 */main(int argc,char *argv)FILE *fp;unsigned short buf10;unsigned short rt;if(argc>1)/* 打开MAC帧数据文件 */fp = fopen(argv1,"rb");if (fp != NULL)/* 定位到IP数据报首部开始位置 */fseek(fp,14L,SEEK_SET);/* 读取20个字节的IP首部

3、*/fread(buf,2,10,fp);/* 反码求和 */rt = cksum(buf,10);/* 输出求和结果 */printf("CheckSum:%X",rt);/* 关闭文件 */ fclose(fp);elseprintf("Open file error");elseprintf("Usage:Check_Ex ex.dat"); return 0;Step2:完善cksum函数(反码求和函数)根据反码求和算法完善反码求和函数,并调试成功整个程序。Step3:检验程序利用提供的icmp1.dat、icmp2.dat、

4、icmp3.dat和icmp4.dat四个数据文件检验程序,看输出结果是什么?6.4.2 UDP数据报反码求和程序设计在上述实验的基础上,自己独立设计UDP数据报的反码求和程序,其中要注意的UDP反码求和时需要构造伪首部。并利用提供的udp1.dat、udp2.dat和udp3.dat三个数据文件检验程序,看输出结果是什么?6.4.3 实验报告实验报告包括你所设计反码求和的算法流程图、你所写的程序代码,同时给出检验结果。IP数据报反码求和算法流程图: 开始取IP数据报的前20个字节首部 从第14个字节开始读入buf数组调用cksum函数,sum取反 输出结果 结束程序代码:#include &

5、quot;stdio.h"unsigned short cksum(unsigned short *buf,int count)unsigned long sum=0;int i;for(i=0;i<count;i+)sum+=bufi;sum=(sum>>16)+(sum&0xffff);sum+=(sum>>16);return sum;main(int argc,char *argv)FILE*fp;unsigned short buf10;unsigned short rt;if(argc>1)fp=fopen(argv1,&quo

6、t;rb");if(fp!=NULL)fseek(fp,14l,SEEK_SET);fread(buf,2,10,fp);rt=cksum(buf,10);printf("checksum:%x",rt);fclose(fp);elseprintf("open file error");elseprintf("usage:check_ex ex.dat");return 0;检验结果:UDP数据报反码求和算法流程图: 开始将文件首部放入buf 读取文件长度 从第34个开始每次读两个字节到buf中 判断文件长度是否为奇数 N

7、Ybuf的最后一个数据高8位清0零 执行cksum函数,计算校验值结束程序代码:#include "stdio.h"unsigned short cksum(unsigned short *buf,int count)unsigned long temp=0;int i;for(i=0;i<count;i+)temp+=bufi;temp=(temp>>16)+(temp&0xffff);temp+=(temp>>16);return (unsigned short) temp;int main(int argc,char *argv)

8、FILE *fp;unsigned short rt;unsigned short buf300;unsigned short len;unsigned short length;if(argc>1)fp=fopen(argv1,"rb");if(fp!=NULL)fseek(fp,26L,SEEK_SET);fread(buf,2,4,fp);buf4=0x1100;fseek(fp,38L,SEEK_SET);fread(&buf5,2,1,fp);len=(buf5<<8)+(buf5>>8);length=len;if(len%2) len=len+1;fseek(fp,34L,SEEK_SET);fread(&buf6,2,len/2,fp);if(len-length)=1)buflen/2+5&=0x00ff;rt=cksum(buf,len/2+6);printf("c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论