ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:52.31KB ,
资源ID:6145489      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6145489.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络.docx

1、计算机网络设计课题一: 计算校验和1.设计目的:本课程设计主要通过一个简单例子使学生了解网络协议中校验和的计算过程,以及设置校验和的作用。 目前,进行差错检测和差错控制的主要方法是:在需要传输的数据分组后面加上一定的冗余信息,这样的冗余信息通常都是通过对所发送数据应用某种算法进行计算而得到的。数据的接收方在接收到数据后进行同样的计算再与收到的冗余信息进行比较,如果结果不同就说明出现了差错,此时可以要求发送方重传该数组数据,以此达到数据准确性的目的。计算校验和的算法称为国际校验和算法,简单来说,就是把被校验的数据按16位进行累加,然后取反码。若数据字节长度为奇数,则在这数据尾部补一个字节的0以凑

2、成偶数。2. 课程设计要求根据前面介绍的算法,编制程序为给定数据计算校验和。1) 以命令形式运行:check_sum infile其中check_sum为程序名,infile为输入数据文件名。2) 输出:数据文件的校验和。3.程序源代码#include#includevoid main(int argc,char *argv) FILE *fp; char ch; unsigned char chrl,chrh; unsigned int count=0,checksum=0,chr=0; unsigned long int sum=0; if(fp=fopen(D:yd.txt,r)=NUL

3、L) printf(nn File cant be opened?); exit(1); printf(nnthe type of output:data-sumnn); while(1) if(ch=fgetc(fp)!=EOF) count+; if(ch!= ) if(count%12=0) printf(n); if(ch=0&ch=a&ch=A&ch=F) ch=ch-A+10; if(count%2=1) chrh=ch4; else chrl=ch&0x0f; chr=chrh|chrl; if(count%4=2) sum+=chr16) checksum=-(long)(su

4、m16+(long)(sum&0x0000ffff); checksum=checksum&0x0000ffff; printf(nnsum:%1x-checksum:%x,sum,checksum); printf(nnsource:argc=%d,targv=%sn,argc,argv1); fclose(fp);【程序运行】文档内容:运行结果:设计课题二: IP地址的合法性及子网判断1.设计目的:编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。其中判断归属问题方法为将二进制IP地址与子网掩码按位进行“与”运算。若“与”运算所得值与给定子网地址一致,则说明该IP地址属

5、于给定的子网。2.设计要求在掌握IP地址表示方法及子网划分方法的基础上,按如下要求完成程序。1)命令行格式:ip_test subnet/mask ip_addr其中,ip_test为程序名;subnet为子网号;mask是一个数值,代表子网掩码连续1的个数;ip_addr是要测试的IP地址。2)判断subnet和ip_addr的合法性。3)判断掩码的合法性。4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet.5) 输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法原因)以及ip_addr是否属于子网subnet。3.程序源代码:#include #include

6、#include #include #include #include /类结构class ipTestchar ip15; char subnetPlusMask18; char subnet18; char TempIp15; char TempSub18; int mask; bool maskIsValid;public: ipTest(char *,char *); ipTest(); bool NoIllegalChar(char *); /非法字符的判断 bool ipIsValid(char *); /判断IP地址是否合法 bool subnetIsValid(char *);

7、 /判断子网号是否合法 void belong(); /判断IP是否为子网成员 print();/主函数void main(int argc,char *argv ) if(argc != 3) /判断参数格式是否正确 couterrorendlformat shoud be:ip_test subnet/mask ip18) /先判断最简单的错误,长度是否超出 cout15) coutip is too long; return; ipTest test(argv1,argv2); /实例化ipTest类 test.print(); /完成相应判别并输出结果 /构造函数ipTest:ipTe

8、st(char* subnetPlusMask,char *ip) maskIsValid=true; char temp2;/把/前的字符复制到subnet字符数组中 int smLen=strlen(subnetPlusMask); for(int i=0;isubneti=subnetPlusMaski; this-TempSubi=subnetPlusMaski; subneti=0; TempSubi=0; if(i=smLen-2) /初始化mask和maskIsValid if(i=smLen-2) temp0=subnetPlusMaski+1; if(!isdigit(tem

9、p0) maskIsValid=false; else if(i=smLen-3) temp0=subnetPlusMaski+1; temp1=subnetPlusMaski+2; if(!(isdigit(temp0)&isdigit(temp1) maskIsValid=false; mask=atoi(temp); if(mask32) maskIsValid=false; else /用十进制表示的掩码中的1的个数只能是一位数或两位数 maskIsValid=false; strcpy(this-subnetPlusMask,subnetPlusMask); /给subnetPlus

10、Mask赋值 strcpy(this-ip,ip); /给IP赋值 strcpy(this-TempIp,ip);/调用判别函数,并输出结果ipTest:print() bool subIsV=subnetIsValid(TempSub); bool ipIsV=ipIsValid(TempIp); if(!subIsV) /subnet非法 coutsubnet is invalid ! endl; else coutvalid subnet: subnetendl; if(!maskIsValid) /mask非法 coutmask is invalid ! endl; else cout

11、valid mask: maskendl; if(!ipIsV) /ip非法 coutip is invalid ! endl; else coutvalid ip: ipendl; /判断ip是否belong subnet if(subIsV & ipIsV & maskIsValid) belong();/子函数,判断输入是否含有非数字字符bool ipTest:NoIllegalChar(char *ch) unsigned int i,k=0; for(i=0;istrlen(ch)-1;i+); if(isdigit(*(ch+i)=0) /判断每一位是否为数字字符 return f

12、alse; return true; /若不含有非数字字符则返回true/判断IP地址是否合法bool ipTest:ipIsValid(char *ip) char ch= .; /分隔符 char *token,*dot4; int iplen=0; token=strtok(ip,ch); /以.标志将IP字符串按字节分开 while(token!=NULL) /循环进行,直到结束 dotiplen=token; /将分开的每段赋值给dot iplen+; token=strtok(NULL,ch); if(iplen!=4) return false; /段数不对 for(int i=

13、0;i255) /有非法字符或某段值非法 return false; return true;/判断子网号是否合法bool ipTest:subnetIsValid(char* subnet) if(!ipIsValid(subnet) /调用判别IP地址合法性的函数 return false; return true;/判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题void ipTest:belong() int subLen=strlen(subnet); int ipLen=strlen(ip); unsigned int iIPA,iSubA,iMas

14、k; unsigned char subA4,ipA4; char temp3; int i,j,t=0; for(i=0,j=0;isubLen;i+) /不用再检错 if(subneti!=.) tempj+=subneti; /temp数组中放.间的串 else subA3-t=atoi(temp); /subA数组中放.间的数据 j=0; t+; temp0=temp1=temp2=0; subA0=atoi(temp); temp0=temp1=temp2=0; iSubA=*(unsigned int *)subA; /iSubA中放subnet中.除外的串对应的数 for(i=0

15、,j=0,t=0;iipLen;i+) /不用再检错 if(ipi!=.) tempj+=ipi; else ipA3-t=atoi(temp); j=0; t+; temp0=temp1=temp2=0; ipA0=atoi(temp); iIPA=*(unsigned int *)ipA; /iIPA中放IP中.除外的串对应的数 iMask=0xffffffff; iMask=(32-mask); /获得掩码 if(iSubA | iMask)!=iMask) /说明sub与mask不匹配 cout 子网号与掩码不匹配,error!endl; return; if(iSubA iMask)

16、=0) /说明子网号全1 cout 子网号全1,error!endl; return; if(iSubA & iMask)=0) /说明子网号全0 cout 子网号全0,error!endl; return; if(iSubA) = (iIPA & iMask) /IP和掩码与,结果和子网号进行比较 if(iIPA | iMask)=iMask) /说明主机号全0 cout 主机号全0,error!endl; return; if(iIPA | iMask)=0xffffffff) /说明主机号全1 cout 主机号全1,error!endl; return; /ip属于subnet cout

17、 ipbelongs tosubnetPlusMaskendl; return;/ip不属于subnetelse cout ipdoesnt belong tosubnetPlusMaskendl; 【程序运行】设计心得:本次计算机网络课程设计维持了一周的时间,通过这次的课程设计,使我对网络协议中校验和的设置与计算以及IP地址的合法性及子网判断有了很好的理解与掌握,拓宽了我网络方面的知识,同时也加强了我程序设计的能力,不得不说这次的课程设计让我收获很大。此次课程设计主要是完成校验和的计算以及判断IP合法性,由于之前对这方面的知识了解不是很多,所以在课设刚开始的我们都不知道从何入手,随后我结合老师发给我们的资料对内容做了进一步的了解,才对校验和IP合法性以及子网方面的知识有了一定的掌握,并且知道了设置校验和的作用以及各类IP的分类子网划分等等。一周的课程设计使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助过我的同学。同时,让我知道课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次课程设计使我明白了自己原来知识还比较欠缺。在日后为期不多的大学学习中,理论联系实际,不断提高自己的学习能力。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1