编程判断IP地址的合法性

上传人:鲁** 文档编号:487991948 上传时间:2022-12-18 格式:DOC 页数:12 大小:206.50KB
返回 下载 相关 举报
编程判断IP地址的合法性_第1页
第1页 / 共12页
编程判断IP地址的合法性_第2页
第2页 / 共12页
编程判断IP地址的合法性_第3页
第3页 / 共12页
编程判断IP地址的合法性_第4页
第4页 / 共12页
编程判断IP地址的合法性_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《编程判断IP地址的合法性》由会员分享,可在线阅读,更多相关《编程判断IP地址的合法性(12页珍藏版)》请在金锄头文库上搜索。

1、XXXXXX大学xxxxxx学院计算机网络与通信实习报告设计题目编程判断IP地址的合法性学生专业班级学生姓名(学号)指导教师完成时 间2010-5-22实 习(设计)地点信息楼139、1122010年 5 月 22 日实习题目编写一个判断IP地址是否合法的计算机程序,如果合法,给出其子网号原理概述在计算机网络中,主要分为三类IP地址,即A类,B类,C类地址,每一类地址都 有其特点和寻址原则。每个IP地址均有32位,8个为一段,共四个字节。每段范围 在0255,超出这个范围就是错误的。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识, 并说明该IP地址是在局域网上,还是

2、在远程网 上。子网掩码的计算根据其具体算法来计算。1. 三类地址的特点:1 1 A类IP地址0 网络号(7位)主机号(24位)一个A类IP地址是指,在IP地址的四段号码中,第一段号码为网络号码,剩下的 三段号码为本地计算机的号码。如果用二进制表示 IP地址的话,A类IP地址就由1 字节的网络地址和3字节主机地址组成,网络地址的最高位必须是 “0”A类IP地址 中网络的标识长度为7位,主机标识的长度为24位,A类网络地址数量较少,可以用 于主机数达1600多万台的大型网络。1 . 2 B类IP地址10网络号(14位)主机号(16位)一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号

3、码,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是 “ 1Q” B类IP地址中网络的标识长度为14位,主机标识的长度为16位,B类网络地址适用 于中等规模规模的网络,每个网络所能容纳的计算机数为6万多台。1 . 3 C类IP地址110网络号(21位)主机号(8位)一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下 的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“ 110” C类IP地址中网络的标识长度为21位,主机标识的长度为8位,C类网络地址数量较多,

4、 适用于小规模的局域网络,每个网络最多只能包含254台计算机。2 . IP的寻址规则:2.1网络寻址规则网络地址必须唯一。网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。 网络标识的第一个字节不能为255。数字255作为广播地址。网络标识的第一个字节不能为 “0” “表示该地址是本地主机,不能传送。2. 2主机寻址规则主机标识在同一网络内必须是唯一的。主机标识的各个位不能都为 “ 1,”如果所有位都为“,则该机地址是广播地址,而非主 机的地址。主机标识的各个位不能都为 “0”如果各个位都为“Q”则表示只有这个网络”,而这个 网络上没有任何主机。3 .IP子网掩码概述3

5、. 1子网掩码的概念子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。3. 2确定子网掩码数用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。在定义子网掩码前,必须弄清楚本来使用的子网数和主机数目。定义子网掩码的步骤为: 确定哪些组地址归我们使用。比如我们申请到的网络号为“210.73ab, ”该网络地址为c类IP地址,网络标识为“210.73,”主机标识为“ab” 根据我们现在所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。比如我们现在需要12个子网,将来可能需要16个。用第三个字节的前

6、 四位确定子网掩码。前四位都置为 “,即第三个字节为“ 11110000,这个数我们暂且 称作新的二进制子网掩码。 把对应初始网络的各个位都置为“,即前两个字节都置为“ 1,”第四个字节都置为“ 0”则子网掩码的间断二进制形式为:“ 11111111.11111111.11110000.00000000 把这个数转化为间断十进制形式为:“255.255.240.0 ”1. 实验开发环境Microsoft Visual C+6.0来实现这个系统。2. 系统分析及函数说明为了避免使系统使用过多重复的代码以及增加程序的可读性我们可以定义一个类 结构ipTest ;输入的字符串需要判断是否是只是数字而

7、不是其他的不合法字符我们就 需要定义一个NolllegalChar()来判断其输入的串是否是字符;要判断IP地址及子网 号是否合法我们就需要设计一个函数来判断IP地址及子网号是否正确的函数我们设函数分别为iplsValid()和subnetIsValid();判断Ip是否属于该子网号我们用函数bel on g();最后我们需要输出结果我们就使用prin t()来实现又好的输出。其详细的函数及功能如下:NolllegalChar(char *):判断包括是否有非法字符、段值是否为四 iplsValid(char *) :判断IP地址是否合法也包括非法字符、段值的判断 sub netIsValid

8、(char *):判断子网号是否合法也包括非法字符、段值的判断belong():判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、 主机号全0全1问题print():定义输出函数print。3 程序流程图a、主流程图b、验证ip地址合法性流程图C、验证子网掩码合法性流程图四程序编写1 .判断IP地址是否合法#in clude#i ncludevstri ng.hint main()char str31,temp31;/定义IP地址为32位的字符类型int a,b,c,d; /定义IP地址的四个字节为a,b,c,d,并且均为整型的Printf(请输入IP地址” while(gets(

9、str) != NULL) if(sca nf(str,%d.%d.%d.%d,&a,&b,&c,&d)=4&a=0&a=0&b=0&c=0&d=255)/IP地址每个字节的范围限制prin tf(temp,%d.%d.%d.%d,a,b,c,d);if(strcmp(temp,str)=O)printf(IP 地址合法 n);elseprintf(IP地址不合法n);elseprintf(IP地址不合法n);return 0;2判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题if(!iplsValid(subnet) /调用判别IP地址合法性的函数return

10、 false;return true;for (i = 0, j= 0;i vsubLe n;i+) /不用再检错if(subneti !=.)tempj+=subneti; /temp数组中放.间的串elsesubA3-t = atoi(temp); /subA数组中放.间的数据j=0;t+;temp0=temp1=temp2=0;中放 subnet 中 . 除外的串对应的数subA0=atoi(temp); temp0=temp1=temp2=0; iSubA=*(unsigned int *)subA; /iSubAfor(i=0,j=0,t=0;i ipLen;i+) / 不用再检错i

11、f(ipi!=.) tempj+=ipi;elseipA3-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 不匹配 if(iSubA9Mask)=0) / 说明子网号全 1 if(iSubA&iMask)=0) / 说明子网号全 0 if(iSubA)=(iIPA&i

12、Mask) /IP 和掩码与,结果和子网号比较 if(iIPA|iMask)=iMask) / 说明主机号全 0 if(iIPA|iMask)=0xffffffff) / 说明主机号全 1 /ip 属于 subnet/ip 不属于 subnetelsecout ip 不属于 subnetPlusMask ip 2G2 133.16.0/21 123 21 有效子网号为=202.133.16-0掩码无效ip地址无效f分析:IP地址不符合格式要求!D:ipDebusip 123.23$1/24 2G2133.16*1 子网号无效辛 掩科无效f有效W地址为:翻2”灯3”1&1分析:子网号出现了“ $

13、”字符,其为非法字符,所以出错!D:ipD&buffip 123-2454.2-1/24 262 丄33*16”:1 民网号无效? 腌昭无效?有效諒地址为沌阳.133-1&-1分析:子网号的段数不是四,所以出错!p:ipXD&buip 202-133-1G.0Z24 123.23.45.2_1有效子网号为唸聊-133.1&.0腌码无效,切地址无效?分析:IP地址段数不是四,所以出错!2. 简单判断子网号及掩码长度是否超出范围如图D=xipDebuffip 202.133166224.3/24 202,13.1&13子网号臥及子网掩码长度过长1分析:因为程序里设置的子网号和掩码字符串长度最多是1

14、8个字符而这里有20个字符大于18,所以出错!D:lpDebuglp 202.133_1&.0/24 202-133.1&-224-3&P ifcit长虚过长!分析:程序中的IP地址字符串最长只有15个而程序中有17个字符大于15个,所以出错!3. 测试子网号与掩码是否匹配如图D:ipD&bcsip 1-192-0.0/9 1.192.1.1 府效子网号为= 1-192-0.0 惰效掩祁为汚有兹4地址=1.192-1-1 瞎误,干网号与掩钢不匹配辛分析:子网号转换为二进制:00000000 11000000 00000000 00000000子网掩码转换成二进制:11111111 10000000 00000000 00000000从以上可以看出子网号与子网掩码不匹配与输出结果是一样的说明程序算法是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号