计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网

上传人:小** 文档编号:91385089 上传时间:2019-06-27 格式:DOC 页数:13 大小:398.28KB
返回 下载 相关 举报
计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网_第1页
第1页 / 共13页
计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网_第2页
第2页 / 共13页
计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网_第3页
第3页 / 共13页
计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网_第4页
第4页 / 共13页
计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网》由会员分享,可在线阅读,更多相关《计算机网络课设--------判断一个ip地址是否合法,并判断该地址是否属于一个给定子网(13页珍藏版)》请在金锄头文库上搜索。

1、 沈阳理工大学课程设计专用纸 No11目 录1 课程设计目的12 课程设计要求13相关知识14课程设计分析3 41程序大致设计过程3 42实验流程图35程序代码56运行结果与分析117参考文献12沈阳理工大学1 课程设计目的 本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对IP地址概念及其子网划分有非常清楚的认识。2 课程设计的要求 根据介绍的IP地址与子网划分的知识,编写程序判断IP地址的合法性及所属子网。(1)以命令行形式运行IPAddress subnet_address/mask ip_address其中,IPAddress为程序名,s

2、ubnet_address为子网地址,mask为掩码,ip_address为IP地址。(2)输入内容:IP地址、子网地址与掩码是否合法,以及IP地址是否属于子网。3 相关知识1. IP地址相关概念所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。 按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“000010100000000000000000000

3、00001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“”分开不同的字节。于是,上面的IP地址可以表示为“10001”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。 大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个

4、或多个物理网络,那么它可以拥有两个或多个IP地址。IP地址采用分层结构,由网络号与主机号两部分组成(如下图1所示):网络号主机号 图1IP地址长度为32位,用点分十进制表示,格式为.,每个为8位,每个的值为0255(例如202.113.29.119)。根据不同的取值范围,IP地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:A类地址的第一位为0。B类地址的前两位为10 .C类地址的前三位为110。D类地址的前四位为1110。E类地址的前五位为11110。五类IP地址的结构如下图2所示;0网络号(7位)主机号(24位)10网络号(14位)主机号(16位)110网络号

5、(21位)主机号(8位)1110组播地址(28位)11110保留用于课程设计和将来使用 图2A类IP地址结构适合用于有大量主机的大型网络。由于主机号长度为24位,因此每个A类网络的主机IP数理论上为224=16777216。B类IP地址适合用于一些国际性大公司与政府机构等中等大小的组织。由于网络IP长度为14位,因此允许有214=16384个不同的B类网络,实际允许连接16382个网络。C类IP地址适合用于一些小公司与普通的研究机构。2子网的划分划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host ID。第一级网络号定义了网点的位置;

6、第二级子网号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。子网掩码表示方法:网络号与子网号置1,主机号置0。4课程设计分析41程序大致设计过程:1.分别判断子网号、掩码和IP地址的基本格式是否合法。2.如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。该函数同时判别子网号与

7、掩码是否匹配,子网号为全0或全1,主机号为全0、全1.42实验流程图如下: 1.主流程图YNYYYNNN开始子网是否合法Ip地址是否属于子网结束掩码是否合法ip地址是否合法图3主流程图2.验证ip地址合法性流程图YN开始结束用正则表达式判断是否合法输入ip地址图4验证ip地址合法性流程图3验证子网掩码合法性流程图YN开始结束用正则表达式判断是否合法输入子网掩码图5 验证子网掩码合法性流程图 5 程序代码#include#include#include#include /定义 ip地址类class ipTest char ip15; char subnetPlusMask18; char sub

8、net10; char TempIp15; char TempSub10; int mask; bool maskIsValid;public: ipTest(char*,char*); ipTest(); bool NoIllegalChar(char*); bool ipIsValid(char*); bool subnetIsValid(char*); void belong(); void print(); ;void main(int argc,char* argv)/检查输入命令格式if(argc!=3)cout18) cout15) coutIp Address is too l

9、ong!; return; /实例化ipTest类 ipTest test(argv1,argv2); test.print(); /IP地址类构造函数 ipTest:ipTest(char* subnetPlusMask,char*ip) maskIsValid=true; char temp2; /将1前的字符复制到subnet中 int smLen=strlen(subnetPlusMask); for(int i=0;isubneti=subnetPlusMaski; this-TempSubi=subnetPlusMaski; subneti=0; TempSubi=0;/初始化if

10、(i=smLen-2)temp0=subnetPlusMaski+1;if(!isdigit(temp0)maskIsValid=false;elseif(i=smLen-3)temp0=subnetPlusMaski+1;temp1=subnetPlusMaski+2;if(!(isdigit(temp0)&isdigit(temp1)maskIsValid=false;mask=atoi(temp);if(mask32)maskIsValid=false;else maskIsValid=false;/为subnetPlusMask与ip赋值strcpy(this-subnetPlusMa

11、sk,subnetPlusMask);strcpy(this-ip,ip);strcpy(this-TempIp,ip);/调用判别函数并输出结果void ipTest:print()bool subIsV=subnetIsValid(TempSub);bool ipIsV=ipIsValid(TempIp);/判断子网是否合法if(!subIsV)coutSubnet is invalidendl;elsecoutValid subnet:subnetendl;/判断掩码是否合法if(!maskIsValid)coutMask is invalidendl;elsecoutValid mas

12、k:maskendl; /判断是否IP地址合法if(ipIsV)coutIP adress is invalidendl;elsecoutValid ip address:endl;/判断IP地址是否属于子网if(subIsV&ipIsV&maskIsValid)belong();/判断是否含有非数字字符bool ipTest:NoIllegalChar(char* ch)unsigned int i;unsigned int k=0;/判断每位是否为数字字符for(i=0;istrlen(ch);i+)if(isdigit(*(ch+i)=0)return false;return true;/判断IP地址

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

当前位置:首页 > 商业/管理/HR > 管理学资料

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