计算机网络课程设计 IP地址及其子网分割
- 格式:doc
- 大小:102.50 KB
- 文档页数:16
计算机网络课程教学设计一、教学内容本节课的教学内容选自教材《计算机网络》的第四章——网络层。
本章主要介绍了网络层的基本概念、网络层的寻址机制以及数据传输的基本过程。
具体内容包括:IP地址、子网划分、路由选择、数据报传输等。
二、教学目标1. 让学生理解网络层的概念及其在计算机网络中的作用。
2. 使学生掌握IP地址的分类、子网划分和路由选择的方法。
3. 培养学生运用网络层知识分析、解决实际问题的能力。
三、教学难点与重点重点:网络层的基本概念、IP地址的分类、子网划分、路由选择。
难点:子网划分规则、路由选择的算法。
四、教具与学具准备教具:多媒体投影仪、计算机、网络教学软件。
学具:笔记本、教材《计算机网络》、课件。
五、教学过程1. 实践情景引入:以生活中的网络通信为例,让学生了解网络层在数据传输过程中的作用。
2. 知识点讲解:(1)讲解网络层的概念及其在计算机网络中的地位。
(2)介绍IP地址的分类及其作用。
(3)讲解子网划分的方法和规则。
(4)介绍路由选择的基本算法。
3. 例题讲解:分析实际案例,运用网络层知识解决问题。
4. 随堂练习:让学生运用所学知识,完成相关练习题。
六、板书设计板书内容:网络层1. 概念:网络层的作用2. IP地址分类:A、B、C、D、E类地址3. 子网划分:划分子网的方法和规则4. 路由选择:路由选择的算法七、作业设计1. 请简述网络层的概念及其在计算机网络中的作用。
2. 请列举IP地址的分类及其作用。
3. 请解释子网划分的方法和规则。
4. 请介绍路由选择的基本算法。
八、课后反思及拓展延伸课后反思:本节课通过实例引入,让学生了解网络层在计算机网络中的重要作用。
在讲解知识点时,注意引导学生运用所学知识分析、解决问题。
课堂练习环节,及时发现并纠正学生的错误,巩固所学知识。
拓展延伸:邀请企业工程师进行专题讲座,让学生了解网络层技术在实际应用中的发展现状和未来趋势。
组织学生进行小组讨论,探讨网络层技术在未来的应用前景。
华南农业大学课程设计课程名称:计算机网络项目名称:IP地址与其子网分割开课年级:*开设时间:*指导教师:*辅助指导教师:*学生:*学号:*评语成绩:IP地址与其子网分割摘要:利用该系统实现IP 地址的判断以与其子网的分割。
介绍了IP地址原理以与子网划分原理,并从总体上与功能上给予设计,再详细通过编码实现。
并介绍了自己的部分心得。
关键字:IP地址,子网,子网号,掩码,划分1.引言:IP地址的功用正如在现实生活中给别人写信得首先确定对方的收信地址那样,网络中的两台计算机(确切地说是两个节点——node)间要相互通信必须事先知道对方节点的地址,在INTERNET上,这种标识网络节点的地址信息被称为IP地址(IP ADDRESS),通常简称为IP。
INTERNET上的计算机正是通过这个具有唯一性的网络标识来识别其它的计算机,从而实现信息传输。
利用该系统实现IP 地址的判断以与其子网的分割。
2.总体设计2.1系统设计与基本知识说明A.IP地址的组成与其分类1、管理机构:为了确保IP地址的不重复性,客观上需要一个机构来统一管理,这个机构就是IANA(Internet Assigned Number Authority 国际分配局),她和各个区域的NIC (Network Information Center 网络信息中心)一起,统一分配全球围的IP地址,并且研究、接纳新的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。
计网子网划分课程设计一、课程目标知识目标:1. 理解计算机网络的基本概念,掌握子网划分的原理及方法;2. 学会运用子网划分技术对IP地址进行有效管理;3. 掌握不同子网划分方法的优缺点及适用场景。
技能目标:1. 能够运用所学知识,独立完成IP地址的子网划分操作;2. 培养学生的逻辑思维和问题解决能力,使其在遇到网络问题时,能够灵活运用子网划分技术进行有效分析。
情感态度价值观目标:1. 培养学生对计算机网络学科的兴趣,激发他们主动学习和探索的热情;2. 增强学生的团队协作意识,培养他们在分组讨论中相互学习、共同进步的精神;3. 引导学生认识到网络安全的重要性,树立正确的网络道德观念。
课程性质分析:本课程为计算机网络基础课程,重点讲解子网划分技术。
课程旨在帮助学生建立网络基础知识体系,提高实际操作能力。
学生特点分析:学生为初中年级,具备一定的计算机操作基础,对新知识充满好奇心,但可能缺乏实际应用经验。
教学要求:1. 理论与实践相结合,注重培养学生的动手操作能力;2. 采用案例教学,提高学生的学习兴趣和参与度;3. 强化团队合作,培养学生的沟通能力和协作精神。
二、教学内容1. 计算机网络基础知识回顾:包括网络结构、TCP/IP协议、IP地址等基本概念;教材章节:第一章 计算机网络基础2. 子网划分原理:讲解子网划分的目的、原理及方法;教材章节:第二章 IP地址与子网划分3. 子网划分方法:详细讲解不同子网划分方法(如固定子网掩码、可变长度子网掩码等)及其适用场景;教材章节:第二章 IP地址与子网划分4. 子网划分案例分析:通过实际案例,让学生了解子网划分在实际应用中的重要性;教材章节:第二章 IP地址与子网划分5. 子网划分操作实践:指导学生进行实际操作,巩固所学知识;教材章节:第三章 子网划分操作实践6. 子网划分在实际网络中的应用:分析子网划分在校园网、企业网等不同场景下的应用;教材章节:第四章 子网划分在实际网络中的应用7. 子网划分与网络安全:探讨子网划分对网络安全的影响,引导学生树立正确的网络道德观念;教材章节:第五章 网络安全与子网划分教学内容安排与进度:第1-2课时:回顾计算机网络基础知识,讲解子网划分原理;第3-4课时:讲解子网划分方法,进行案例分析;第5-6课时:指导学生进行子网划分操作实践;第7-8课时:分析子网划分在实际网络中的应用,探讨与网络安全的关系。
《IP地址与子网划分》教学方案设计一:教学目标1、了解IP地址的起源2、掌握IP的结构与类型3、掌握子网掩码的含义和使用方法4、掌握子网划分的基本方法二:教学重、难点1、教学重点:IP地址类型,子网掩码的含义,子网划分的基本方法2、教学难点:子网划分的基本方法三:教学时间: 2课时四:教学方法:讨论法,问题驱动法,类比教学五:教学过程:(一)第一课时1、新课导入前面已经将计算机间网络互联的硬件结构介绍给了大家,那么这里有一个问题存在,就是我们如何来寻找到我们需要的对象呢?大家可以想象,我们现实生活中,如何来定位一个建筑物,毫无疑问,用的是地址,这节课,我们就要给大家展示网络中的地址。
2、新课学习(一)第一课时该部分内容为基础知识,内容较简单。
1)IP 地址起源及其表示方法(可将IP地址与实际生活中的地址对应理解,在结构和组织上,它们有共同点,易于学生理解)我们把整个因特网看成为一个单一的、抽象的网络。
IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是惟一的 32 bit 的标识符。
2) IP 地址分类每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id ,它标志该主机(或路由器)。
两级的 IP 地址可以记为:IP 地址 ::= { <网络号>, <主机号>}地址的分级别不是IP 地址中特有的,其思想正是起源于我们现实生活的地址结构。
IP 地址中的网络号字段和主机号字段该处设置提问:按此划分法则,A ,B ,C 三类IP 地址个有多少个? 3)点分十进制记法A 类地址B 类地址C 类地址D 类地址E 类地址4)IP 地址的一些重要特点① IP 地址是一种分等级的地址结构。
分两个等级的好处是:⏹ 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。
ip地址课程设计一、课程目标知识目标:1. 学生能理解IP地址的概念、组成及其在网络中的作用;2. 学生能掌握IP地址的分类、私有IP地址和公网IP地址的区别;3. 学生了解子网划分的基本原理和作用;4. 学生掌握如何查看本机IP地址及简单故障排查。
技能目标:1. 学生能够运用所学知识配置IP地址及子网掩码;2. 学生能够使用网络命令进行IP地址相关操作,如:ping、ipconfig等;3. 学生能够通过实例分析,掌握IP地址在实际应用中的配置和调试。
情感态度价值观目标:1. 培养学生积极探索网络知识的兴趣,提高学生对计算机网络的认识;2. 增强学生的网络安全意识,教育学生合理使用网络资源,遵守网络道德规范;3. 培养学生的团队合作精神,使学生能够在小组讨论中相互学习、共同进步。
课程性质:本课程属于计算机网络基础知识范畴,具有较强的实践性,结合学生特点和教学要求,注重理论联系实际,提高学生的动手操作能力。
学生特点:针对所在年级的学生,已具备一定的计算机操作基础和网络知识,对新鲜事物充满好奇心,善于动手实践。
教学要求:结合课程内容,以实际应用为导向,注重培养学生的实际操作能力和问题解决能力。
在教学过程中,充分调动学生的积极性,引导学生主动参与课堂讨论和实践活动。
通过本课程的学习,使学生能够更好地理解和运用计算机网络知识。
二、教学内容1. IP地址的基本概念- IP地址的定义与功能- IP地址的组成与表示方法2. IP地址的分类与分配- IP地址的分类(A、B、C类)- 私有IP地址与公网IP地址- 特殊IP地址(如:回环地址、广播地址)3. 子网划分与子网掩码- 子网划分的原理- 子网掩码的定义与计算- 子网划分的应用实例4. IP地址的配置与使用- 如何查看本机IP地址- IP地址配置方法(静态IP地址与动态IP地址)- 常用网络命令(如:ping、ipconfig、tracert)5. IP地址故障排查与网络安全- IP地址常见故障与排查方法- IP地址与网络安全的关系- 合理使用IP地址,提高网络安全意识教学内容安排与进度:第1课时:IP地址的基本概念与分类第2课时:私有IP地址与公网IP地址,特殊IP地址第3课时:子网划分与子网掩码第4课时:IP地址的配置与使用,常用网络命令第5课时:IP地址故障排查与网络安全教材章节关联:本教学内容与教材中“计算机网络基础”章节的“IP地址”部分相关联,涵盖了IP地址的基础知识、配置与应用等关键知识点。
IP和子网划分实验报告任务:IP地址与子网划分1.任务目标(1)正确配置IP地址和子网掩码。
(2)掌握子网划分的方法。
2.项目所需设备准备(1)安装有Windows XP 操作系统的PC 2台。
(2)交换机1台。
(3直通线2根。
3.网络拓扑结构网络拓扑结构如图所示:图中用两台互连,通过修改一台的IP地址,来模拟两个子网中的不同主机。
4、项目实施步骤(1)硬件链接将两根直通双绞线的两端分别插入每台计算机网卡的RJ-45接口和交换机的RJ-45接口中,检查网卡和交换机的相应指示灯是否亮起,判断网络是否正常连通。
(2)TCP/IP协议配置步骤1:配置PC1计算机的IP地址为192.168.1.10,子网络掩码为255.255.255.0;PC2计算机的IP地址为192.168.1.20,子网络掩码为255.255.255.0;步骤2:在PC1和PC2之间用ping 命令测试网络的连通性,测试结果填入下表中步骤3:保持PC1的IP地址不变,PC2的IP地址修改为192.168.1.40;子网络掩码不变;步骤4:在次用ping命令测试网络的连通性,测试结果填入下表中。
计算机PC1 PC2PC1 ------- 连通正常PC2 连通正常--------(3)划分子网1步骤1:配置PC1计算机的IP地址为192.168.1.10,子网络掩码为255.255.255.224;PC2计算机的IP地址为192.168.1.20,子网络掩码为255.255.255.224;步骤2:在PC1和PC2之间用ping 命令测试网络的连通性,测试结果填入下表中;计算机PC1 PC2PC1 -------- 连通正常PC2 连通正常--------步骤3:保持PC1的IP地址不变,PC2的IP地址修改为192.168.1.40;子网络掩码不变;步骤4:在次用ping命令测试网络的连通性,测试结果填入下表中计算机PC1 PC2PC1 -------- 连通正常PC2 不能连通--------任务2、回答题通过IP地址及子网掩码可知道:在没划分子网的情况下,IP地址在有效的范围内都可以连通,而划分子网以后,连通性受到了限制。
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。
《计算机网络实验》实验报告学院管理学院专业电子商务年级班别2013级1班学号******----学生姓名蔡少云指导教师黄益民成绩______________________广东工业大学管理学院电子商务专业 1 班学号321300---- 姓名蔡少云教师评定_______实验题目实验五 IP地址与子网划分一、实验目的了解Packet Tracer软件的使用方法;了解Cisco IOS的三种操作模式及简单的命令;掌握IP地址与子网掩码的含义;掌握计算机IP地址的分配方式;掌握IP子网划分的概念和划分方法。
二、实验内容和要求按实验内容进行实验,分别记录各实验的结果并分析其原因。
三、实验结果第一部分:《计算机网络实践教程》2.1 操作模式,2.4 接口管理第二部分:实验的拓扑结构及IP地址分配方案如下图所示。
实验1:1)两人一组,设置两台主机的IP地址与子网掩码;也可采用Packet Tracer 模拟设置两台主机的IP地址与子网掩码:A: 192.168.2.2 255.255.254.0B: 192.168.3.3 255.255.254.02)两台主机均不设置缺省网关。
3)用arp -d命令清除两台主机上的ARP表,然后在A与B上分别用ping 命令与对方通信,观察并记录结果,并分析原因。
两台机的子网掩码相同,对方的IP地址(192.168.3.3)和自己的子网掩码(255.255.255.0)相"与",和自己在同一网段,所以连通,可以互相发送,接受数据(A所在网段为:192.168.2.0)4)在两台PC上分别执行arp -a命令,观察并记录结果,并分析原因。
由于主机将各自通信目标的IP地址与自己的子网掩码相"与"后,发现目标主机与自己均位于同一网段(192.168.2.0),因此通过ARP协议获得对方的MAC 地址,从而实现在同一网段内网络设备间的双向通信。
例2:通过给定的主机数来划分子网。
某单位给下属单位甲分配了一段IP:192.168.5.0/24,现在甲单位有两层办公楼(1楼和2楼),统一从1楼的路由器上公网。
1楼有100台电脑联网,2楼有53台电脑联网。
应该怎么去规划这个有关的IP?根据需求,画出下面这个简单的拓扑。
将192.168.5.0/24划成3个网段,1楼一个网段,至少拥有101个可用IP地址;2楼一个网段,至少拥有54个可用IP地址;1楼和2楼的路由器互联用一个网段,需要2个IP地址。
思路:我们在划分子网时优先考虑最大主机数来划分。
在本例中,我们就先使用最大主机数来划分子网。
101个可用IP地址,那就要保证至少7位的主机位可用(2的m次方-2≥101,m的最小值=7)。
如果保留7位主机位,那就只能划出两个网段,剩下的一个网段就划不出来了。
但是我们剩下的一个网段只需要2个IP地址并且2楼的网段只需要54个可用IP,因此,我们可以从第一次划出的两个网段中选择一个网段来继续划分2楼的网段和路由器互联使用的网段。
步骤:A. 先满足最大主机数需求,划分子网因为要保证1楼网段至少有101个可用IP地址,所以,主机位要保留至少7位。
先将192.168.5.0/24用二进制表示:11000000.10101000.00000101.00000000/24主机位保留7位,即在现有基础上网络位向主机位借1位(可划分出2个子网):① 11000000.10101000.00000101.00000000/25【192.168.5.0/25】② 11000000.10101000.00000101.10000000/25【192.168.5.128/25】1楼网段从这两个子网段中选择一个即可,我们选择192.168.5.0/25。
2楼网段和路由器互联使用的网段从192.168.5.128/25中再次划分得到。
B. 再划分2楼使用的网段2楼使用的网段从192.168.5.128/25这个子网段中再次划分子网获得。
华南农业大学课程设计课程名称:计算机网络项目名称:IP地址及其子网分割开课年级:*开设时间:*指导教师:*辅助指导教师:*学生姓名:*学号:*评语成绩:IP地址及其子网分割摘要:利用该系统实现IP 地址的判断以及其子网的分割。
介绍了IP地址原理以及子网划分原理,并从总体上及功能上给予设计,再详细通过编码实现。
并介绍了自己的部分心得。
关键字:IP地址,子网,子网号,掩码,划分1.引言:IP地址的功用正如在现实生活中给别人写信得首先确定对方的收信地址那样,网络中的两台计算机(确切地说是两个节点——node)间要相互通信必须事先知道对方节点的地址,在INTERNET上,这种标识网络节点的地址信息被称为IP地址(IP ADDRESS),通常简称为IP。
INTERNET上的计算机正是通过这个具有唯一性的网络标识来识别其它的计算机,从而实现信息传输。
利用该系统实现IP 地址的判断以及其子网的分割。
2.总体设计2.1系统设计及基本知识说明A.IP地址的组成及其分类1、管理机构:为了确保IP地址的不重复性,客观上需要一个机构来统一管理,这个机构就是IANA(Internet Assigned Number Authority 国际号码分配局),她和各个区域的NIC(Network Information Center 网络信息中心)一起,统一分配全球范围内的IP地址,并且研究、接纳新的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、表示方式:由于32位二进制数的难于记忆,因此通常将其分为四组,每组八位,中间用实心小圆点“.”隔开,并把每组中的八位二进制数转换成十进制数,形如:W.X.Y.Z 的格式,这种标式称为间断十进制计数(dotted decimal notation)。
以下是一个合法的IP地址:11001010110011100000000100000001(二进制格式)其对应的间断十进制格式为:202.206.1.1。
5、分类:IANA把32位的IP地址划分为A类、B类、C类、D类、E类等五类地址。
其中A类地址被分配给大型网络使用,地址的最高位为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下,hostid全为0的规定为本地地址,hostid全为1则用于广播(broadcast);A类地址中的127.0.0.0用于回送(looplack)功能,其作用是在局部计算机上试验进程间的通信等等。
(关于各类网络可用的最大网络数及每个网络所支持的最大主机数请参看表一。
)表一:各类网络可用的最大网络数及每个网络所支持的最大主机数 B.IP地址的子网分割1、子网分割的优点:每一个IP地址指定唯一的一台主机,而一台主机可以有不只一个IP地址,例如路由器(Route),通常具有多个节点,每个节点对应一个IP。
由于IP地址由netid和hostid组成,网关(Gateway)可以很容易地从32位地址的netid域中提取网络标识符,并以此netid为基准选择路由,即网关只需知道其它网络的位置而不需要知道INTERNET上每个主机的位置,从而大大减轻路由器的负担。
众所周知,INTERNET是各种不同的网络通过共同的通信协议(TCP/IP协议组)连接而成的,在一个netid下,通常包含多个不同类型的网络(如以太网和令牌环网),再加上每个网络所支持的主机数都有一定的限制,因此有必要把同一个netid下的网络分割成多个子网(Subnet),子网间的通信不用经过网关,从而提高网络传输的效率。
具有相同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个子网,每个子网所支持的最大主机数为2个,其子网掩码为:255.255.255.254。
3、子网分割的地址损失:一个完整的IP地址段经子网分割后,按规定第一以及最后一段为不可用,中间各段的起始地址和终了地址也不可用。
如此一来,当分割成段数最小(1个掩码位)及最大(7个掩码位)都是无意义的,因为其IP地址全部无效,而在此之间根据掩码位数的不同而有不同的地址损失(C类IP经分割后地址的损失见表二)。
在实际的应用中应根据需要设定子网掩码,既要减少IP地址的损失,又得考虑子网的个数和每个子网中的有效的地址数,而且还得考虑网络进一步升级的需要。
表二:C类IP地址子网分割的地址损失4、两个IP地址是否在同一个网络的判定:前面讲过网络上每个节点对应一个IP地址,每个IP地址都要有子网掩码。
利用IP地址及子网掩码,网关能很容易地判断宿主机和目的主机是否在同一个网段上以决定是否IP转发。
当网络路由接收到宿主机发出的数据报时,它把源地址与其子网掩码进行“与”运算,再把目的地址与其子网掩码进行与运算,两次运算的结果如果相同,则说明宿主机和目的主机都在当前网络上,不经转发;否则,根据netid 进行转发。
以202.206.1.2为例,(假设其子网掩码为:255.255.255.192)它分别向202.206.1.3和255.255.255.254发送数据报,路由运算的结果如下:宿主机目的主机一IP地址 11001010110011100000000100000010;11001010110011100000000100000011子网掩码 11111111111111111111111111000000;11111111111111111111111111000000运算结果 11001010110011100000000100000000;11001010110011100000000100000000十进制 202.206.1.0 202.206.1.0目的主机二IP地址 11001010110011100000000111111110子网掩码 11111111111111111111111111000000运算结果 11001010110011100000000111000000十进制 202.206.1.192由此可见,宿主机与目的主机一在同一网段上,而与目的主机二不在同一网段,需要转发。
2.2功能设计1.子网号合法性判断2.子网掩码合法性判断3.IP地址合法性判断4.该IP地址是否属于该子网2.3 平台设计此系统在c++平台上实现。
2.4 数据结构的设计//类结构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};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_a3.2 输入格式命令行格式:ip_test subnet/mask ip_addrip_test 程序名subnet 子网号mask 一个数值,为子网掩码1的个数ip_addr是要测试的IP地址例如:ip_test 202.113.16.0/24 202.113.16.103.3 流程图3.4 详细代码#include <iostream.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#include <ctype.h>//类结构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[]){int i;printf("您输入了 %d 个参数\n分别是:",argc);for(i=0;i<argc;i++)printf("%s\n",argv[i]);if(argc != 3){ //判断参数格式是否正确cout <<"error" <<endl <<"format shoud be:ip_test subnet/mask ip" <<endl; return;}else{if(strlen(argv[1]) > 18){ //先判断最简单的错误,子网号及子网掩码长度和是否超出cout <<"subnet/mask is too long";return;}if(strlen(argv[2]) > 15){ //ip地址长度是否超出cout <<"ip 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-3){ //初始化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[i+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) //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 invalid!" <<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::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);}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++){ //不用再检错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++){ //不用再检错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 <<"子网号与掩码不匹配,error!" <<endl;return;}if((iSubA^iMask)==0){ //说明子网号全1cout <<"子网号全1,error!" <<endl;return;}if((iSubA&iMask)==0){ //说明子网号全0cout <<"子网号全0,error!" <<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 <<" doesn't belong to " <<subnetPlusMask <<endl;}4 总结1.相对而言这个实验比较简单,只是判断ip地址,子网号,子网掩码的合法性以及属不属于该子网。