第一范文网 - 专业文章范例文档资料分享平台

IP地址合法性判断及子网检测 - 实验评测报告

来源:用户分享 时间:2025/6/12 20:39:11 本文由婵炲本鍔栫粊锟� 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

一. 实验目的

1.加深对IP地址及subnet的认识。 2.了解IP地址的划分。

3. 了解subnet的作用和产生因素,subnet的划分。 4. 实际操作编写规则,匹配IP和subnet,加深理解

二. 实验环境<软件、硬件及条件)

1.软件

操作系统:Windows 7

编程环境:Microsoft Visual Studio 2008<兼容MS VS2005,亦可使用VC6.0等) 编程语言:C++ 测试环境: MS-DOS 2.硬件 现阶段常见PC

三. 实验方法

Part 1 实验原理

我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet上这个庞大的网间网中,每个网络也有自己的标识符。我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机<包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。另一方面,只有在一个网络号下的计算机之间才能\直接\互通,不同网络号的计算机要通过网关.网络寻址规则 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 #include #include #include #include #include using namespace std。

四. 实验分析及测试

本部分测试了正常输入和非法输入时,程序对输入的判断,编程的环境为VS2008,在解决方案文件夹下面的Debug文件夹里面生成可执行文件;运行MS-DOS,进入Debug文件夹进行测试。 1.算法正确性检测

<1)用正确格式和合法的数据的输入,测试Mask和IP的匹配

测试数据: IP:128.196.33.12 Mask: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.17 Mask: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 1100 2位相于,得:00 Mask:255.255.0.0 1111 1111.1111 1111.0000 0000.0000 0000

2位相于,得:01

IP:128.196.127.17 1000 0000.1000 0100.0111 1111.0001 0001 结果为不匹配。 截图:

IP地址合法性判断及子网检测 - 实验评测报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2gv424z4a23cwgi893aj3uh255c6he00c6j_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top