IP地址合法性判断及子网检测_实验报告
IP地址的合法性与子网判断计算机网络系统设计书
![IP地址的合法性与子网判断计算机网络系统设计书](https://img.taocdn.com/s3/m/22627d3902768e9951e738bc.png)
IP地址的合法性及子网判断计算机网络系统设计书第一章概述1.1课程设计目的本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否是属于一个给定的子网。
从而考察读者是否对IP地址概念及子网划分有非常清楚的认识。
1.2 课程设计的要求在掌握IP 地址的表示方法及指望划分方法的基础上,按如下要求完成程序。
1)命令行格式:ip_test subnet/mask ip_addr其中,ip_test为程序名;subnet为子网好;mask是一个数值,代表子网掩码连续1 的个数;ip_addr是要测试的IP地址。
例如,要测试的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表示。
)2)判断subnet和ip_addr的合法性。
在判断IP地址的合法性是要自行编写代码,不要用任何的inet函数。
判断是要考虑全面,比如以下IP 的地址的合法性:123..2.1123.23¥.2.1123.23.45.2.13)判断掩码的合法性。
4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet。
5)输入命令行中的ip是否合法,掩码是否合法(可适当给出不合法原因)以及ip_addr是否属于子网subnet。
第二章具体设计2.1设计思路根据以上的要求,并结合当前的所学的一些知识和技术,我们最终通过另一种方式来实现相同的功能,但代码更加优化,高效,方便用户的窗体程序。
对于以上的要求,设计思路如下:1.程序大致流程1)分别判断子网号,掩码和ip地址的基本格式的合法性。
2)如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。
该函数同时判别子网号和掩码是否匹配,子网号为全0或全1,主机号为全0、全1。
IP地址合法性及子网判断
![IP地址合法性及子网判断](https://img.taocdn.com/s3/m/628ca938b4daa58da0114ac2.png)
的用户接口,并将每天的学习情况如实进行记录,课设结束时向老师和其
他小组讲解设计方案,演示实现结果,并汇报分工情况。
主要参考资料:
王小科 吕双 C#从入门到精通[M],北京:清华大学出版社,2008。
寇晓蕤 罗军勇 蔡延荣 网络协议分析[M],北京:机械工业出版社,2009
谢希仁 计算机网络[M],北京:电子工业出版社,2010
12
周五,展示本周课程设计的成果,提交课程设计文档。
六、 心得体会
为期一周的课程设计即将结束,在这一周的课程设计的过程中,无论 是在学习方面,还是在团队合作方面,我都收获了很多东西。在学习方面, 通过上网和到图书馆查阅资料,我更加深入的学习了 C#高级程序开发语 言,并利用所学知识设计,完成本次课程设计。在团队合作方面,一个人 思考问题总是存在漏洞的,在和队友的合作中,充分体现了团队的力量。 并且,在平时和更多的同学在一起探讨,分析,尽量把所有的情况考虑完 全,使得程序设计的更加完善。
if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn)) {
return true; } else {
return false; } }
调用函数判断,并过滤全 0 全 1 的情况:
IP地址合法性判断及子网检测_实验报告
![IP地址合法性判断及子网检测_实验报告](https://img.taocdn.com/s3/m/da4639e5f80f76c66137ee06eff9aef8941e48f8.png)
IP地址合法性判断及⼦⽹检测_实验报告⼀. 实验⽬的1.加深对IP地址及subnet的认识;2.了解IP地址的划分;3. 了解subnet的作⽤和产⽣因素,subnet的划分;4. 实际操作编写规则,匹配IP和subnet,加深理解⼆. 实验环境(软件、硬件及条件)1.软件操作系统:Windows 7(Windows NT以上版本皆可)编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使⽤VC6.0等)编程语⾔:C++测试环境: MS-DOS2.硬件现阶段常见PC三. 实验⽅法Part 1实验原理我们说过因特⽹是把全世界的⽆数个⽹络连接起来的⼀个庞⼤的⽹间⽹,每个⽹络中的计算机通过其⾃⾝的IP地址⽽被唯⼀标识的,据此我们也可以设想,在Internet上这个庞⼤的⽹间⽹中,每个⽹络也有⾃⼰的标识符。
我们把计算机的IP地址也分成两部分,分别为⽹络标识和主机标识。
同⼀个物理⽹络上的所有主机都⽤同⼀个⽹络标识,⽹络上的⼀个主机(包括⽹络上⼯作站、服务器和路由器等)都有⼀个主机标识与其对应IP地址的4个字节划分为2个部分,⼀部分⽤以标明具体的⽹络段,即⽹络标识;另⼀部分⽤以标明具体的节点,即主机标识,也就是说某个⽹络中的特定的计算机号码。
另⼀⽅⾯,只有在⼀个⽹络号下的计算机之间才能"直接"互通,不同⽹络号的计算机要通过⽹关(Gateway)才能互通。
但这样的划分在某些情况下显得并⼗分不灵活。
为此IP⽹络还允许划分成更⼩的⽹络,称为⼦⽹(Subnet),这样就产⽣了⼦⽹掩码1. IP的寻址规则(1).⽹络寻址规则A、⽹络地址必须唯⼀。
B、⽹络标识不能以数字127开头。
在A类地址中,数字127保留给内部回送函数。
C、⽹络标识的第⼀个字节不能为255。
数字255作为⼴播地址。
D、⽹络标识的第⼀个字节不能为“0”,“0”表⽰该地址是本地主机,不能传送。
IP地址的合法性及子网判断课程设计报告
![IP地址的合法性及子网判断课程设计报告](https://img.taocdn.com/s3/m/25b7b00052ea551810a687bd.png)
*********大学课程设计书学院专业班级题目教师学生摘要<摘要>关键字:IP地址子网掩码网络号主机号合法性课题设计组成员分工表目录第一章绪论 (1)1.1 设计目的 (1)1.2 设计的意义 (1)1.2.1有利于对基础知识的理解 (1)1.2.2 有利于逻辑思维的锻炼 (1)1.2.3 有利于与其他学科的整合 (1)1.2.4 有利于治学态度的培养 (1)第二章课程设计的内容和要求 (2)第三章课程设计的相关技术 (3)3.1 IP地址相关概念 (3)3.2 特殊的IP地址形式 (4)3.2.1直接广播地址 (4)3.2.2 受限广播地址 (4)3.2.3 “这个网络上的这台主机”地址 (4)3.2.4 “这个网络上的特定主机”地址 (4)3.2.5 回送地址 (5)3.3 子网的划分 (5)第四章课程设计分析 (6)4.1 程序流程图 (6)4.2 核心代码及说明 (7)4.2.1 判断IP地址是否合法 (7)4.2.2 判断IP地址是否为子网成员 (7)第五章程序测试 (9)5.1 判断子网掩码与ip地址不匹配 (9)5.2 判断子网掩码与ip地址匹配 (9)5.3 判断ip地址无效 (9)5.4 判断掩码的有效性 (10)5.5 判断ip地址是否属于该子网 (11)5.6 提示子网号全0或全1 (11)5.7 判断主机号全0或全1 (12)第六章运行结果 (13)第七章课程设计小结 (14)致谢 (15)参考文献 (16)附录课程设计源代码 (17)第一章绪论1.1 设计目的掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。
并判断该地址是否属于一个给定的子网。
1.2 设计的意义1.2.1有利于对基础知识的理解1.2.2 有利于逻辑思维的锻炼程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
IP地址合法性判断及子网检测_实验报告
![IP地址合法性判断及子网检测_实验报告](https://img.taocdn.com/s3/m/e86e0f0cf6ec4afe04a1b0717fd5360cba1a8dba.png)
IP地址合法性判断及子网检测_实验报告实验报告:IP地址合法性判断及子网检测一、实验目的:掌握IP地址的合法性判断方法和子网检测方法,深入理解IP地址和子网的概念,并能够灵活应用于实际网络环境。
二、实验原理:1.IP地址的合法性判断:IP地址是由32位二进制数组成的,采用点分十进制表示法,每8位二进制数组成一段,共4段。
合法的IP地址必须满足以下条件:-每一段的值在0~255之间;-每一段不能以0开头,除非该段的值为0;-每一段不能以255结尾。
2.子网检测:子网是将IP地址划分为多个子网,用于实现网络的划分和管理。
子网检测的核心是判断两个IP地址是否在同一子网内。
判断方法如下:-将两个IP地址与子网掩码进行与运算,得到的结果即为网络地址;-判断两个网络地址是否相同,若相同,则处于同一子网内。
三、实验步骤:1.IP地址合法性判断:-读入一个IP地址;-将IP地址进行切割,得到4段数字;-判断每一段数字是否在0~255之间;-判断每一段是否以0开头或以255结尾;-若所有判断条件均满足,则判定该IP地址为合法地址。
2.子网检测:-读入两个IP地址和一个子网掩码;-将两个IP地址与子网掩码进行与运算,得到两个网络地址;-判断两个网络地址是否相同;-若相同,说明两个IP地址处于同一子网内;-若不同,说明两个IP地址处于不同子网内。
四、实验结果:1.IP地址合法性判断:-输入合法IP地址:192.168.1.1,结果为合法地址;-输入非法IP地址:256.1.1.1,结果为非法地址。
2.子网检测:-输入两个IP地址:192.168.1.10、192.168.1.20,子网掩码为255.255.255.0,结果为处于同一子网内;-输入两个IP地址:192.168.1.10、192.168.2.10,子网掩码为255.255.255.0,结果为处于不同子网内。
五、实验总结:通过本次实验,我们掌握了IP地址的合法性判断方法和子网检测方法。
IP地址及子网划分实验报告
![IP地址及子网划分实验报告](https://img.taocdn.com/s3/m/df26119afe4733687f21aa0a.png)
IP地址及子网划分实验报告
实验报告
课程计算机网络基础教程实验名称 IP地址及子网划分专业班级
学号学生姓名
昆明理工大学津桥学院
2013 年 4 月 11 日
一、实验目的:熟悉IP地址及子网掩码,熟练掌握子网划分。
二、试验配置
三、实验内容:
1. 按图示完成网络连接。
2. 使用C类地址:202.112.X.0(X为每人的学号后两位)分配给每台计算机,
现需对其进行子网划分,公司要分为5个部分子网,请给出其子网掩码及子网IP
地址范围。
IP范围子网掩码 202.112.05.33-202.112.05.62 255.255.255.224
202.112.05.65-202.112.05.94 255.255.255.224 202.112.05.97-202.112.05.126 255.255.255.224 202.112.05.129-202.112.05.158 255.255.255.224
202.112.05.161-202.112.05.190 255.255.255.224 3.要求每两台相互之间不能ping通。
四、问题反思
1. 若使用缺省子网掩码能ping通吗,
缺省子网掩码为255.255.255.0,不能ping通
2. 若要保证每子网40台PC,最多可以划分为多少子网,
6 最多两个,40至少2 等于64台,大于32台。
3. 若使用B类IP:175.16.8.0网段划分为10个子网,其子网掩码为, 10个子网至少四位二进制,剩下四位,最终结果为:255.255.255.230。
实验报告:IP地址分类及子网划分
![实验报告:IP地址分类及子网划分](https://img.taocdn.com/s3/m/b4e9e01b59eef8c75fbfb397.png)
实验一 IP地址分类及子网划分一、实验目的1、掌握有类IP地址的使用及主机IP地址的设置;2、掌握子网掩码与子网划分使用;二、实验设备及环境安装Windows 2000的主机、交换机及路由器。
三、实验步骤1、首先设置我的IP地址为192.168.0.19,是C类地址,子网掩码为255.255.255.240;2、使用网络嗅探器Wireshark进行报文分析,重点是对ping命令过程的分析。
打开Wireshark ,定义捕捉过滤器。
3、设置显示过滤器,用ipconfig/all 得到本机网卡的物理地址并填写过滤表达式。
4、进入命令行模式,输入:ipconfig/all ,该命令显示了网卡的设置,其中有硬件地址。
5、再输入:arp –a,该命令显示ARP高速缓存中的IP和MAC的对应表。
如果ARP高速缓存中有数据则再输入:arp –d,该命令用来清空高速缓存表。
6、用ping命令测试子网中其它主机的连通,如:ping 192.168.0.18。
7、停止捕捉,并显示。
四、问题1、记录所设置的IP地址和掩码,说明所设IP的类别IP地址为192.168.0.19,是C类地址,子网掩码为255.255.255.2402、说明ping命令的经过(假设ARP高速缓存为空),并附上实验结果的抓图。
在同一网段内,ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP 协议将这个数据包连同地址“192.168.0.35”一起交给IP层协议(和ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.0.35”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.35的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。
关键就在这里,IP层协议通过机器B的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的MAC,如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系,如果没有,就发一个ARP请求广播,得到B机的MAC,一并交给数据链路层。
IP地址合法性判断及子网检测_实验报告
![IP地址合法性判断及子网检测_实验报告](https://img.taocdn.com/s3/m/8da22f526d175f0e7cd184254b35eefdc8d31523.png)
IP地址合法性判断及子网检测_实验报告实验报告-IP地址合法性判断及子网检测一、实验目的1.了解IP地址的基本知识和表示方法;2.掌握判断IP地址合法性的方法;3.掌握网络子网的划分方法;4.通过实验掌握子网掩码的设置方法。
二、实验器材1.一台安装有操作系统的计算机;2.网络连接线。
三、实验原理1.IP地址的基本知识IP地址是互联网协议指定的32位二进制数字,一般采用四个十进制数(0~255)表示,每个数之间使用“.”分隔。
例如:192.168.1.1、IP地址可以分为两部分,网络地址和主机地址。
网络地址用于标识网络,主机地址用于标识网络中的主机。
2.IP地址合法性判断方法IP地址的每个数必须在0~255的范围内,且IP地址的格式必须满足“N1.N2.N3.N4”的形式,N1、N2、N3和N4分别表示IP地址的四个数字段。
在判断IP地址的合法性时,需要判断每个数字段的值是否在0~255之间。
同时,IP地址的每个数字段之间需要用“.”分隔,且不能有其他的字符。
3.子网划分方法子网划分是将一个大的IP地址段划分成多个小的IP地址段的过程。
子网划分的目的是将一个大的网络划分成若干个小的网络,增加网络的可管理性和安全性。
子网掩码是用于划分子网的重要参数,用于将IP地址划分为网络地址和主机地址。
子网掩码是一个32位的二进制数字,一般采用四个十进制数表示,例如:255.255.255.0。
子网掩码规定了IP地址前面的网络地址的长度。
四、实验内容1.判断一个给定的IP地址是否合法;2.给定一个IP地址和子网掩码,判断该IP地址是否属于指定的子网。
五、实验步骤1.判断IP地址的合法性。
编写程序,输入一个IP地址,判断该IP地址是否合法。
(1)将IP地址按照“.”进行分割,得到四个数字段;(2)判断每个数字段的值是否在0~255之间;(3)判断数字段之间是否使用“.”进行分隔。
2.判断IP地址是否属于指定子网。
编写程序,输入一个IP地址和子网掩码,判断该IP地址是否属于指定的子网。
IP地址合法性判断及子网判断课设
![IP地址合法性判断及子网判断课设](https://img.taocdn.com/s3/m/e21c04f6804d2b160b4ec0db.png)
课程设计任务书连续两个•含有非法字符每部分长度超过3含有超过三个的•每部分大于255内容及要求:判断IP 和子网是否合法,接着将IP 地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP 地址是否属于某一个网络。
设计总要求:实现判断输出命令行中的IP 是否合法,掩码是否合法以及ip_addr 是否是 属于子网sub net 。
将IP 地址一位位与子网掩码做与运算,看结果是否和子网相 等来判断IP 地址是否属于某一个网络。
在这个设计中考虑到了以上的种种情况, 根据用户输入的IP 地址,掩码和子网,程序可以判断输入的IP 地址,掩码和子 网是否正确以及ip_addr 是否是属于子网sub net 。
在判断不合法IP 时要考虑全面,比如以下情况均属于不合法123 . . 2 . 1.2 123 . 23$ . 2 . 1 123 . 2345 . 2 . 1 123 . 23 . 45 . 2. 1 256.123.3.3进度安排:第1周:布置课程设计任务;查阅资料;分组进行程序设计。
第2周:程序设计和调试;程序验收;答辩;上交课程设计报告目录一课程设计目的和意义 ................................................................. 4.1 . 1设计目的 (4)1 . 2设计的意义................................................................. 4.二协议的内容说明,关键技术的说明 (6)2. 1 ip地址简介................................................................. 6.2. 2子网掩码简介.............................................................. 8.2. 3 ip地址的计算 .............................................................. 8.2. 4子网划分简介 (10)3. 1主程序设计................................................................ 1.13. 2验证ip地址合法性 (12)3 . 3验证ip是否属于某个子网 (13)3.4 代码........................................................................ 1.4 四程序的运行和调试结果. (26)运行结果 (26)五课程设计小结 (28)六参考文献 (29)一课程设计目的和意义1.1设计目的1 .加深对IP地址及sub net的认识;2 .了解IP地址的划分;3. 了解sub net的作用和产生因素,sub net的划分;4. 实际操作编写规则,匹配IP和sub net,加深理解1 . 2设计的意义1、有利于基础知识的理解通过《计算机网络》的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
IP 地址、子网与掩码-实验报告
![IP 地址、子网与掩码-实验报告](https://img.taocdn.com/s3/m/25a5e200ba1aa8114431d978.png)
2.在一个至少两台主机的内网中,将其中一台主机的网关设为另一台主机的IP地址(这台主机须有两个网卡,一个网卡连接内网,另一个网卡连接外网),以此来连接到外网上网。
为了便于描述,本实验将A、B地址空间中的主机分别简称为A主机和B主机。
1、将主机A,B的IP地址分别设为210.26.97.138和210.26.97.139,掩码均为255.255.255.0,然后,A、B主机使用如下命令互PING对方:
ping <对方主机IP地址>
2.在主机A,B上分别PING0.0.0.0和255.255.255.255。
3.在A,B主机上分别PING 210.26.97.0和210.26.97.255
1、IP地址、子网和掩码的概念;
2、掩码运算:确定IP网络(或子网)及其范围;
实
验
环
境
两台Windows环境下的主机
实
验
内
容
1.在一个以太网环境中,实验者使用计算机上的通信测试命令(ping)和TCP/IP配置,检验特殊IP地址的用途和IP子网设置对同一物理网内计算机间通信的影响,从而理解并掌握子网地址、子网广播地址和主机地址的概念、特征和用途。
IP地址空间中定义了一些特殊地址:
网络/子网地址:标识一个IP网络或子网。
直接广播地址:表示该分组应由特定网络上的所有主机接收和处理。
受限广播地址:表示该分组应由源所在网络或子网上的所有主机接收和处理。
本网络上本主机地址:表示主机自己。
环回地址:用来测试机器的协议软件。
调
试
过
查询IP地址和子网掩码实验报告
![查询IP地址和子网掩码实验报告](https://img.taocdn.com/s3/m/21d528ecfab069dc502201d4.png)
实验
课程性质
□必修□选修
实验项目名称
实验类型
□演示性□验证性
□综合性□设计性
专业
年级
15
层次
□专科□本科
学号
姓名
班级
15物管本5
实验日期
指导教师
成绩
一、实验目的和要求
1、了解局域网IP地址的设定方法
2、掌握查询子网掩码和IP地址方法
3、掌握在同一个局域网里实现文件、资源共享。
4)注权限下有一个缓存,这个选项是当此共享的电脑关机后其他电脑能否继续下载此文件夹内的共享文件,这里我们点击缓存,出现对话框缓存设置,在该窗口下勾选,允许在这个文件夹下缓存文件,并且在设置里选择自动缓存文件,并点击确定,最后在共享属性里点击应用并点击确定。
5)为了在电脑关机后,局域网内还可以在此电脑上下载共享内的文件,我们还得做一个步骤,就是在想下载此共享文件夹内的电脑上设置脱机文件。现在在另一台电脑上点击开始——设置——控制面板,在控制面板内选择文件夹选项。
良好(80-89分):报告中对实验过程叙述较详细,语言表达准确,结构严谨,条理清楚,自己努力完成,没有抄袭;对实验过程中存在问题分析详细透彻;实验心得体会深刻、论述合理详细,有自己的见解。
中等(70-79分):报告中对实验过程叙述较详细,自己努力完成,没有抄袭。对实验过程中存在问题有较详细的分析,但不全面。实验心得体会不够深刻。
2).鼠标放在创建的共享文件夹上右击选择”共享和安全“,出现共享属性窗口,选择共享此文件夹,下面还有一个用户数限制,你可以自己定义允许几个人访问此文件夹,这里我们选最多。
3)在下面还有权限,点击权限出现对话框共享的权限,在这里你可以自己设置一个用户让局域网里的同学或同事登入来访问文件,也可以选择everyone,局域网里的朋友都可以访问此文件夹,这里我们选择everYone,并且在everyone的权限内全部勾上,你也可以自己选择,如果是想让别人下载修改最好全部勾上。并选择应用并确定。
ip网络实验报告
![ip网络实验报告](https://img.taocdn.com/s3/m/8efaa57886c24028915f804d2b160b4e767f8193.png)
ip网络实验报告IP网络实验报告引言:IP网络是当今世界上最为普遍使用的网络协议之一,它是互联网的基础。
本次实验旨在通过对IP网络的实际操作和观察,深入了解其工作原理和应用。
一、实验目的本次实验的目的是通过搭建IP网络,了解IP协议的基本原理和功能,并通过实际操作,掌握IP地址的分配和路由的配置。
二、实验环境本次实验使用了一台路由器和多台计算机,通过交换机连接在一个局域网中。
每台计算机都有一个唯一的IP地址。
三、实验步骤1. IP地址的分配在开始实验之前,我们首先需要为每台计算机分配一个唯一的IP地址。
通过在路由器上配置DHCP服务器,我们可以实现IP地址的自动分配。
在实验中,我们将路由器的IP地址设置为192.168.1.1,子网掩码为255.255.255.0。
然后,我们在每台计算机上配置DHCP客户端,使其自动获取IP地址。
通过这样的设置,每台计算机都能够获得一个唯一的IP地址。
2. 路由器的配置路由器是连接不同网络的关键设备,它负责将数据包从源地址传输到目标地址。
在实验中,我们需要在路由器上配置路由表,以便正确地转发数据包。
通过在路由器上使用命令行界面,我们可以添加静态路由和动态路由。
静态路由是由管理员手动配置的,而动态路由是由路由器自动学习和更新的。
通过配置路由器,我们可以实现不同网络之间的通信。
3. 数据包的传输在实验中,我们可以通过在计算机之间发送数据包来测试IP网络的工作情况。
通过使用ping命令,我们可以向目标IP地址发送数据包,并观察是否能够成功收到回复。
这样的测试可以帮助我们判断网络连接是否正常,并找出潜在的问题。
四、实验结果与分析通过实验,我们成功地搭建了一个IP网络,并进行了数据包的传输测试。
在测试过程中,我们发现有些计算机之间无法互相通信。
经过排查,我们发现是由于路由器的路由表配置不正确导致的。
通过添加正确的路由规则,我们解决了这个问题,并实现了所有计算机之间的正常通信。
IP合法性子网判断
![IP合法性子网判断](https://img.taocdn.com/s3/m/f6c275549b6648d7c1c74647.png)
计算机网络课程设计报告摘要设计要求编写程序,实现判断输出命令行中的ip 是否合法,掩码是否合法以及ip_addr 是否是属于子网subnet 。
采用eclipse的开发工具,使用java 编程实现,在判断ip 地址合法性时,定义了一个静态的方法,在方法里面,使用正则表达式来判断ip 地址的合法性,判断子网掩码也采用这样的方法判断,在判断ip 地址是否属于某一个子网时。
将ip 地址一位位与子网掩码做与运算,看结果是否和子网相等来判断ip地址是否属于某一个网络。
Ip地址采用点分10进制的方法来表示,最大的数为255,最小的数为0,其中数字不能以0开头。
子网掩码则只能有32种情况,其中网络号全1,主机号全0,由1和0的个数来确定子网掩码是否正确。
在这个设计中考虑到了以上的种种情况,根据用户输入的ip地址,掩码和子网,程序可以判断输入的ip地址,掩码和子网是否正确以及ip_addr是否是属于子网subnet。
b5E2RGbCAP一课程设计目的和意义1.1设计目的掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。
并判断该地址是否属于一个给定的子网。
p1EanqFDPw1.2设计的意义1、有利于基础知识的理解通过《计算机网络与Internet教程》必修部分的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
但是,学生对于程序、病毒的内涵,程序与文档、数据的区别,计算机运行的机理等知识内容的理解比较肤浅。
学生如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。
DXDiTa9E3d2、有利于逻辑思维的锻炼程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。
即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。
第06课IP地址分配与子网划分实验报告
![第06课IP地址分配与子网划分实验报告](https://img.taocdn.com/s3/m/f3d89373c850ad02de8041b6.png)
子 255.255.255.240 255.255.255.240 255.255.255.240 255.255.255.240 网 掩 码
子 192.168.1.0 网 地 址
192.168.1.0 192.168.1.16 192.168.1.16
注:在“教学下载”中提供有计算子网地址的共享小软件,可用此软 件来帮助计算子网地址。在“拓展学习”还提供该小软件的使用方法。
3.测试计算机的通信情况。 (1)处于同一子网的计算机,能否通信? A机、B机是属于同一子网,因为,A机和B机具有相同的子网地 址“192.168.1.0”。 在A机的“命令提示符”窗口中,键入针对B机的PING命令:Ping 192.168.1.12。如果设置正确,因为A机和B机处在同一子网内,两机间 是连通的。正确的测试结果如图6-3-5所示。
图6-3-6 测试不同子网主机的通信状况
四、学生实验记录 “IP地址分配与子网划分”实验记录表
按实验要求,将小组内计算机划分为两个子网:
主机A IP地 址:
子网掩 码:
主机B IP地 址:
子网掩 码:
主机C IP地 址:
子网掩 码:
主机D IP地 址:
子网掩 码:
访问网上邻居所在工作组,能显示几台主机?并将该截 图复制到下面空白处:
图6-3-3 选择“使用下面的IP地址” (5)分别在“IP地址”、“子网掩码”文本框中输入相应的值。其中, IP地址为:192.168.1.2;子网掩码为:255.255.255.240,如图6-3-4所 示。
图6-3-4 IP地址和子网掩码 (6)按“确定”按钮后,完成四台实验计算机中的A机的IP地址和子 网掩码的设置。
D机网络参数:IP地址为192.168.1.30,子网掩码为 255.255.255.240。
IP地址合法性判断及子网判断课设
![IP地址合法性判断及子网判断课设](https://img.taocdn.com/s3/m/e21c04f6804d2b160b4ec0db.png)
课程设计任务书连续两个•含有非法字符每部分长度超过3含有超过三个的•每部分大于255内容及要求:判断IP 和子网是否合法,接着将IP 地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP 地址是否属于某一个网络。
设计总要求:实现判断输出命令行中的IP 是否合法,掩码是否合法以及ip_addr 是否是 属于子网sub net 。
将IP 地址一位位与子网掩码做与运算,看结果是否和子网相 等来判断IP 地址是否属于某一个网络。
在这个设计中考虑到了以上的种种情况, 根据用户输入的IP 地址,掩码和子网,程序可以判断输入的IP 地址,掩码和子 网是否正确以及ip_addr 是否是属于子网sub net 。
在判断不合法IP 时要考虑全面,比如以下情况均属于不合法123 . . 2 . 1.2 123 . 23$ . 2 . 1 123 . 2345 . 2 . 1 123 . 23 . 45 . 2. 1 256.123.3.3进度安排:第1周:布置课程设计任务;查阅资料;分组进行程序设计。
第2周:程序设计和调试;程序验收;答辩;上交课程设计报告目录一课程设计目的和意义 ................................................................. 4.1 . 1设计目的 (4)1 . 2设计的意义................................................................. 4.二协议的内容说明,关键技术的说明 (6)2. 1 ip地址简介................................................................. 6.2. 2子网掩码简介.............................................................. 8.2. 3 ip地址的计算 .............................................................. 8.2. 4子网划分简介 (10)3. 1主程序设计................................................................ 1.13. 2验证ip地址合法性 (12)3 . 3验证ip是否属于某个子网 (13)3.4 代码........................................................................ 1.4 四程序的运行和调试结果. (26)运行结果 (26)五课程设计小结 (28)六参考文献 (29)一课程设计目的和意义1.1设计目的1 .加深对IP地址及sub net的认识;2 .了解IP地址的划分;3. 了解sub net的作用和产生因素,sub net的划分;4. 实际操作编写规则,匹配IP和sub net,加深理解1 . 2设计的意义1、有利于基础知识的理解通过《计算机网络》的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。
ip地址的合法性及子网判断
![ip地址的合法性及子网判断](https://img.taocdn.com/s3/m/0458af0b182e453610661ed9ad51f01dc28157f9.png)
ip地址的合法性及子网判断实验九:IP地址的合法性及子网判断#include#include#include#include//类结构class ipTest{char ip[15]; //定义ip数组,存放ip地址char subnetPlusMask[18]; //定义subnetPlusMask数组,存放子网号和子网掩码中1的个数char subnet[18]; //定义subnet数组,存放子网号char TempIp[15]; //定义TempIp数组,存放临时的ip地址char TempSub[18]; //定义TempSub数组,存放临时的子网号int mask; //定义整型mask,存放子网掩码中1的个数bool maskIsValid;//定义布尔值maskIsValid,存放判断mask真值的变量public:ipTest(char *,char *); //定义ipTest函数ipTest(){};bool NoIllegalChar(char *); //非法字符的判断bool ipIsValid(char *); //判断IP地址是否合法bool subnetIsValid(char *); //判断子网号是否合法void belong(); //判断IP是否为子网成员print();//定义输出函数print};//主函数void main(int argc,char *argv[]){if(argc != 3){ //判断参数格式是否正确cout <<"Please input command: ip_test subnet/mask ip" ;return;}else{if(strlen(argv[1]) > 18){ //先判断最简单的错误,子网号及子网掩码长度和是否超出cout <<"subnet/mask is too long";return;}if(strlen(argv[2]) > 15){ //ip地址长度是否超出cout<<"ip Address is too long";return;}ipTest test(argv[1],argv[2]); //实例化ipTest类test.print(); //完成相应判别并输出结果}}//构造函数ipTest::ipTest(char* subnetPlusMask,char *ip){maskIsValid = true;char temp[2];//把'/'前的字符复制到subnet字符数组中int smLen = strlen(subnetPlusMask); // 定义smLen为subnetPlusMask的长度for(int i = 0;i < smLen && subnetPlusMask[i] != '/';i++)this->subnet[i] = subnetPlusMask[i]; //对subnet数组赋值,值为subnetPlusMask中的数值this->TempSub[i] = subnetPlusMask[i]; //对TempSub数组赋值,值为subnetPlusMask 中的数值}subnet[i] = '\0';//给数组加上结束符TempSub[i] = '\0'; //给数组加上结束符if(i >= smLen-2){ //初始化mask和maskIsValidif(i == smLen-2){temp[0] = subnetPlusMask[i+1];if(!isdigit(temp[0])) //判断temp中的值是否为字符maskIsValid = false;}else{if(i == smLen-3){temp[0] = subnetPlusMask[i+1];temp[1] = subnetPlusMask[1+2];if(!(isdigit(temp[0])&&isdigit(temp[1]))) //判断temp中的值是否为字符maskIsValid = false;}}mask = atoi(temp); //将temp中的字符数值化if(mask <0 || mask >32) //判断mask值是否超出范围maskIsValid = false;else //用十进制数表示的掩码中1的个数只能是一位数或者两位数maskIsValid = false;strcpy(this->subnetPlusMask,subnetPlusMask); //给subnetPlusMask赋值strcpy(this->ip,ip); //给IP赋值strcpy(this->TempIp,ip);}//调用判别函数,并输出结果ipTest::print(){bool subIsV = subnetIsValid(TempSub);bool ipIsV = ipIsValid(TempIp);//判断子网是否合法if(!subIsV)cout <<"subnet is invalid!" <<endl;< p="">elsecout <<"valid subnet:" <<<endl;<="" p="">//判断掩码是否合法if(!maskIsValid)cout <<"mask is invalid!" <<endl;< p="">elsecout <<"valid mask:" <<<endl;<="" p="">//判断ip地址是否合法if(!ipIsV)cout <<"Ip address is invalid!" <<endl;< p="">elsecout <<"valid ip address:" <<<endl;<="" p="">//判断ip地址是否属于子网if(subIsV && ipIsV && maskIsValid)belong();}//子网数,判断输入是否含有非数字字符bool ipTest::NoIllegalChar(char *ch){unsigned int i,k=0;for(i=0;i <strlen(ch);i++)< p="">if(isdigit(*(ch+i))==0)//判断每一位是否为数字字符return false;return true; //若不含有非法数字字符则返回true}//判别IP地址是否合法bool ipTest::ipIsValid(char * ip){char ch[]="."; //分隔符char *token,*dot[4];int iplen = 0;token = strtok(ip,ch); //以"."标志将IP字符串按节分开while(token!=NULL){ //循环进行,直到结束dot[iplen]=token; //将分开的每段赋值给dotiplen++;token = strtok(NULL,ch);}//判断IP地址的段数if(iplen != 4) //段数不对return false;for(int i = 0; i < 4; i++)if(!NoIllegalChar(dot[i])||atoi(dot[i])>255) //有非法字符或某段值非法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,iMask;unsigned char subA[4],ipA[4];char temp[3];int i,j,t = 0;for (i = 0, j= 0;i <sublen;i++)< p="">{//不用检错if(subnet[i]!='.')temp[j++]=subnet[i]; //temp数组中放'.'间的串else{subA[3-t] = atoi(temp); //subA数组中放'.'间的数据j=0;t++;temp[0]=temp[1]=temp[2]='\0';}}subA[0]=atoi(temp);temp[0]=temp[1]=temp[2]='\0';iSubA=*(unsigned int *)subA; //iSubA中放subnet中'.'除外的串对应的数for(i=0,j=0,t=0;i <iplen;i++)< p="">{ //不用再检错if(ip[i]!='.')temp[j++]=ip[i];else{ipA[3-t]=atoi(temp);j=0;t++;temp[0]=temp[1]=temp[2]='\0';}}ipA[0]=atoi(temp);iIPA=*(unsigned int*)ipA; //iIPA中放IP中'.'除外的串对应的数//获得掩码iMask = 0xffffffff;iMask <<=(32-mask);if((iSubA | iMask)!= iMask){ //说明sub与mask不匹配cout <<"subnet and mask not match!" ;return;}if((iSubA^iMask)==0){ //说明子网号全1cout <<"subnet is all 1!" ; return;}if((iSubA&iMask)==0){ //说明子网号全0cout <<"subnet is all 0!" ; return;}if((iSubA)==(iIPA&iMask)) {//IP和掩码与,结果和子网号比较if((iIPA|iMask)==iMask){//说明主机号全0cout <<"Ip address is all 0!" ; return;}if((iIPA|iMask)==0xffffffff) {//说明主机号全1cout <<"Ip address is all 1!"; return;}//ip属于subnetcout <<" " <<<endl;<="" < return;}//ip不属于subnetelsecout <<" " <<<。
网络课程报告IP地址的合法及子网判断
![网络课程报告IP地址的合法及子网判断](https://img.taocdn.com/s3/m/19f4ccc0a417866fb94a8e8a.png)
网络课程报告IP地址的合法及子网判断中国计量学院现代科技学院课程设计报告本课程设计名称 IP地址的合法性及子网判断系(部)信息系学号专业计算机姓名班级 101 指导教师虞戟2013 年 7 月 5 日课程设计报告目录中国计量学院现代科技学院课程设计报告P.1IP合法性和子网的判断一、设计的目的和要求1.目的掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。
并判断该地址是否属于一个给定的子网。
判断IP地址属于A B C那类网。
2.要求根据后面介绍的IP地址与子网划分的知识,编写程序判断IP地址的合法性及属于子网。
1)以命令行形式运行:IPAddress subnet_address/mask ip_address其中,IPAddress为程序名,subnet_address为子网地址,mask为掩码,ip_address为IP地址2)判断IP地址属于A B C那类网。
3)判断subnet和ip_addr的合法性。
在判断IP地址合法性时要自行编写代码,不要使用任何inet 函数。
判断时要考虑各种情况,全面分析问题。
4)判断掩码的合法性。
譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。
5)在IP地址合法,掩码合法以及子网号也合法的前提下,判断ip_addr是否属于subnet。
6)输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。
7)还可以判断子网号,主机号全0,全1问题。
1中国计量学院现代科技学院课程设计报告P.2 二、设计任务通过程序正确的实现对IP地址合理性的判断;当给定一IP地址时,本程序能实现对其IP地址、子网地址、掩码的合法性做出正确的判断,以及能判断该IP地址是否属于子网,和IP地址属于A B C哪类网络三、设计方案分析(一)总体设计1.分别输入子网号、掩码和IP地址。
2.分别判断子网号、掩码和IP地址的基本格式是否合法。
ip地址合法性及子网判断
![ip地址合法性及子网判断](https://img.taocdn.com/s3/m/4b6a068151e79b8968022631.png)
} //二进制的字符串转换成十进制数 void ToMask(char *s,int *a) {
int i,j,k,t,temp; for(i=4;i>0;i--) {//划分成 4 个块
t=0;temp=0; for(j=8*i-1;j>=8*(i-1);j--) {//每块的 8 位二进数转换成十进制数
2. 课题分析与设计 (1)分析子网和 IP 地址的合法性 子网号和 IP 地址格式:X.X.X.X,其中 X 必须是 0~255,中间用点隔开,由四段组成。 全 0 和全 1 以及以 0 和 127 不可用,因此 X 不能全部为 0 和 255,且第一个 X 不能为 0 和 127。 先分离子网(subnet/mask),以“/”作为分界分离出子网号和子网掩码,然后使用字符 串存储子网号和 IP 地址。初次判断 X 包含的字符是否是 0~9 的字符,其个数是否处 于 1~3 之间,X 的个数是否为 4,点的个数是否为 3,X 与点是否交替出现,且 X 比 点先出现。然后将 X 转换成十进制数,再判断第一个 X 是否为 127,所有 X 是否全 部为 0 和 255。最后判断子网掩码是否为 1~31 之间,如果合法,再将其转换成点分 十进制形式。 (2)分析子网与 IP 地址的关系 将子网号,IP 地址分别和子网掩码相与,如果相与的结果相同,则 IP 地址属于子网, 否则 IP 地址不属于子网。
1
山东轻工业学院 信息学院 11-12 学年第 2 学期 2009 级计算机网络课程设计
(3)[程序流程]
3. 设计使用的技术介绍 (1)程序开发环境:Visual Studio2010 集成开发环境 (2)程序使用语言:C 语言
IP地址的合法性及子网判断
![IP地址的合法性及子网判断](https://img.taocdn.com/s3/m/62cfed62960590c69fc376c4.png)
目录一、课程设计的目的错误!未定义书签。
二、设计要求 (1)三、课程设计的容错误!未定义书签。
3.1课题分析与设计13.2课题实现2四、设计总结7五、程序代码8一、设计目的本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网。
二、设计要求1、使用命令行格式2、判断subnet和ip_addr的合法性3、判断掩码的合法性4、在IP地址合法的前提下,判断ip_addr是否属于子网subnet三、课程设计分析1.程序大致流程1)分别判断子网号,掩码和IP地址的基本格式是否合法。
2)如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。
该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0,全1.2.核心代码及说明1)判断IP地址是否合法。
一般来说,我们先检查最明显的错误。
例如,可以先判断IP中”.”个数是否正确;接着,以“.”为标志将IP字符串按节分开;然后,看该IP是否为4段,再判断各节是否是0~255间的整数。
关于网络号,主机号全0全1等问题要在后面结合子网掩码一起判断。
这里的关键是怎么将IP字符串以“.”为标志按节分开,这要用到函数strtok (char*strToken,const char*strDelimit).第一个参数是给定的串,第二个参数是分隔符集合,该函数的功能就是以strDelimit中包含的任意字符为分隔符,在strToken中寻找下一个token。
每一次调用strtok后,都会在strToken中插入一个NULL字符,所以,如果要读取下一个token,接下来调用strtok时第一个参数用NULL。
char ch[]=“.”; //分隔符char *token,*dot[4];int iplen=0;token=strtok(ip,ch); //以“。
”标志将IP字符串按节分开while(token!=NULL){ //循环进行,直到结束dot[iplen]=token; //将分开的每段赋值给dotiplen++;token=strtok(NULL,ch);}这样,IP串的每一段都放到dot数组里了,下面判断是否有非法字符,每一段的值是否在0~255之间,就很容易了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 实验目的1.加深对IP地址及subnet的认识;2.了解IP地址的划分;3. 了解subnet的作用和产生因素,subnet的划分;4. 实际操作编写规则,匹配IP和subnet,加深理解二. 实验环境(软件、硬件及条件)1.软件操作系统:Windows 7(Windows NT以上版本皆可)编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++测试环境: MS-DOS2.硬件现阶段常见PC三. 实验方法Part 1实验原理我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet上这个庞大的网间网中,每个网络也有自己的标识符。
我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。
同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。
另一方面,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。
但这样的划分在某些情况下显得并十分不灵活。
为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码1. IP的寻址规则(1).网络寻址规则A、网络地址必须唯一。
B、网络标识不能以数字127开头。
在A类地址中,数字127保留给内部回送函数。
C、网络标识的第一个字节不能为255。
数字255作为广播地址。
D、网络标识的第一个字节不能为“0”,“0”表示该地址是本地主机,不能传送。
2.主机寻址规则A、主机标识在同一网络内必须是唯一的。
B、主机标识的各个位不能都为“1”,如果所有位都为“1”,则该机地址是广播地址,而非主机的地址。
C、主机标识的各个位不能都为“0”,如果各个位都为“0”,则表示“只有这个网络”,而这个网络上没有任何主机。
3.确定子网掩码数用于子网掩码的位数决定于可能的子网数目和每个子网的主机数目。
在定义子网掩码前,必须弄清楚本来使用的子网数和主机数目。
定义子网掩码的步骤为:A、确定哪些组地址归我们使用。
比如我们申请到的网络号为“128.73.a.b”,该网络地址为B类IP地址,网络标识为“128.73”,主机标识为“a.b”。
B、根据我们现在所需的子网数以及将来可能扩充到的子网数,用宿主机的一些位来定义子网掩码。
比如我们现在需要12个子网,将来可能需要16个。
用第三个字节的前四位确定子网掩码。
前四位都置为“1”,即第三个字节为“11110000”,这个数我们暂且称作新的二进制子网掩码。
C、把对应初始网络的各个位都置为“1”,即前两个字节都置为“1”,第四个字节都置为“0”,则子网掩码的间断二进制形式为:“11111111.11111111.11110000.00000000”D、把这个数转化为间断十进制形式为:“255.255.240.0” 这个数为该网络的子网掩码。
4.IP掩码的标注A、无子网的标注法对无子网的IP地址,可写成主机号为0的掩码。
如IP地址210.73.140.5,掩码为255.255.255.0,也可以缺省掩码,只写IP地址。
B、有子网的标注法有子网时,一定要二者配对出现。
以C类地址为例。
IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于一个网段。
如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。
如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。
例如:假设maskwe为27,对于IP地址为210.73.140.5的主机来说,其主机标识为00000101,对于IP地址为210.73.140.16的主机来说它的主机标识为00010000,以上两个主机标识的前面三位全是000,说明这两个IP 地址在同一个网络区域中,这两台主机在交换信息时不需要通过路由器进行;210.73.60.1的主机标识为00000001,210.73.60.252的主机标识为11111100,这两个主机标识的前面三位000与011不同,说明二者在不同的网络区域,要交换信息需要通过路由器。
其子网上主机号各为1和252。
Part 2 具体实现通过以上的原理,我们就知道了在检验IP 地址和子网检验时应该明确的问题,关键的两点就是把输入的IP(暂且不讨论何种输入形式,且假设为合法输入)分解成各段,然后判断其书否属于另一IP 的网络,其中的算法在上面已经说明1. 实现流程2. 编程本部分的编程的主要目的是算法的实现,主要的方法是C++中字符串处理。
(1)类设计a.属性char ip[15];//用于存放ip 地址char ip_Temp[15]; //用于存放ip 地址char subnet_mask[18]; //用于存放subnet_mask 地址char subnet[18]; //用于存放subnet 地址char subnet_Temp[18]; //用于存放subnet 地址int mask; //用于存放mask(1的个数)bool maskIsValid; //用于判断的个数是否合适,或是否与subnet 匹配b.方法构造函数,析构函数:ipTest(char *,char *); //自定义初始化类函数~ipTest(); //析构函数主判断函数 (即主要的方法):void AllJudgment(); //判断mask,subnet,ip的合法性问题bool ipIsValid(char *); //判断ip是否合法Bool subnetIsValid(char *); //判断子网号subnet是否合法bool NoIllegalChar(char *); //ip,subnet地址中非法字符的判断bool maskIsMatSubnet(int,char *);//判断mask与subnet是否匹配工具函数:void print(); //判断ip是否为子网成员,并输出判断结果void split(char *,int *); //把单个字符地址转换为十进制数值型地址(含四段)Int toBinary(int a); //十进制int型数据转换为二进制int型数据char * toString(int *a); //把二进制int型数据转换为一个整体的二进制字符型数据(2)主函数int main(int argc,char *argv[]) 函数1.获取参数2.简单判断参数格式(长度)3.若是正常参数,实例化 ipTest类4.调用主判断函数void AllJudgment() 判断5.输出结果(3)程序流程(4)头文件#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <math.h>#include <ctype.h>using namespace std;四. 实验分析及测试本部分测试了正常输入和非法输入时,程序对输入的判断,编程的环境为VS2008,在解决方案文件夹下面的Debug文件夹里面生成可执行文件;运行MS-DOS,进入Debug文件夹进行测试。
1.算法正确性检测(1)用正确格式和合法的数据的输入,测试Mask和IP的匹配测试数据: IP:128.196.33.12Mask:15和16分析:IP:128.196.33.12属于B类IP地址,前16位位网络段,后16位为主机段,所以Mask至少为16结果截图:(2)用正确格式和合法的数据的输入,测试主网和子网的匹配测试数据:主网IP:128.196.33.12子网IP:128.196.127.17 和128.196.63.17Mask:18分析:主网IP 和子网IP都是属于B类IP地址, 前8位为网络段,后8位为主机段,Mask至少为16由于Mask为18,可知道在主机段中前两位,也就是IP地址的第9,10位为子网号(18-16=2);而B 类IP地址的子网掩码为255.255.0.0 所以可知:IP:128.196.33.12 1000 0000.1100 0100.0010 0001.0000 11002位相于,得:00Mask:255.255.0.0 1111 1111.1111 1111.0000 0000.0000 00002位相于,得:01 IP:128.196.127.17 1000 0000.1000 0100.0111 1111.0001 0001结果为不匹配。
截图:IP:128.196.33.12 1000 0000.1100 0100.0010 0001.0000 11002位相于,得:00Mask:255.255.0.0 1111 1111.1111 1111.0000 0000.0000 00002位相于,得:00 IP:128.196.63.17 1000 0000.1000 0100.0011 1111.0001 0001结果为匹配。
截图:(3)补充说明:i)主网和子网匹配的时候,实际上的与运算的位数是Mask个数,即Mask有多少,就相与前多少个位。
而以上例子中可知,B类IP地址的子网掩码为255.255.0.0,所以前8位全是1,所以无论IP是多少,相与结果都是1,即不用考虑网络段,直接相与主机段的前n 段即可,n=(mask-所属网络分类的主机段位数)。
本测试例子中位2。
ii)考虑(2)中的两个3个IP地址可以发现当主网IP为128.196.33.12,mask 为18时,IP和子网掩码相与,主机号前两位为00,所以可推出,子网IP的只需要主机段的前两位为00,则都可以匹配,即子网IP的第3节(第17位到第24位)为00XX XXXX ,转化为十进制就是小于63的整数就可以匹配。
2.输入合法性测试本实验程序规定输入的标准参数输入格式为:X.X.X.X/MASK X.X.X.X ,其中:X 为0-255的十进制整数,mask为0-32的十进制整数,两个IP地址中间用空格分开,IP地址的为4段,每一段都用“.”分开,IP地址中允许出现空格或其他字符(1)输入的IP地址中含有非法字符测试数据:主网IP:128.196.33.a2子网IP:12e.196.127.17Mask:1h结果截图:(2)输入的IP地址段数不正确测试数据:主网IP:128..33.12子网IP:126.196.Mask:18结果截图:(3)没有输入mask测试数据:主网IP:128.196.33.12子网IP:128.196.33.11 结果截图:(4)输入mask超出合法范围测试数据:主网IP:128.196.33.12子网IP:128.196.33.11Mask:35结果截图:(5)输入IP超出合法范围测试数据:主网IP:555.196.33.12子网IP:128.999.33.11Mask:25结果截图:(6)特殊的IP地址测试数据:主网IP:0.0.0.0子网IP:127.1.1.1Mask:0结果截图:测试数据:主网IP:0.0.0.0子网IP:255.255.255.255Mask:0结果截图:五. 实验结论本实验根据现在通用的IP地址分配使用规则,设计实验算法,运用C++字符转函数处理,程序实现了基本要求的功能,考虑到了多方面的因素;另一方面,设计之初的思路把此程序定位在接口工具程序,所以省略掉UI的设计,考虑到了扩展性的方面需要,程序提供简单、方便的接口和较为简单参数,方便扩展使用。