欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    ip地址的合法性及子网判断Word文档下载推荐.docx

    • 资源ID:358984       资源大小:106.93KB        全文页数:19页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ip地址的合法性及子网判断Word文档下载推荐.docx

    1、三、课程设计的相关技术1.IP地址相关概念所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。 按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“”分开不同的字节。于是,上面的IP地

    2、址可以表示为“10001”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个或多个物理网络,那么它可以拥有两个或多个IP地址。IP地址采用分层结构,由网络号与主机号两部分组成(如下图所示):网络号主机号IP地址长度为32位,用点分十

    3、进制表示,格式为.,每个为8位,每个的值为0255(例如202.113.29.119)。根据不同的取值范围,IP地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:A类地址的第一位为0。B类地址的前两位为10 .C类地址的前三位为110。D类地址的前四位为1110。E类地址的前五位为11110。五类IP地址的结构如下所示;网络号(7位)主机号(24位)10网络号(14位)主机号(16位)110网络号(21位)主机号(8位)1110组播地址(28位)11110保留用于课程设计和将来使用A类IP地址结构适合用于有大量主机的大型网络。由于主机号长度为24位,因此每个A类网

    4、络的主机IP数理论上为224=16777216。B类IP地址适合用于一些国际性大公司与政府机构等中等大小的组织。由于网络IP长度为14位,因此允许有214=16384个不同的B类网络,实际允许连接16382个网络。C类IP地址适合用于一些小公司与普通的研究机构。2.特殊的IP地址形式(1)直接广播地址A类,B类,C类IP地址中主机号全1的地址称为直接广播地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的是点点传输方式,分组广播需要通过软件来实现。主机号全1(2)受限广播地址网络号与主机号的32位全位1的地址为受限广播地址,用来

    5、将一个分组以广播方式发送给本网的所有主机。本网的所有主机将接受该分组,路由器则阻挡该分组通过。全1(3) “这个网络上的这台主机”地址全0(4)“这个网络上的特定主机”地址主机或路由器向本网络上的某个特定的主机发送分组,网络号部分为全0,主机号为确定的值。这样的分组被相知在本网络内部。网络号全0(5)回送地址回送地址用于网络软件测试和本地进程见通信。TCP/IP协议规定网络号为127的分组不能出现在任何网络上;主机和路由器不能为该地址广播任何寻址信息。127任意值(通常取1)3子网的划分人们在早期设计与建设ARPAnet是,没有预料到网络的发展速度如此之快,应用范围如此之广。当时个人计算机与局

    6、域网尚未出现。所以,研究者在设计Internet地址的编址方案时,主要是针对大型互联的网络结构。设计IP地址的最初目的是希望每个IP得志都能唯一地、确定地识别一个网络与一台主机,但是这种方法同时也存在着两个主要的问题,即IP地址的有效利用率和路由器的工作效率。为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。子网就是一个大的网络划分成几个较小的网络,而每一个小网络都是其自己的地址。超网就是将一个组织所属的几个C类网络合并成为一个更大地址范围的逻辑网络。划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host

    7、 ID。第一级网络号定义了网点的位置;第二级子网号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。子网掩码表示方法:网络号与子网号置1,主机号置0。如判断某一IP地址是否属于某一子网呢?只需将二进制IP地址与子网掩码按位进行“与”运算。若“与”运算所得值与给定子网地址一致,则说明该IP地址属于给

    8、定的子网。四课程设计过程1、课程设计流程图:五程序运行结果(1)在命令提示窗口中输入命令:ip_test 202.113.16.0/24 202.113.16.10结果如下:这个结果表示所输入的子网及ip地址是合法的(2)判断ip地址无效在命令提示窗口中输入命令:ip_test 202.113.16.0/24 202.113.16.1%该结果表示所输入ip地址无效,因为ip地址中有无效字符“%”。在命令提示窗口中输入命令:ip_test 202.113.16.0/24 202.113.16.10.10由命令可以很明显的看出ip地址过长,说明该程序算法正确。(3)判断掩码的有效性ip_test

    9、202.113.16.0/2a 202.113.16.10很显然,掩码中含有“a”,不合法。ip_test 202.113.16.0/33 202.113.16.10因掩码不能长于32位,上提示掩码无效进一步说明该算法的正确性。(4)判断ip地址是否属于该子网在(1)中是该ip地址属于该子网的情况ip_test 202.113.16.0/24 202.113.15.10,显然该ip地址不属于该子网。该结果符合我们的预想。(5)提示子网号全0或全1ip_test 0.0.0.0/24 202.113.16.10ip_test 255.255.255.0/24 202.113.15.10(6)判断

    10、主机号全0或全1ip_test 202.113.16.0/24 202.113.16.0ip_test 202.113.16.0/24 202.113.16.255以上现象充分说明该算法是完全正确的。六、课程设计小结为期两天的计算机网络课程设计就这样结束了,在整个设计过程中我们遇到了各种意想不到的问题,遍尝了各种滋味,既享受到成功的欢欣,有品尝到失败的懊恼,总之,充满了艰辛,一路上磕磕跘跘,甚是不易。一开始,老师要我们选择课程设计题目,我们选择了 “IP地址的合法性及子网判断”这个题目!但是,当我们大伙坐下来仔细分析题目时,发现这并没有我们当初想的那么简单,首先,在考虑IP地址(subnet子

    11、网地址原理相同)非法的情况时,我们就漏掉了几种情况。最后,当我们输入命令行进行运行时,却发现不管我们输入的子网地址是否合法,运行结果都显示:subnet is invalid。我们分析了很久也找不到原因,无奈我们再一次寻求同学的帮助。他只是把整个程序大致浏览了一下就发现了错误,原来我们把char ip15,char subnetPlusMask18,char subnet18,char TempIp15这几个变量设置成了私有变量,导致后面的程序不能访问。把代码按老师的指导修改后,调试,运行显示的结果准确无误,这才把课程设计的核心编写源代码搞定。平常我们都只顾对理论的学习,而没花时间进行实践,课

    12、程设计为我们提供了一个把理论知识进行实践的绝好机会,课程设计要求我们既动手有动脑,即要独立思考又要团队配合,锻炼我们的分析实际问题,解决实际问题的能力,提高我们适应实际,实践的能力。一言以蔽之,我们既要强调对理论知识的学习,又要注重实践,在实践过程中加强对理论知识的理解,使实践与理论学习形成良性循环。最后,真诚地感谢老师的指导。七.参考文献1张尧学,郭国强,王晓春,赵艳标。计算机网络与Internet教程第2版。清华大学出版社,2006,11。2吴功宜,胡晓英,张仁,何云,王宁。计算机网络课程设计。机械工业出八.附录:课程设计原代码版社,2005,9。#include string.hstdl

    13、ib.hstdio.hmath.hctype.hwinsock2.hws2tcpip.htime.hwindows.h#pragma comment(lib,ws2_32.lib)/类结构class ipTestpublic: char ip15; char subnetPlusMask18; char subnet18; char TempIp15;l maskIsValid; int mask; char Tempsub18; ipTest(char *,char *); ipTest(); bool NoIllegalChar(char *); /非法字符的判断 bool ipIsVal

    14、id(char *); /判断IP地址是否合法 bool subnetIsValid(char *); /判断子网号是否合法 void belong(); /判断IP是否为子网成员 print();/主函数void main(int argc,char * argv) if(argc!=3) /判断参数格式化是否正确 couterrorendl18) /先判断最简单的错误,长度是否超出 cout15)ip is too long ipTest test(argv1,argv2); /实例话ipTest类 test.print(); /完成相应判别并输出结果/构造函数ipTest:ipTest(

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

    16、Valid = false; else if( i = smLen-3 ) temp0=subnetPlusMaski+1; temp1=subnetPlusMaski+2;(isdigit(temp0)&isdigit(temp1) ) maskIsValid=false; mask = atoi(temp); if( mask 32) maskIsValid = false; else strcpy( this-subnetPlusMask, subnetPlusMask);ip, ip );TempIp, ip );/调用判别函数,并输出结果print() bool subIsV=sub

    17、netIsValid(Tempsub); bool ipIsV=ipIsValid(TempIp); if(!subIsV)subnet is invalid ! valid subnet:subnet if(!maskIsValid)mask is invalid!valid mask:maskipIsV)ip is invalid!valid ip:ip /判断IP是否belong subnet if(subIsV&ipIsV& belong();/子函数,判断输入是否含有非数字字符bool ipTest:NoIllegalChar(char *ch) unsigned int i,k=0

    18、; for(i=0;istrlen(ch);i+) if(isdigit(*(ch+i)=0) return false; return 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!=

    19、4) coutTempsub255) /有非法字符或某段值非法 return true;subnetIsValid(char* subnet) ipIsValid(subnet) /调用判别IP地址合法性的函数/判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题 void ipTest:belong() int subLen=strlen(subnet); int ipLen=strlen(ip); unsigned int iIPA,iSubA,iMask; unsigned char subA4,ipA4; char temp3; int i,j,t=0; f

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

    21、ipA3-t = atoi(temp); ipA0 = atoi(temp); iIPA = *( unsigned int* )ipA; /iIPA中放IP中 iMask = 0xffffffff; iMask=(32-mask); /获取掩码 if( ( iSubA | iMask ) != iMask ) /说明sub与mask不匹配 子网号与掩码不匹配,error! if( ( iSubA iMask ) = 0 ) /说明子网号全1 子网号全1,error! if( ( iSubA & iMask ) = 0 ) /说明子网号全0 子网号全0,error! if( ( iSubA) = (iIPA & iMask) ) /IP和掩码与,结果和子网号比较 if( ( iIPA | iMask) = iMask ) /说明主机号全0 cout 主机号全0,error! return; if( ( iIPA | iMask ) = 0xffffffff ) /说明主机号全1 主机号全1,error! /ip属于subnet ip belongs to subnetPlusMask


    注意事项

    本文(ip地址的合法性及子网判断Word文档下载推荐.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开