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

    计算机网络课程设计IP地址和子网分割毕业论文.docx

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

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

    计算机网络课程设计IP地址和子网分割毕业论文.docx

    1、计算机网络课程设计IP地址和子网分割毕业论文华南农业大学课程设计课程名称:计算机网络项目名称:IP地址与其子网分割开课年级:*开设时间:*指导教师:*辅助指导教师:*学生:*学 号:*评语成绩:IP地址与其子网分割摘要:利用该系统实现IP 地址的判断以与其子网的分割。介绍了IP地址原理以与子网划分原理,并从总体上与功能上给予设计,再详细通过编码实现。并介绍了自己的部分心得。关键字:IP地址,子网,子网号,掩码,划分1.引言:IP地址的功用正如在现实生活中给别人写信得首先确定对方的收信地址那样,网络中的两台计算机(确切地说是两个节点node)间要相互通信必须事先知道对方节点的地址,在INTERN

    2、ET上,这种标识网络节点的地址信息被称为IP地址(IP ADDRESS),通常简称为IP。INTERNET上的计算机正是通过这个具有唯一性的网络标识来识别其它的计算机,从而实现信息传输。利用该系统实现IP 地址的判断以与其子网的分割。2总体设计2.1系统设计与基本知识说明AIP地址的组成与其分类1、管理机构:为了确保IP地址的不重复性,客观上需要一个机构来统一管理,这个机构就是IANA(Internet Assigned Number Authority 国际分配局),她和各个区域的NIC(Network Information Center 网络信息中心)一起,统一分配全球围的IP地址,并且

    3、研究、接纳新的IP地址方案,以保证Internet飞速发展的需要。2、组成:现行的IP地址系统是IPv4,即IP地址第4版,它以32位二进制数来表示Internet上的节点的地址,并照一定的规律划分为网络ID(netid)和主机ID(hostid)两部分。netid标识同一个物理网络上的所有节点,hostid标识在这个物理网络上的一个节点。3、子网掩码:在TCP/IP网络上每一个节点都需要一个32位的子网掩码(Subnet Mask),它用于屏蔽IP地址的一部份,使得网络协议(TCP/IP协议组)能够区别netid和hostid。当TCP/IP节点间进行通信时,子网掩码用于判断一个节点是在本地

    4、网络还是远程网络上,以确定是否经路由转发。如果子网掩码无效,则会导致不必要的广播,从而产生广播风暴而降低系统性能,且可能导致主机的挂起。4、表示方式:由于32位二进制数的难于记忆,因此通常将其分为四组,每组八位,中间用实心小圆点“.”隔开,并把每组中的八位二进制数转换成十进制数,形如:W.X.Y.Z的格式,这种标式称为间断十进制计数(dotted decimal notation)。以下是一个合法的IP地址:0001(二进制格式)其对应的间断十进制格式为:202.206.1.1。 5、分类:IANA把32位的IP地址划分为A类、B类、C类、D类、E类等五类地址。其中A类地址被分配给大型网络使用

    5、,地址的最高位为0,随后7位为netid,后24位为hostid,其IP地址围从1.0.0.1至126.255.255.254;B类地址被分配给中型网络使用,地址的最高两位为10,随后14位为netid,后16位为hostid,其IP地址围从128.0.0.1至191.255.255.254;C类地址被分配给小型网络使用,地址的最高三位为110,随后21位为netid,后8位为hostid,其IP地址围从192.0.0.1至223.255.255.254;D类地址通常用于多点传送给多个网络节点;E类地址用于试验性网络,保留为以后使用。除此之外,还有些特殊地规定,如:在一个netid下,host

    6、id全为0的规定为本地地址,hostid全为1则用于广播(broadcast);A类地址中的127.0.0.0用于回送(looplack)功能,其作用是在局部计算机上试验进程间的通信等等。(关于各类网络可用的最大网络数与每个网络所支持的最大主机数请参看表一。)网络类别网络数每个网络所支持的最大主机数A类 127 16777214B类 16384 65534C类 2097152 254表一:各类网络可用的最大网络数与每个网络所支持的最大主机数 BIP地址的子网分割 1、子网分割的优点:每一个IP地址指定唯一的一台主机,而一台主机可以有不只一个IP地址,例如路由器(Route),通常具有多个节点,

    7、每个节点对应一个IP。由于IP地址由netid和hostid组成,网关(Gateway)可以很容易地从32位地址的netid域中提取网络标识符,并以此netid为基准选择路由,即网关只需知道其它网络的位置而不需要知道INTERNET上每个主机的位置,从而大大减轻路由器的负担。众所周知,INTERNET是各种不同的网络通过共同的通信协议(TCP/IP协议组)连接而成的,在一个netid下,通常包含多个不同类型的网络(如以太网和令牌环网),再加上每个网络所支持的主机数都有一定的限制,因此有必要把同一个netid下的网络分割成多个子网(Subnet),子网间的通信不用经过网关,从而提高网络传输的效率

    8、。具有一样netid的网络经过分割,其IP地址变成由netid、subnetid、hostid三部分组成。2、子网分割的过程:我们以一个C类网络202.206.1.Z为例来说明子网分割的过程。在此IP地址中,前3个八位组为netid,Z为hostid。当从左至右取1位子网掩码位时,IP地址开如:11001010,11001110,00000001,1?,即分成两个子网,每个子网所支持的最大主机数为128个,其子网掩码为:255.255.255.128;当取2位掩码位时,分成四个子网,每个子网所支持的最大主机数为64个,其子网掩码为:255.255.255.192当取7位掩码位时,分成128个子

    9、网,每个子网所支持的最大主机数为2个,其子网掩码为:255.255.255.254。3、子网分割的地址损失:一个完整的IP地址段经子网分割后,按规定第一以与最后一段为不可用,中间各段的起始地址和终了地址也不可用。如此一来,当分割成段数最小(1个掩码位)与最大(7个掩码位)都是无意义的,因为其IP地址全部无效,而在此之间根据掩码位数的不同而有不同的地址损失(C类IP经分割后地址的损失见表二)。在实际的应用中应根据需要设定子网掩码,既要减少IP地址的损失,又得考虑子网的个数和每个子网中的有效的地址数,而且还得考虑网络进一步升级的需要。掩码位子网掩码可用子网号前后两段子网地址损失数每段子网最大主机数

    10、中间段地址损失数地址损失总数1202.206.1.128无效无效无效无效2562202.206.1.1922-31286441323202.206.1.2242-7643212764202.206.1.2402-15321628605202.206.1.2482-3116860766202.206.1.2522-63841241327202.206.1.254无效无效无效无效256表二:C类IP地址子网分割的地址损失4、两个IP地址是否在同一个网络的判定:前面讲过网络上每个节点对应一个IP地址,每个IP地址都要有子网掩码。利用IP地址与子网掩码,网关能很容易地判断宿主机和目的主机是否在同一个网

    11、段上以决定是否IP转发。当网络路由接收到宿主机发出的数据报时,它把源地址与其子网掩码进行“与”运算,再把目的地址与其子网掩码进行与运算,两次运算的结果如果一样,则说明宿主机和目的主机都在当前网络上,不经转发;否则,根据netid进行转发。以202.206.1.2为例,(假设其子网掩码为:255.255.255.192)它分别向202.206.1.3和255.255.255.254发送数据报,路由运算的结果如下: 宿主机 目的主机一 IP地址 0010;0011 子网掩码 0000;0000 运算结果 0000;0000 十进制 202.206.1.0 202.206.1.0 目的主机二IP地址

    12、 1110子网掩码 0000运算结果 0000十进制 202.206.1.192由此可见,宿主机与目的主机一在同一网段上,而与目的主机二不在同一网段,需要转发。2.2功能设计1.子网号合法性判断2.子网掩码合法性判断3.IP地址合法性判断4.该IP地址是否属于该子网2.3 平台设计此系统在c+平台上实现。2.4 数据结构的设计/类结构class ipTestchar ip15; /定义ip数组,存放ip地址char subnetPlusMask18; /定义subnetPlusMask数组,存放子网号和子网掩码中1的个数char subnet18; /定义subnet数组,存放子网号char

    13、TempIp15; /定义TempIp数组,存放临时的ip地址char TempSub18; /定义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 *); /判断子

    14、网号是否合法void belong(); /判断IP是否为子网成员print();/定义输出函数print;3 详细设计3.1 具体功能设计1)命令格式; ip_test subnet/mask ip_addr其中ip_test 为程序名subnet为子网号 mask是一个数值ip_addr要测试的地址2)判断subnet和ip_addr 的合法性3)判断掩码的合法性4)在ip地址合法的前提下,判断ip_addr是否属于子网subnet5)输出命令中的ip是否合法,演马是否合法以与ip_a 3.2 输入格式命令行格式:ip_test subnet/mask ip_addr ip_test 程序

    15、名 subnet 子网号 mask 一个数值,为子网掩码1的个数 ip_addr是要测试的IP地址 例如:ip_test 202.113.16.0/24 202.113.16.103.3 流程图命令行输入参数格式开始子网长度超出IP长度超出subnet非法输出“valid subnet”和子网输出“subnet is invalid!”mask非法输出“mask is invalid!”输出“valid mask”和掩码ip非法输出“valid ip”和ip地址输出“ip is invalid!”ip belong subnet输出“ip belong to subnetPlusMask”输出

    16、“ip not belong to subnetPlusMask”结束 Y Y N N N Y Y N N Y Y N N Y3.4 详细代码#include #include #include #include #include #include /类结构class ipTestchar ip15; /定义ip数组,存放ip地址char subnetPlusMask18; /定义subnetPlusMask数组,存放子网号和子网掩码中1的个数char subnet18; /定义subnet数组,存放子网号char TempIp15; /定义TempIp数组,存放临时的ip地址char Tem

    17、pSub18; /定义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(

    18、);/定义输出函数print;/主函数void main(int argc,char *argv) int i; printf(您输入了 %d 个参数n分别是:,argc); for(i=0;iargc;i+) printf(%sn,argvi);if(argc != 3) /判断参数格式是否正确cout error endl format shoud be:ip_test subnet/mask ip 18) /先判断最简单的错误,子网号与子网掩码长度和是否超出cout 15) /ip地址长度是否超出cout ip is too long;return;ipTest test(argv1,a

    19、rgv2); /实例化ipTest类test.print(); /完成相应判别并输出结果/构造函数ipTest:ipTest(char* subnetPlusMask,char *ip)maskIsValid = true;char temp2;/把/前的字符复制到subnet字符数组中int smLen = strlen(subnetPlusMask); / 定义smLen为subnetPlusMask的长度for(int i = 0;i subneti = subnetPlusMaski; /对subnet数组赋值,值为subnetPlusMask中的数值this-TempSubi = s

    20、ubnetPlusMaski; /对TempSub数组赋值,值为subnetPlusMask中的数值subneti = 0;/给数组加上结束符TempSubi = 0; /给数组加上结束符if(i = smLen-3) /初始化mask和maskIsValidif(i = smLen-2)temp0 = subnetPlusMaski+1;if(!isdigit(temp0) /判断temp中的值是否为字符maskIsValid = false;else if(i = smLen-3)temp0 = subnetPlusMaski+1;temp1 = subnetPlusMaski+2;if(

    21、!(isdigit(temp0)&isdigit(temp1) /判断temp中的值是否为字符maskIsValid = false;mask = atoi(temp); /将temp中的字符数值化if(mask 32) /判断mask值是否超出围maskIsValid = false;else /用十进制数表示的掩码中1的个数只能是一位数或者两位数maskIsValid = false;strcpy(this-subnetPlusMask,subnetPlusMask); /给subnetPlusMask赋值strcpy(this-ip,ip); /给IP赋值strcpy(this-Temp

    22、Ip,ip);/调用判别函数,并输出结果ipTest:print()bool subIsV = subnetIsValid(TempSub);bool ipIsV = ipIsValid(TempIp);if(!subIsV) /subnet非法cout subnet is invalid! endl;elsecout valid subnet: subnet endl;if(!maskIsValid) /mask非法cout mask is invalid! endl;elsecout valid mask: mask endl;if(!ipIsV) /ip非法cout ip is inva

    23、lid! endl;elsecout valid ip: ip endl;/判断ip是否belong subnetif(subIsV & ipIsV & maskIsValid)belong();/子网数,判断输入是否含有非数字字符bool ipTest:NoIllegalChar(char *ch)unsigned int i,k=0;for(i=0;i strlen(ch);i+)if(isdigit(*(ch+i)=0) /判断每一位是否为数字字符return false;return true; /若不含有非法数字字符则返回true/判别IP地址是否合法bool ipTest:ipIs

    24、Valid(char * ip)char ch=.; /分隔符char *token,*dot4;int iplen = 0;token = strtok(ip,ch); /以.标志将IP字符串按节分开while(token!=NULL) /循环进行,直到结束dotiplen=token; /将分开的每段赋值给dotiplen+;token = strtok(NULL,ch);if(iplen != 4) /段数不对return false;for(int i = 0; i 255) /有非法字符或某段值非法return false;return true;/判断子网号是否合法bool ipT

    25、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 temp3;int i,j,t = 0;for (i = 0, j=

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

    27、=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不匹配cout 子网号与掩码不匹配,error! endl;return;if(iSubAiMask)=0) /说明子网号全1cout 子网号全1,error! endl;return;if(iSubA&iMask)=0) /说明子网号全0cout 子网号全0,er

    28、ror! endl;return;if(iSubA)=(iIPA&iMask) /IP和掩码与,结果和子网号比较if(iIPA|iMask)=iMask) /说明主机号全0cout 主机号全0,error! endl;return;if(iIPA|iMask)=0xffffffff) /说明主机号全1cout 主机号全1,error! endl;return;/ip属于subnetcout ip belongs to subnetPlusMask endl;return;/ip不属于subnetelsecout ip doesnt belong to subnetPlusMask endl;4 总结1.相对而言这个实验比较简单,只是判断ip


    注意事项

    本文(计算机网络课程设计IP地址和子网分割毕业论文.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




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

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

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


    收起
    展开