




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*大学课 程 设 计 书学院 专业 班级 题目 教师 学生 摘 要<摘要>关键字:IP地址 子网掩码 网络号 主机号 合法性 课题设计组成员分工表课题名称IP地址的合法性及子网判断课题组成员姓名学号分工教师评分负责选题、代码编写程序测试、报告格式排版课程设计分析、报告的书写目 录第一章 绪论11.1 设计目的11.2 设计的意义11.2.1有利于对基础知识的理解11.2.2 有利于逻辑思维的锻炼11.2.3 有利于与其他学科的整合11.2.4 有利于治学态度的培养1第二章 课程设计的内容和要求2第三章 课程设计的相关技术33.1 IP地址相关概念33.2 特殊的IP地址形式43.2
2、.1直接广播地址43.2.2 受限广播地址43.2.3 “这个网络上的这台主机”地址43.2.4 “这个网络上的特定主机”地址43.2.5 回送地址53.3 子网的划分5第四章 课程设计分析64.1 程序流程图64.2 核心代码及说明74.2.1 判断IP地址是否合法74.2.2 判断IP地址是否为子网成员7第五章 程序测试95.1 判断子网掩码与ip地址不匹配95.2 判断子网掩码与ip地址匹配95.3 判断ip地址无效95.4 判断掩码的有效性105.5 判断ip地址是否属于该子网115.6 提示子网号全0或全1115.7 判断主机号全0或全112第六章 运行结果13第七章 课程设计小结1
3、4致 谢15参考文献16附录 课程设计源代码17第一章 绪论1.1 设计目的掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。1.2 设计的意义1.2.1有利于对基础知识的理解1.2.2 有利于逻辑思维的锻炼程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。1.2.3 有利于与其他学科的整合在程序设计中,
4、我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。1.2.4 有利于治学态度的培养程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养。第二章 课程设计的内容和要求在掌握IP地址的表示方法以及子网划分方法的基础上,并以计算机网络中关于IP地址的
5、相关理论知识为基石,运用C/C+语言按如下要求完成程序。Ø 在判断一个IP地址合法性时要自行编写代码,不要使用任何inet函数Ø 命令行格式:IPAddress subnet_address/mask ip_address其中,IPAddress为程序名;subnet_address为子网地址;mask为掩码;ip_address表示要测试的IP地址。比如说,要测试的IP地址为202.113.16.10,子网号码是202.113.16.0,子网掩码是255.255.255.0,则命令行为IPAddress 202.113.16.0/24 202.113.16.10。(因为2
6、55.255.255.0是连续的24个1,所以用24表示)Ø 判断subnet_address和ip_address的合法性。在判断IP地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑各种情况,全面分析问题。例如以下IP地址均不合法:123.2.1123.23$.2.1123.2345.2.1123.23.45.1Ø 判断掩码的合法性。譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。Ø 在IP地址合法,掩码合法以及子网号也合法的前提下,判断ip_address是否属于subnet_address。Ø 输出命令行中的IP是否
7、合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_address是否属于子网subnet_address。Ø 还可以判断子网号,主机号全0,全1问题。第三章 课程设计的相关技术3.1 IP地址相关概念大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个或多个物理网络,那么它可以
8、拥有两个或多个IP地址。IP地址采用分层结构,由网络号与主机号两部分组成(如表3.1):表3.1 ip结构网络号主机号 IP地址长度为32位,用点分十进制表示,格式为.,每个为8位,每个的值为0255(例如202.113.29.119)。根据不同的取值范围,IP地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:·A类地址的第一位为0。·B类地址的前两位为10 .·C类地址的前三位为110。·D类地址的前四位为1110。·E类地址的前五位为11110。表3.2 IP地址的分类五类IP地址的结构如表3.2。0网络号(7
9、位)主机号(24位)10网络号(14位)主机号(16位)110网络号(21位)主机号(8位)1110组播地址(28位)11110保留用于课程设计和将来使用A类IP地址结构适合用于有大量主机的大型网络。由于主机号长度为24位,因此每个A类网络的主机IP数理论上为224=16777216。B类IP地址适合用于一些国际性大公司与政府机构等中等大小的组织。由于网络IP长度为14位,因此允许有214=16384个不同的B类网络,实际允许连接16382个网络。C类IP地址适合用于一些小公司与普通的研究机构。3.2 特殊的IP地址形式3.2.1直接广播地址表3.3 直接广播地址A类,B类,C类IP地址中主机
10、号全1的地址称为直接广播地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的是点点传输方式,分组广播需要通过软件来实现,如表3.3。网络号主机号全13.2.2 受限广播地址表3.4 限制广播地址网络号与主机号的32位全位1的地址为受限广播地址,用来将一个分组以广播方式发送给本网的所有主机。本网的所有主机将接受该分组,路由器则阻挡该分组通过,如表3.4。全1表3.5 主机地址3.2.3 “这个网络上的这台主机”地址,如表3.5。全03.2.4 “这个网络上的特定主机”地址,如表3.6。表3.6 特定主机地址主机或路由器向本网络上的
11、某个特定的主机发送分组,网络号部分为全0,主机号为确定的值。这样的分组被限制在本网络内部。网络号全0主机号3.2.5 回送地址表3.7 回送地址回送地址用于网络软件测试和本地进程见通信。TCP/IP协议规定网络号为127的分组不能出现在任何网络上;主机和路由器不能为该地址广播任何寻址信息,如表3.7。127任意值(通常取1)3.3 子网的划分人们在早期设计与建设ARPAnet时,没有预料到网络的发展速度如此之快,应用范围如此之广。当时个人计算机与局域网尚未出现。所以,研究者在设计Internet地址的编址方案时,主要是针对大型互联的网络结构。设计IP地址的最初目的是希望每个IP得志都能唯一地、
12、确定地识别一个网络与一台主机,但是这种方法同时也存在着两个主要的问题,即IP地址的有效利用率和路由器的工作效率。为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。子网就是一个大的网络划分成几个较小的网络,而每一个小网络都是其自己的地址。超网就是将一个组织所属的几个C类网络合并成为一个更大地址范围的逻辑网络。划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host ID。第一级网络号定义了网点的位置;第二级子网号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的
13、路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。子网掩码表示方法:网络号与子网号置1,主机号置0。如判断某一IP地址是否属于某一子网呢?只需将二进制IP地址与子网掩码按位进行“与”运算。若“与”运算所得值与给定子网地址一致,则说明该IP地址属于给定的子网。第四章 课程设计分析4.1 程序流程图图4.1 程序流程图4.2 核心代码及说明4.2.1 判断IP地址是否合法 我们先检验明显的错误,例
14、如,可以先判断IP中“.”的个数是否正确;接着,以“.”为标志将IP字符串按节分开;然后,看该IP是否分为4段,再判断各节是否是0-255间的整数。关于网络号、主机号全0全1等问题,要在后面结合子网掩码一起判断。这里的关键是怎么将IP字符串以“.”为标志按节分开,这要用到函数strtok,第一个参数是给定的串,第二个参数是分隔符集合,该函数的功能是以strDelimit中包含的任意字符为分隔符,在strToken中寻找下一个token。每一次调用strtok后,都会在strToken中插入一个NULL字符。如果要读取下一个token,接下来调用strtok时第一个参数用NULL。bool ip
15、Test:ipIsValid(char * ip)char ch=" ." char *token,*dot4;int iplen=0;token=strtok(ip,ch); /以"."标志将IP字符串按节分开while(token!=NULL) /循环进行,知道结束dotiplen=token; /将分开的每段赋值给dotiplen+;token= strtok(NULL,ch);这样,IP串的每一段都放到dot数组中,下面可以判断是否有非法字符,每段的值是否在0-255之间。4.2.2 判断IP地址是否为子网成员 判断子网号与掩码是否匹配,以及子网
16、号、主机号全0全1问题。if( ( iSubA | iMask ) != iMask ) /说明sub与mask不匹配cout<<" 子网号与掩码不匹配,error!"<<endl;return;if( ( iSubA iMask ) = 0 ) /说明子网号全1cout<<" 子网号全1,error!"<<endl;return;if( ( iSubA & iMask ) = 0 ) /说明子网号全0cout<<" 子网号全0,error!"<<endl
17、;return;if( ( iSubA) = (iIPA & iMask) ) /IP和掩码与,结果和子网号比较if( ( iIPA | iMask) = iMask ) /说明主机号全0cout<<" 主机号全0,error!"<<endl;return;if( ( iIPA | iMask ) = 0xffffffff ) /说明主机号全1cout<<" 主机号全1,error!"<<endl;return;/ip属于subnetcout<<" "<<
18、 ip <<" belongs to "<<subnetPlusMask<<endl;return; /ip不属于subnetelsecout<<" "<< ip <<" doesn't belong to "<<subnetPlusMask<<endl;第五章 程序测试5.1 判断子网掩码与ip地址不匹配在命令提示窗口中输入命令:ipTest 201.12.13.4/21 123.1.23.0结果如图5.1:图5.1 子网号与掩码
19、不匹配这个结果表示所输入的子网掩码及ip地址不匹配。5.2 判断子网掩码与ip地址匹配在命令提示窗口中输入命令:ipTest 199.12.134.0/24 199.12.134.22结果如图5.2:图5.2 子网号与掩码匹配这个结果表示所输入的子网掩码及ip地址匹配。5.3 判断ip地址无效在命令提示窗口中输入命令:ipTest 201.1.0.2/23 201.1.s.1结果如图5.3:图5.3 ip地址无效该结果表示所输入ip地址无效,因为ip地址中有无效字符“s”。在命令提示窗口中输入命令:ipTest 198.1.1.0/24 198.1.1.123.1结果如图5.4:图5.4 ip
20、地址超过32位由命令可以很明显的看出ip地址超过32位,说明该IP地址错误。5.4 判断掩码的有效性在命令提示窗口中输入命令:ipTest 198.1.1.0/2q 198.1.1.123结果如图5.5:图5.5 掩码不合法很显然,掩码中含有“q”,不合法。在命令提示窗口中输入命令:ipTest 198.1.1.0/34 198.1.1.123结果如图5.6:图5.6 掩码不能超过32位因掩码不能长于32位,上提示掩码无效进一步说明该算法的正确性。5.5 判断ip地址是否属于该子网在(2)中是该ip地址属于该子网的情况在命令提示窗口中输入命令:ipTest 199.12.134.0/30 19
21、9.12.134.22,显然该ip地址不属于该子网。结果如图5.7:图5.7 ip地址不属于子网5.6 提示子网号全0或全1在命令提示窗口中输入命令:ipTest 255.255.255.0/24 199.12.134.22结果如图5.8:图5.8 子网号全为1命令提示窗口中输入命令:ipTest 0.0.0.0/24 199.12.134.22结果如图5.9:图5.9 子网号全为05.7 判断主机号全0或全1在命令提示窗口中输入命令:ipTest 192.12.134.0/24 199.12.134.0结果如图5.10:图5.10 主机号全为0在命令提示窗口中输入命令:ipTest 192.
22、12.134.0/24 199.12.134.255结果如图5.11:图5.11 主机号全为1综上该程序测试是正确的。第六章 运行结果程序运行结果如图6.1:图 6.1 运行结果经过运行测试,以上运行结果是正确的。第七章 课程设计小结这次的课程设计,我们组选的这个题目还是相对比较简单的,对于IP地址的合法性及子网判断这个题目我们刚学完计算机网络,还比较熟悉,对其中的知识相对比较了解。在平时的学习过程中都是学习理论知识没有实际操作过,通过这次的实验得到了很好的锻炼,我们三个成员之间分工明确,配合默契。当然,还要非常感谢何老师在本次课程设计中对我们的指导,所以在操作的时候能很快熟悉实验内容及方法,
23、得到相应的运行结果,总的来说,实验比较顺利,从这次的实验中我们也学到了很多的知识,对我们以后的学习也是非常有帮助的。致 谢在这次课程设计的撰写过程中,我得到了许多的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我们的同学,他们也为我解决了不少我们不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在设计中曾经帮助过我们的良师益友和同学
24、。参考文献1 谢希仁.计算机网络第5版.北京:电子工业出版社,2008.2 吴功宜,胡晓英,张仁,何云.计算机网络课程设计.北京:机械工业出版社,2005.3 张尧学,郭国强,王晓春,赵艳标.计算机网络与Internet教程第2版.北京:清华大学出版社,2006.4 吴功宜,等.网络安全高级软件编程技术M.北京:清华大学出版社,2010.5 辛希孟.信息技术与信息服务国际研讨会论文集:A集C.北京:中国社会科学出版社,2004. 附录 课程设计源代码#include <iostream.h>#include <string.h>#include <stdlib.h
25、>#include <ctype.h>/类结构class ipTestchar ip15;char subnetPlusMask18;char subnet18;char TempIp15; bool maskIsValid;int mask;char Tempsub18;public: ipTest(char *,char *);ipTest();bool NoIllegalChar(char *); /非法字符的判断bool ipIsValid(char *); /判断IP地址是否合法bool subnetIsValid(char *); /判断子网号是否合法void b
26、elong(); /判断IP是否为子网成员void print(); /主函数void main(int argc,char * argv)if(argc!=3) /判断参数格式化是否正确cout<<"error"<<endl<<"format shoud be:ip_test subnet/mask ip"<<endl;return;elseif(strlen(argv1)>18) /先判断最简单的错误,长度是否超出cout<<"subnet/mask is too long&
27、quot;return;if(strlen(argv2)>15)cout<<"ip is too long"return;ipTest test(argv1,argv2); /实例话ipTest类test.print(); /完成相应判别并输出结果/构造函数ipTest:ipTest( char* subnetPlusMask, char *ip)maskIsValid=true;char temp2;/把'/'前的字符复制到subnet字符数组中int smLen=strlen(subnetPlusMask);for( int i=0;
28、i<smLen && subnetPlusMaski !='/' i+ )this->subneti=subnetPlusMaski;this->Tempsubi=subnetPlusMaski;subneti='0'Tempsubi='0'if(i<=smLen-2) /初始化mask和maskIsVslidif(i=smLen-2)temp0=subnetPlusMaski+1;if( !isdigit(temp0) )maskIsValid = false;else if( i = smLen-3 )
29、 temp0=subnetPlusMaski+1;temp1=subnetPlusMaski+2;if( !(isdigit(temp0)&&isdigit(temp1) )maskIsValid=false; mask = atoi(temp);if( mask<0 | mask > 32)maskIsValid = false;elsemaskIsValid=false;strcpy( this->subnetPlusMask, subnetPlusMask);strcpy( this->ip, ip );strcpy( this->TempI
30、p, ip );/调用判别函数,并输出结果void ipTest:print()bool subIsV=subnetIsValid(Tempsub);bool ipIsV=ipIsValid(TempIp);if(!subIsV)cout<<"subnet is invalid ! "<<endl;elsecout<<"valid subnet: "<<subnet<<endl;if(!maskIsValid)cout<<"mask is invalid!"<
31、;<endl;elsecout<<"valid mask:"<<mask<<endl;if(!ipIsV)cout<<"ip is invalid!"<<endl;elsecout<<"valid ip:"<<ip<<endl;/判断IP是否belong subnetif(subIsV&&ipIsV&&maskIsValid)belong();/子函数,判断输入是否含有非数字字符bool ipTest:NoIllegalChar(char *ch)unsigned int i,k=0;for(i=0;i<strlen(ch);i+)if(isdigit(*(ch+i)=0)retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生管理政策变动对考试的影响题
- 医院排名面试题及答案
- 探索卫生管理考点试题及答案
- 系统架构设计师资源优化管理试题及答案
- 药学进阶学习路径试题及答案
- 药剂学实践教学的改革探索试题及答案
- 激光技术在教育培训中的应用试题及答案
- 激光工程师职业挑战考题试题及答案
- 小学综合考试试题及答案
- 智慧治理面试题及答案
- 离职体检免责协议书
- 光电工程师需掌握的常用计算试题及答案
- 3D打印在康复辅具中的应用-全面剖析
- 县级安全生产大讲堂课件
- 北京市门头沟区2025届高三一模考试生物试题(原卷版+解析版)
- 安徽省合肥市2024-2025学年高三下学期第二次教学质量检测生物学试卷(含答案)
- 2025年中国诗词大会知识竞赛模拟题库及答案(215题)
- 物业部团队建设与管理
- 焊接知识培训课件模板
- 棱柱棱锥棱台的表面积与体积课件-高一下学期数学人教A版
- 广东省深圳市宝安区2023-2024学年七年级下学期数学期中试卷(含答案)
评论
0/150
提交评论