版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计报告题 目:ip地址的合法性及子网判断学生姓名:学 号:专业班级:同组姓名:指导教师:设计时间:指导老师意见:签名:评定成绩:fi期: 年 月 日目录一、课程设计的目的和意义11. 1设计目的21. 2设计的意义2二、课程设计的内容和要求2三、课程设计的相关技术31. ip地址相关概念32. 特殊的ip地址形式53子网的划分6四课程设计过程61、课程设计流程图: 6六、课程设计小结10七.参考文献11八附录:课程设计原代码12课程设计的目的和意义11设计目的掌握ip地址的分类,准确理解子网、掩码的概念,确切地明了 ip地址的 合法格式。并判断该地址是否属于一个给定的子网。1.
2、 2设计的意义1、有利于对基础知识的理解2、有利于逻辑思维的锻炼程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问 题、解决问题能力的学科z-o即使一个简单的程序,从任务分析、确定算 法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思, 这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、 预测目标等能力的培养。3、有利于与其他学科的整合在程序设计屮,我们可以解决其它学科有关问题,也利用其它课程的有 关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其 它学科的知识,发挥信息技术的优势。4、有利于治学态度的培养。程序设计中,语句的语法和常量
3、变量的定义都有严格的要求,有时输了 一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此, 程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次 的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。 这当中就有一个严谨治学、一丝不苟的科学精神的培养。二、课程设计的内容和要求在掌握ip地址的表示方法以及子网划分方法的基础上,并以计算机网络中关于ip地址的相关理论知识为基石,运用c/c+语言按如下要求完成程序。1. 在判断一个ip地址合法性时要自行编写代码,不要使用任何ine(函数2. 命令行格式:ip_tcst subnct/mask ip_addr其中
4、,ip_test为程序名;subnet为子网号;mask是一个整型数值,代表子网掩码连续1的个数;ip.addr表示要测试的tp地址。比如说,要测试的ip地址为202. 113. 16. 10,子网号码是202. 113. 16. 0,子网掩码是 255. 255. 255. 0,则命令行为 ip_test202. 113. 16. 0/24 202. 113. 16. 10。 (因为255. 255. 255. 0是连续的24个1,所以用24表示)3. 判断subnet和ip_addr的合法性。在判断ip地址合法性吋要自行编写代码,不要使用任何inet函数。判断时要考虑各种情况,全面分析问题
5、。例如以下ip地址均不合法:123. .2. 1123. 23$. 2. 1123. 2345. 2. 1123.23.45. 14. 判断掩码的合法性。譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。5. 在ip地址合法,掩码合法以及子网号也合法的前提下,判断ipddr是否屈 于 subneto6. 输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet07. 还可以判断子网号,主机号全0,全1问题。课程设计的相关技术1. ip地址相关概念所谓ip地址就是给每个连接在internet ±的主机分配
6、的一个32bit地址。按照 tcp/ip (transport control protocol/lnternet protocol,传输控 制协议/internet协议)协议规定,ip地址用二进制来表示,每个ip地址长 32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的ip地址 是“00001010000000000000000000000001”,这么长的地址,人们处理起来也 太费劲了。为了方便人们的使用,ip地址经常被写成十进制的形式,屮间使用 符号分开不同的字节。于是,上面的ip地址可以表示为“100. 01”。 ip地址的这种表示法叫做“点分十进制表示法”,这显然比1
7、和0容易记忆得 多。大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的 每一台主机或者路由器分配一个唯一的全局地址。tcp/ip协议的网络层使用的 地址标识符叫做tp地址,ipv4中tp地址是一个32位的二进制地址。网络中的 每一台主机或者路由器至少有一个ip地址,在internet中不允许有两个设备具 有相同的ip地址。如果一台主机或者路由器连接到两个或多个物理网络,那么 它可以拥有两个或多个ip地址。ip地址采用分层结构,由网络号与主机号两部分组成(如下图所示):网络号主机号ip地址长度为32位,用点分十进制表示,格式为xx. x. x ,每个x为8 位,每个x的值为0255
8、 (例如202. 113.29. 119) o根据不同的取值范围,ip 地址可以分为五类,ip地址中的前5位用于标识ip地址的类别,具体的分类规 则如下: a类地址的第一位为0o b类地址的前两位为10c类地址的前三位为110。d类地址的前四位为llloo e类地址的前五位为11110c五类ip地址的结构如下所示;0网络号(7位)主机号(24位)10网络号(14位)主机号(16位)110网络号(21位)主机号(8位)1110组播地址(28位)11110保留用于课程设计和将來使用a类ip地址结构适合用于有大量主机的大型网络。由于主机号长度为24位, 因此每个a类网络的主机ip数理论上为2刘二16
9、777216。b类1p地址适合用于一些国际性大公司与政府机构等中等大小的组织。由 于网络ip长度为14位,因此允许有2*16384个不同的b类网络,实际允许连 接16382个网络。c类ip地址适合用于一些小公司与普通的研究机构。2. 特殊的ip地址形式(1) 直接广播地址a类,b类,c类ip地址中主机号全1的地址称为直接广播地址,用来使路 由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作 为分组中的目的地址。物理网络采用的是点一点传输方式,分组广播需要通过软 件来实现。网络号主机号全1(2) 受限广播地址网络号与主机号的32位全位1的地址为受限广播地址,用来将一个分组以
10、广播方式发送给本网的所有主机。本网的所有主机将接受该分组,路由器则阻挡 该分组通过。全1(3) “这个网络上的这台主机”地址全0(4) “这个网络上的特定主机”地址主机或路由器向木网络上的某个特定的主机发送分组,网络号部分为全0, 主机号为确定的值。这样的分组被相知在本网络内部。网络号全0主机号(5) 回送地址冋送地址用于网络软件测试和本地进程见通信。tcp/tp协议规定网络号为127的分组不能出现在任何网络上;主机和路由器不能为该地址广播任何寻址信息。127任意值(通常収1)3. 子网的划分人们在早期设计与建设arpanet是,没有预料到网络的发展速度如此之快, 应用范围如此之广。当时个人计
11、算机与局域网尚未岀现。所以,研究者在设计 internet地址的编址方案时,主要是针对大型互联的网络结构。设计ip地址的 最初目的是希望每个ip得志都能唯一地、确定地识别一个网络与一台主机,但 是这种方法同吋也存在着两个主要的问题,即ip地址的有效利用率和路由器的 工作效率。为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。 子网就是一个大的网络划分成几个较小的网络,而每一个小网络都是其自己的地 址。超网就是将一个组织所属的几个c类网络合并成为一个更大地址范围的逻辑 网络。划分子网实际上就是在ip地址系统中增加一个层次。三级ip地址的表示方 法为netld-su
12、bnet id-host id。第一级网络号定义了网点的位置;第二级子网 号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级 层次的ip地址,一个ip分组的路由器的过程分为三步:第一步将分组转发给网 点,第二步转发给物理子网,第三步转发给确切的主机。当三级层次的ip地址提出后,一个很显示的问题是:如何从一个ip地址提 取出子网号。因此,提岀了子网掩码(subnet mask)的概念。子网掩码有时也 叫做子网掩码。子网掩码表示方法:网络号与子网号置1,主机号置0。如判断某一 ip地址是否属于某一子网呢?只需将二进制ip地址与子网掩码 按位进行“与”运算。若“与”运算所得值与给
13、定子网地址一致,则说明该ip 地址属于给定的子网。四.课程设计过程1、课程设计流程图:程序开始,变量初始化程序结束五.程序运行结果程序主要运行界面:1)测试格式是否为三段格式如图:tt):ipdebug>ip 202.133.16 0/24霭籍專需应该是:程序名子网号/掩码ip地址分析:程序要求是“程序名 子网号/掩码ip地址”格式而这里只有两端造成参 数不匹配,出错!> 0为 bu效为址 0员吊it 皆遥ip 1网效效 d:壬名有202133.13316.1.16.1分析:虽然格式是三段、子网号无效且掩码是零蛋其ip地址还是合法的!2)简单判断子网号及掩码长度是否超出范围如图:d
14、:ipj)ebug>ip 202.133.166.224.3/24 202.13.16.10序网号以及子网掩码长度过长!分析:因为程序里设置的子网号和掩码字符串长度最多是18个字符而这里有20个字符大于18,所以出错!d:ipdebug>ip 202.133.160/24 202.133.166.224.3ip施址长度过长!分析:程序中的ip地址字符串最长只有15个而程序中有17个字符大于15个,所以出错!3)测试ip地址是否合法如图:p:ipdebug>ip 202133160/24 12321 有效子网号为= 202.133.16.0 推箱主效?ip地址无效?分析:ip地
15、址不符合格式要求!d:ipdebug>ip 123.23$ .2.1/24 202 1.3326:1 子网号无效? 掩码无效?有效ip地址为:202.133.16.1分析:子网号出现了字符,其为非法字符,所以出错!d:ipdebug>ip 123.2454.2.1/24 202.133.16.1 子网号无效? 掩码无效?有效ip地址为= 202.133.16.1分析:子网号的数字不能大于255,所以出错!d:ipdebug>ip 202.133 16 0/24 123.23 452:l 有效子网号为= 202.133.16.0播码无效?1p地址无效?分析:ip地址段数不是四,
16、所以出错!4)测试子网号与掩码是否匹配如图:d:ipdebug>ip 1.192.0.0/9 1.192.1.1 有效子网号为= 1.192.0.0#發翩炽有僉ip地址为= 1-192.1.1 错误,子网号与掩码不匹配?分析:子网号转换为二进制:00000001 11000000 00000000 00000000子网掩码转换成二进制:11111111 10000000 00000000 00000000从以上可以看出子网号与子网掩码不匹配与输出结果是一样的说明程序算法是正确的!i):ipdebug>ip 1.128.0.0/9 1 192 惰效子网号为:1-128.0.0 尉薮潮
17、痂9有效ipl也址为= 1.192-1.11.192.1.1 属于 1.128.0.0/9分析:子网号转换为二进制:00000001 10000000 00000000 00000000子网掩码转换成二进制:11111111 10000000 00000000 00000000从以上可以看出子网号与子网掩码匹配与输出结果是一样的说明程序算法是正 确的!5) 测试子网号是否全零活全一如图:0 1 0.0 0 0 2 9 0 0 1 0 ip询:1全 9>为:9为号 bu匸另址网 4网黑子 沁子掩ip, i效效效误 d:有有有错5 - 1 ip:2:1全 g>为:0为号 怛另址网 g网
18、爼子 z子掩ip, i效效效误 d:有有亠六、课程设计小结为期-周的计算机网络课程设计就这样结束了,在整个设计过程中我们遇到 了各种意想不到的问题,遍尝了各种滋味,既享受到成功的欢欣,有品尝到失败 的懊恼,总之,充满了艰辛,一路上磕磕踏踏,甚是不易。一开始,老师宣布了分组名单,我们小组被分配到做“ip地址的合法性及子网 判断”这个题目,然后和其他比较陌生的题目比较,譬如:“模拟ethernet帧的 发送过程”,“解析ip数据包”,“发现网络中的活动主机”等,当时就感到很庆 幸自己分到了最熟悉,最容易的题目,真的很感谢老天!但是,当我们大伙坐下来仔细分析题目时,发现这并没有我们当初想的那么简单,
19、 首先,在考虑ip地址(subnet子网地址原理相同)非法的情况时,我们就漏掉 了几种情况。其次,在代码的调试,运行过程中,程序出现了很多的debug,我们大伙坐 在一起,运用集体智慧,解决了其中的一部分简单的错误,余下这样一个debug:configuration: pq - win32 debuglinkinglibcd.lib(wincrtoobj) : error lnk2001: unresolued external symbol _winmain16 debug/pq.exe : fatal error lnk1120: 1 unresolved externalserror e
20、xecuting link.exe.pq.exe - 2 error(s), 0 uarning(s)这让我们很恼火,不知道该怎么处理。不得已只得重复看错误,把debug的提示 看了好久,叫同学帮忙给我们分析出现错课的原因以及解决的方案一一把win32 application的编译环境改为win32 console application的环境。经过这样的 处理果然编译过程中没有出现错谋,这令我们心喜不已。最后,当我们输入命令行进行运行时,却发现不管我们输入的子网地址是否 合法,运行结果都显示:subnet is inval ido我们分析了很久也找不到原因, 无奈我们再一次寻求同学的帮助。他
21、只是把整个程序大致浏览了一下就发现了错 误,原来我们把 char ip15, char subnetplusmask18, char subnet 18, char tcmplp15这几个变量设置成了私有变量,导致后而的程序不能访问。把 代码按老师的指导修改后,调试,运行显示的结果准确无误,这才把课程设计的 核心一一编写源代码搞定。用了一周的时间才完成了课程设计,我深深的感觉到“说起来容易,做起来 难“这句话的含义。什么事都是看起来和说起来容易,但是当你真止做时就难, 在这过程中会遇到很多意料之中和意料之外的”拦路虎“。考试分数并不能完全 说明对理论知识的掌握程度,只有把理论知识运用到实践中时
22、,才能显示我们对 理论知识的理解程度。平常我们都只顾对理论的学习,而没花时间进行实践,课程设计为我们提 供了一个把理论知识进行实践的绝好机会,课程设计要求我们既动手有动脑,即 要独立思考又要团队配合,锻炼我们的分析实际问题,解决实际问题的能力,提 高我们适应实际,实践的能力。一言以蔽之,我们既要强调对理论知识的学习,又要注重实践,在实践过程 中加强对理论知识的理解,使实践与理论学习形成良性循环。最后,真诚地感谢老师的指导。七参考文献1 张尧学,郭国强,王晓春,赵艳标。计算机网络与internet教程第2版。 清华大学岀版社,2006, 11 o2 吴功宜,胡晓英,张仁,何云,王宁。计算机网络课
23、程设计。机械工业出 版社,2005, 9o八附录:课程设计原代码#include <iostream.h>#include <string-h>#include <stdlib.h>#include <stdio.h>#include <math.h>#inelude <ctype.h>#include <winsock2.h>#include <ws2tcpip.h>#include <time.h>#include <windows.h>#pragma comment(l
24、ib/lws2_32jibk)类结构class iptestpublic:char ip| 15;char subnetplusmaskl 8;char subnet18;char templp15;1 masklsvalid;int mask;char tempsub18j;iptest(char *,char *);iptest();非法字符的判断判断ip地址是否合法判断子网号是否合法判断ip是否为了网成员bool noillegalchar(char *);bool ipisvalid(char *);bool subnetisvalid(char *);void belongo;pri
25、nt();主函数void main(int argc.char * argv)if(argc!=3)判断参数格式化是否正确cout«nerrorh«endl«hformat shoud be:ip_test subnet/mask iph«endl;return;elseif(strlen(argvl)>18)先判断最简单的错误,长度是否超出cout«nsubnet/mask is too long"return;if(strlen(argv2)>15)cout«uip is too long'1;ret
26、urn;iptest test(argv 1 ,argv2);实例话 iptest 类完成相应判别并输出结果构造函数iptest:iptest( char* subnetplusmask, char *ip)maskisvalid=true;char temp2;把/前的字符复制到subnet字符数组屮int smlen=strlen(subnetplusmask);for( int i=0; i<smlen && subnetplusmaski !=7f; i+ ) this->subneti=subnetplusmaski; this->tempsubi=
27、subnetplusmaski;subneti-o!;tempsubi='o*;if(i<=smlen-2)初始化 mask 和 masklsvslidif(i=smlen-2)tempo=subnetplusmciski+l;if( !isdigit(tempo)masklsvalid = false;else if( i = smlen-3 )temp01=subnetplusmaskfi+1;temp 1 =subnetplusmaski+2j;if( !(isdigit(templo)&&isdigit(temp 1 j)maskisvalid=false
28、;mask = atoi(temp);if( mask<0 | mask > 32)masklsvalid = false;elsemaskisvalid=false;strcpy( this->subnetplusmask, subnetplusmask);strcpy( this->ip, ip );strcpy( this->tempip, ip);调用判别函数,并输岀结果iptest:print()bool subisv=subnetisvalid(tempsub);bool ipisv=ipisvalid(tempip);if(!subisv)cout&
29、#171;nsubnet is invalid ! h«endl;elsecout«nvalid sub net: h«sub netvvendl; if(!maskisvalid)cout«nmask is invalid!h«endl;elsecout«mvalid mask:m«mask«endl;if(!ipisv)cout«hip is invalid!m«endl;elsecout«nvalid ip:m«ip«endl;判断 ip 是否 belong
30、subnet if(subisv&&ipisv&&m asklsvalid) belongo;子函数,判断输入是否含有非数字字符bool iptest:noillegalchar(char *ch) unsigned int i,k=0;fbr(i=o;i<strlen(ch) ;i+) if(isdigit(*(ch+i)=o) return false;return true;判别ip地址是否合法bool iptest:ipisvalid(char * ip)char ch='*char *token,*dot4;以”标志将ip字符串按节分开i
31、nt iplen=0;token=strtok(ip,ch);while(token!=null)dotiplenj=token;iplen+;token= strtok(null,ch);if(iplen!=4)cout«this->tempsub«endl;return false;)for(int i=0;i<4;i+)if(!noniegalchar(doti)|atoi(doti)>255) return false;return true;循环进行,知道结束将分开的每段赋值给dot段数不对有非法字符或某段值非法判断子网号是否合法bool ipt
32、est: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,imask;unsigned char suba4,ipa4;char temp;int i,j,t=o;for(i=0,j=0;i<sublen;i+)不用再检错if(subneti != t)elsesuba3-t = atoi(temp);/suba 数组中放'.'间的数据j=0;t+;tempo=t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地理疆域考试题库及答案
- 重点项目-石油钻探设备生产建设项目可行性研究报告
- 阀门项目实施方案范文参考
- 防水泡棉生产项目可行性研究报告申请报告编制范文
- 青岛公路可行性研究报告
- 马窝港工程项目铁路专用线工程项目可行性研究报告
- 高中英语(新人教版选必2)Unit 1大单元教学设计
- 高密度印刷电路板项目可行性研究报告
- 高空作业机械行业可行性研究报告
- 2025年安徽省建设工程质量检测人员技术能力(道路工程)专项考试题库(含答案)
- DB51-T 3285-2025 染色体畸变和微核检测质量控制规范
- 2025中国远洋海运集团有限公司校园招聘1200人笔试历年参考题库附带答案详解
- 脓毒性休克相关课件
- 全国大学生职业规划大赛《交通运营管理》专业生涯发展展示【高职(专科)】
- RTO岗位安全培训课件内容
- 2025山东省超越科技股份有限公司社会招聘备考考试题库附答案解析
- 《公共管理研究方法教程》课件第二章
- 全国大学生职业规划大赛《历史学》专业生涯发展展示
- 新能源汽车售后服务财务状况改善与商业模式创新研究报告
- 2025年过磅员技能测试题及答案
- 叉车吊车安全培训内容课件
评论
0/150
提交评论