当前位置:文档之家› IP地址的合法性及子网判断

IP地址的合法性及子网判断

IP地址的合法性及子网判断
IP地址的合法性及子网判断

仲恺农业工程学院

课程设计IP地址的合法性及子网判断

姓名

院(系)信息科学与技术学院

专业年级

学号

指导教师

职称导师

起止时间2013.10.21—2013.11.04

仲恺农业工程学院教务处制

目录

1.课程设计目的和意义 (3)

1.1设计的目的 (3)

1.2设计的意义 (3)

2.课程设计的内容和要求 (4)

3.课程设计的相关技术 (4)

3.1课程设计的运行环境 (4)

3.2 IP地址相关概念和知识的回顾 (5)

3.3特殊的IP地址形式 (6)

3.4子网的划分 (7)

4.课程设计过程 (7)

4.1程序大致设计过程 (7)

4.2实验流程图 (8)

5.部分程序运行结果 (10)

6.课程设计小结 (12)

7.参考文献 (13)

源代码 (13)

1.课程设计目的和意义

1.1设计目的

通过计算机网络课程设计,让我们学会处理几种常用计算机网络问题的基本处理方法,掌握计算机网络的基本原理,使我们在面对不断变化的技术时,具有跟踪,学习的基础与能力。

掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。

具体而言,关于”IP地址的合法性及子网判断”课程设计题目的目的是:用C/C++语言编写程序,以判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网.从而能够考察我们对IP地址的概念,各类IP地址的区分以及子网划分的理解和掌握程度。

1.2设计的意义

1)有利于基础知识的理解

通过计算机网络的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问题的基本态度与基本能力。让学生接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。

2)有利于逻辑思维的锻炼

程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。

3)有利于与其他学科的整合

在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。

4)有利于治学态度的培养

程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。有助于严谨治学、一丝不苟的科学精神的培养,以及不怕失败、百折不挠品格的锻炼。

2.课程设计的内容和要求

在掌握IP地址的表示方法以及子网划分方法的基础上,并以计算机网络中关于IP地址的相关理论知识为基石,运用C/C++语言按如下要求完成程序。

(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.1 123.23$.2.1 123.2345.2.1 123.23.45.1

(3)判断掩码的合法性。

譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。(3)在IP 地址合法,掩码合法以及子网号也合法的前提下,判断ip_addr是否属于subnet。

(4)输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。

(5)还可以判断子网号,主机号全0,全1问题。

3.课程设计的相关技术

3.1 课程设计的运行环境

C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

本程序在Windows环境下利用C++语言编写,Microsoft Visual Studio 6.0进行编译。Visual Studio是微软公司推出的开发环境,Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和office插件。

3.2 IP地址相关概念和知识的回顾

大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个或多个物理网络,那么它可以拥有两个或多个IP地址。

IP地址采用分层结构,由网络号与主机号两部分组成(如下图所示):

IP地址长度为32位,用点分十进制表示,格式为ⅹ.ⅹ.ⅹ.ⅹ,每个ⅹ为8位,每个ⅹ的值为0—255(例如202.113.29.119)。根据不同的取值范围,IP 地址可以分为五类,IP地址中的前5位用于标识IP地址的类别,具体的分类规则如下:

·A类地址的第一位为0。

·B类地址的前两位为10。

·C类地址的前三位为110。

·D类地址的前四位为1110。

·E类地址的前五位为11110。

五类IP地址的结构如下所示;

A类IP地址结构适合用于有大量主机的大型网络。由于主机号长度为24位,因此每个A类网络的主机IP数理论上为224=16777216。

B类IP地址适合用于一些国际性大公司与政府机构等中等大小的组织。由于网络IP长度为14位,因此允许有214=16384个不同的B类网络,实际允许连接16382个网络。

C类IP地址适合用于一些小公司与普通的研究机构。

3.3 特殊的IP地址形式

(1)直接广播地址

A类,B类,C类IP地址中主机号全1的地址称为直接广播地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的是点—点传输方式,分组广播需要通过软件来实现。

(2)受限广播地址

网络号与主机号的32位全位1的地址为受限广播地址,用来将一个分组以广播方式发送给本网的所有主机。本网的所有主机将接受该分组,路由器则阻挡该分组通过。

(3)“这个网络上的这台主机”地址

(4)“这个网络上的特定主机”地址

主机或路由器向本网络上的某个特定的主机发送分组,网络号部分为全0,主机号为确定的值。这样的分组被相知在本网络内部。

(5)回送地址

回送地址用于网络软件测试和本地进程见通信。TCP/IP协议规定网络号为127的分组不能出现在任何网络上;主机和路由器不能为该地址广播任何寻址信息。

3.4 子网的划分

人们在早期设计与建设ARPAnet是,没有预料到网络的发展速度如此之快,应用范围如此之广。当时个人计算机与局域网尚未出现。所以,研究者在设计Internet地址的编址方案时,主要是针对大型互联的网络结构。设计IP地址的最初目的是希望每个IP得志都能唯一地、确定地识别一个网络与一台主机,但是这种方法同时也存在着两个主要的问题,即IP地址的有效利用率和路由器的工作效率。

为了解决这个问题,人们提出了子网(subnet)和超网(supernet)的概念。子网就是一个大的网络划分成几个较小的网络,而每一个小网络都是其自己的地址。超网就是将一个组织所属的几个C类网络合并成为一个更大地址范围的逻辑网络。

划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host ID。第一级网络号定义了网点的位置;第二级子网号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。

当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。

子网掩码表示方法:网络号与子网号置1,主机号置0。如判断某一IP地址是否属于某一子网呢?只需将二进制IP地址与子网掩码按位进行“与”运算。若“与”运算所得值与给定子网地址一致,则说明该IP地址属于给定的子网。

4.课程设计过程

4.1程序大致设计过程:

1)分别判断子网号、掩码和IP地址的基本格式是否合法。

2)如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的

函数。该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,

主机号为全0、全1。

4.2实验流程图如下:

1)主流程图

图3-1 主流程图

2)验证ip地址合法性流程图

图3-2 验证ip地址合法性流程图3)验证子网掩码合法性流程图

图3-3 验证子网掩码合法性流程图4)验证ip是否属于某个子网流程图:

图3-4 验证ip是否属于某个子网流程图

5.部分程序运行结果

程序主要运行界面:

1)测试格式是否为三段格式如图:

分析:程序要求是“程序名子网号/掩码 ip地址”格式而这里只有两端造成参数不匹配,出错!

分析:虽然格式是三段、子网号无效且掩码是零,其IP地址还是合法的!

2)简单判断子网号及掩码长度是否超出范围如图:

分析:因为程序里设置的子网号和掩码字符串长度最多是18个字符而这里有20个字符大于18,所以出错!

分析:程序中的IP地址字符串最长只有15个而程序中有17个字符大于15个,所以出错!

3)测试Ip地址是否合法如图:

分析:IP地址不符合格式要求!

分析:IP地址段数不是四,所以出错!

4)测试子网号与掩码是否匹配如图:

分析:子网号转换为二进制:00000001 11000000 00000000 00000000 子网掩码转换成二进制:11111111 10000000 00000000 00000000 从以上可以看出子网号与子网掩码不匹配与输出结果是一样的说明程序算法是正确的!

分析:子网号转换为二进制:00000001 10000000 00000000 00000000 子网掩码转换成二进制:11111111 10000000 00000000 00000000 从以上可以看出子网号与子网掩码匹配与输出结果是一样的说明程序算法

是正确的!

5)测试子网号是否全零或全一如图:

6.课程设计小结

这次课程设计,感触颇深!课程设计是学生考试前最后一个重要学习环节,是学习深化与升华的重要过程。经过这次课程设计,我发现现在学习的知识远远不够,经过自学以及向同学们学习才得以完成这次课程设计。

此次课程设计任务是写一个判断ip地址的合法性和判断这个ip地址是否为某一个子网。花了一天多时间才完成了程序的编写,总体上说收获很大,程序虽然是已经学过的,不过是应用一下而已,但是还是遇到了一些问题。收获最大的地方是关于计算机网络的知识,这次课程设计,让我明白了ip地址和子网掩码的关系,同时也明白了子网的划分。

在这一周的时间里,我通过这次的课程设计加强了自己掌握和理解计算机网络理论原理的能力,培养了自己的实际动手能力与综合设计能力,并提高了自己的技术素质。课程设计一向是我比较喜欢的实践项目,因为从中会学到许多东西,既检验了我们前段时间理论知识的学习效果,又锻炼了我的动手实践能力。课程设计为我们提供了一个既动手又动脑,独立参加实践的好机会,要求我们将理论知识和实际情况有机地结合起来,锻炼我们的分析问题,解决实际问题的能力,提高我们适应实际,实践的能力;它也要求我们综合运用所学的计算机网络知

识来解决有一定难度的问题,从而提高了我们对知识的综合运用能力,加深对知识间的融会贯通和联系的理解。

实验报告有点难搞,好多东西都要一点一点的敲上去,很是辛苦。不过搞好了也是件值得开心的事。对我而言,知识上的收获很重要,精神上的丰收更加可喜。

挫折是一份财富,经历是一份拥有。这次实习必将成为我人生旅途上一个非常美好的回忆!希望以后还会有这样的机会锻炼自己。也希望老师们能多为学生们提供类似的机会,只有这样的锻炼机会多了,才能不断提高我们的动手实践能力。

7.参考文献

[1]张尧学;计算机网络与Internet教程;北京:清华大学出版社

[2]吴功宣;计算机网络课程设计;北京: 机械工业出版社

[3]谢希仁;计算机网络(第5版);北京:电子工业出版社

[4]蔻晓蕤、罗军勇、蔡延荣;网络协议分析[M];北京:机械工业出版社

[5]Microsoft Visual Studio 2010专业版

附录:源代码

#include "stdafx.h"

#include

#include

#include

#include

#include

#include

//类结构

class ipTest

{

char ip[15];

char subnetPlusMask[18];

char subnet[18];

char TempIp[15];

char TempSub[18];

int mask;

bool maskIsValid;

public:

ipTest(char *,char *);

ipTest(){};

bool NoIllegalChar(char *);

bool ipIsValid(char *);

bool subnetIsValid(char *);

void belong();

print();

};

//主函数

void main(int argc,char *argv[])

{

if(argc!=3)

{

cout<<"wrong!"<

return;

}

else{

if(strlen(argv[1])>18)

{

cout<<"the Ziwanghao is too long!";

return;

}

if(strlen(argv[2])>15)

{

cout<<"ip is to long!";

return;

}

ipTest test(argv[1],argv[2]);

test.print();

}

}

//构造函数

ipTest::ipTest(char *subnetPlusMask,char *ip)

{

maskIsValid=true;

char temp[2];

int smLen=strlen(subnetPlusMask);

for(int i=0;i

this->subnet[i] = subnetPlusMask[i];

this->TempSub[i] = subnetPlusMask[i];

}

subnet[i]='\0';

TempSub[i]='\0';

if(i>=smLen-3)

{

if(i==smLen-2)

{

temp[0]=subnetPlusMask[i+1];

if(!isdigit(temp[0]))

maskIsValid=false;

}

else if(i==smLen-3)

{

temp[0]=subnetPlusMask[i+1];

temp[1]=subnetPlusMask[1+2];

if(!(isdigit(temp[0])&&isdigit(temp[1])))

maskIsValid=false;

}

mask=atoi(temp);

if(mask<0 || mask>32)

maskIsValid =false;

}

else

maskIsValid=false;

strcpy(this->subnetPlusMask,subnetPlusMask);

strcpy(this->ip,ip);

strcpy(this->TempIp,ip);

}

//调用判别函数,并输出结果

ipTest::print()

{

bool subIsV=subnetIsValid(TempSub);

bool ipIsV=ipIsValid(TempIp);

if(!subIsV)

cout<<"sub is not valid!"<

else

cout<<"the valid sub is:"<

if(!maskIsValid)

cout<<"mask is not valid!"<

else

cout<<"valid mask is:"<

if(!ipIsV)

cout<<"ip is not valid!"<

else

cout<<"the valid ip is:"<

if(subIsV && ipIsV && maskIsValid)

belong();

}

//子函数,判断输入是否含有非数字字符bool ipTest::NoIllegalChar(char *ch)

{

unsigned int i,k=0;

for(i=0;i

{

if(isdigit(*(ch+i))==0)

{

return false;

}

}

return true;

}

//判别IP地址是否合法

bool ipTest::ipIsValid(char *ip)

{

char ch[]=".";

char *token,*dot[4];

int iplen=0;

token=strtok(ip,ch);

while(token!=NULL)

{

dot[iplen]=token;

iplen++;

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))

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

{

if(subnet[i]!='.')

temp[j++]=subnet[i];

else

{

subA[3-t]=atoi(temp);

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;

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

iMask=0xffffffff;

iMask<<=(32-mask);

if((iSubA|iMask)!=iMask)

{

cout<<"wrong,sub and mask are not fit!"<

}

if((iSubA^iMask)==0)

{

cout<<"wrong,sub all is 1!"<

return;

}

if((iSubA&iMask)==0)

{

cout<<"wrong,sub all is 0!"<

IP地址与子网划分练习

1) What is the network address for the address 96.2.3.16 (地址9 6 .2 .3 . 16的网络地址是什么)? A. 96.2.0.0 B. 96.2.3.0 C. 96.0.0.0 D. Can ’t tell 2) What class of address is 190.233.27.13 (190.233.27.13是何类地址)? A. Class A B. Class B C. Class C D. Class D 3) How many bits are in the default subnet mask for the address 219.25.23.56 (在地址219.25.23.56的默认子网掩码中有多少位)? A. 8 B. 16 C. 24 D. 32 4) How many hosts are supported by a Class C network address, without subnetting (C类网络地址在没有子网的情况下支持多少个主机)? A. 254 B. 65,000 C. 255 D. 16,000 5) What is the default mask for a Class B network (B类网络的默认掩码是什么)? A. 255.0.0.0 B. 255.255.255.0 C. 255.255.0.0. D. 255.225.0.0 6) Approximately how many unique networks are possible with a Class B address (使用B类地址大约可以有多少个不相同的网络)? A. 254 B. 16K C. 65K D. 2M 7) What is the decimal value of the binary number 11 0 0 1 0 11 (二进制数11 0 0 1 0 11的十进制值是多少)? A. 203 B. 171 C. 207 D. 193 8) What is the binary value of the decimal number 219 (十进制数2 1 9的二进制值是多少)? A. 111 0 1 0 11

IP地址的合法性和子网判断

计算机网络课程设计报告 题目:IP地址的合法性及子网判断 学生姓名: 学号: 专业班级: 同组姓名: 指导教师: 设计时间:

目录 一、课程设计目的和意义 (1) 1.1设计目的 (1) 1.2设计的意义 (1) 二、课程设计的内容和要求 (2) 三、课程设计的相关技术 (3) 3.1 课程设计的运行环境 (3) 3.2 IP地址相关概念和知识的回顾。 (3) 3.3 特殊的IP地址形式 (4) 3.4 子网的划分 (5) 四、课程设计过程 (6) 4.1程序大致设计过程: (6) 4.2实验流程图 (6) 五、部分程序运行结果 (9) 六、课程设计小结 (11) 七、参考文献 (15)

附录一:源代码 (15) 一、课程设计目的和意义 1.1设计目的 通过计算机网络课程设计,让我们学会处理几种常用计算机网络问题的基本处理方法,掌握计算机网络的基本原理,使我们在面对不断变化的技术时,具有跟踪,学习的基础与能力。 掌握IP地址的分类,准确理解子网、掩码的概念,确切地明了IP地址的合法格式。并判断该地址是否属于一个给定的子网。 具体而言,关于”IP地址的合法性及子网判断”课程设计题目的目的是:用C/C++语言编写程序,以判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网.从而能够考察我们对IP地址的概念,各类IP地址的区分以及子网划分的理解和掌握程度. 1.2设计的意义 1、有利于基础知识的理解 通过计算机网络的学习,学生掌握了一些信息时代生存与发展必需的信息技术基础知识和基本技能,具备了在日常生活与学习中应用信息技术解决问

题的基本态度与基本能力。让学生接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。 2、有利于逻辑思维的锻炼 程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。 3、有利于与其他学科的整合 在程序设计中,我们可以解决其它学科有关问题,也利用其它课程的有关知识来解决信息技术中比较抽象很难理解的知识。在信息技术课中整合其它学科的知识,发挥信息技术的优势。 4、有利于治学态度的培养。 程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。有助于严谨治学、一丝不苟的科学精神的培养,以及不怕失败、百折不挠品格的锻炼。 二、课程设计的内容和要求 在掌握IP地址的表示方法以及子网划分方法的基础上,并以计算机网络中

IP子网掩码划分及设置

IP子网掩码划分及设置 定长子网掩码: 一、子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。 因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:如何减少网络地址。于是IP网络地址的多重复用技术应运而生。通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址数。 子网编址(subnet addressing)技术,又叫子网寻径(subnet routing),英文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。 32位的IP地址分为两部分,即网络号和主机号,分别把他们叫做IP地址的“网间网部分” 和“本地部分”。子网编址技术将“本地部分”进一步划分为“物理网络”部分和“主机”两部分,其中“物理网络”部分用于标识同一IP网络地址下的不同物理网络,常称为“掩码位”、“子网掩码号”,或者“子网掩码ID”,不同子网就是依据这个掩码ID来识别的。 按IP协议的子网标准规定,每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网络部分和子网掩码号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。 例如二进制位模式:11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如B类地址子网掩码(11111111 11111111 11111111 00000000)为:255.255.255.0。 IP协议关于子网掩码的定义提供一定的灵活性,允许子网掩码中的“0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用

判断IP地址合法性

XXXX大学 计算机网络实习报告 设计题目判断IP地址合法性 学生专业班级 学生姓名(学号) 指导教师 完成时间 2010年5月25日 实习(设计)地点信息楼139机房 2010 年5月25日 一、实习题目 编写一个判断IP地址是否合法的计算机程序,如果合法给出其子网号。 二、原理概述 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址“00000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“,这显然比1和0容易记忆得多。 将IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2^网络号位数);主机号的位数则决定了网络中最大的主机数(计算方法2^主机号位数-2)。然而,由于整个互联网所包含的网络规模可能比较大,也可能比较小,设计者最后聪明的选择了一种灵活的方案:将IP地址空间划分成5种不同的类别,每一类具有不同的网络号位数和主机号位数。 32位IP地址的空间划分 IP地址分类 1.A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围 00000000 00000000 00000001 - 01111110 )。可用的A类网络有126个,每个网络能容纳1677214个主机。 2.B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围 00000001 00000000 00000001 - )。可

IP地址与子网划分 类地址

IP地址与子网划分讲解

A类网络地址 1.0.0.0到126.0.0.0 0.0.0.0和127.0.0.0保留 B类网络地址 128.1.0.0到191.254.0.0 128.0.0.0和191.255.0.0保留 C类网络地址 192.0.1.0到223.255.254.0 192.0.0.0和223.255.255.0保留 D类网路地址 224.0.0.0到239.255.255.255用于多点广播 E类网络地址 240.0.0.0到255.255.255.254保留 255.255.255.255用于广播 简介 IP地址分为五类: ·A类用于大型网络(能容纳网络126个,主机1677214台)·B类用于中型网络(能容纳网络16384个,主机65534台)·C类用于小型网络(能容纳网络2097152个,主机254台)·D类用于组播(多目的地址的发送)

·E类用于实验 另外,全零(0.0.0.0.)地址指任意网络。全1的IP地址(255.255.255.255)是当前子网的广播地址。 在因特网中,每台计算机的每个连接都有一个由授权单位分配的用于彼此区别的号码,即IP地址。IP地址采用层次结构,按照逻辑结构划分为两个部分:网络号和主机号。网络号用于识别一个逻辑网络,而主机号用于识别网络中的一台主机的一个连接。因此,IP地址的编址方式携带了明显的位置消息。 一个完整的IP地址由个字节,即32位数字组成,为了方便用户理解和记忆,采用点分十进制标记法,中间使用符号“.”隔开不同的字节。 例如:采用32位形式的IP地址如下 00001010 00000000 00000000 00000001 采用十进制数的形式如下 10.0.0.1 A类地址 (1) A类IP地址。由1个字节的网络地址和3个字节的主机地址,网络 地址的最高位必须是“0”。 如:0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)(2)A类IP地址范围:1.0.0.1---126.255.255.254 (3)A类IP地址中的私有地址和保留地址: ① 10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。 范围(10.0.0.1---10.255.255.254) ② 127.X.X.X是保留地址,用做循环测试用的。 B类地址 (1) B类IP地址。由2个字节的网络地址和2个字节的主机地址,网络地 址的最高位必须是“10”。 如:10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)(2) B类IP地址范围:128.0.0.1---191.255.255.254。 (3) B类IP地址的私有地址和保留地址 ① 172.16.0.0---172.31.255.254是私有地址是我可以使用的IP地

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 {

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-DOS 2.硬件 现阶段常见PC 三. 实验方法 Part 1实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在Internet上这个庞大的网间网中,每个网络也有自己的标识符。我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的特定的计算机号码。另一方面,只有在一个网络号下的计算机之间才能"直接"互通,不同网络号的计算机要通过网关(Gateway)才能互通。但这样的划分在某些情况下显得并十分不灵活。为此IP网络还允许划分成更小的网络,称为子网(Subnet),这样就产生了子网掩码 1. IP的寻址规则 (1).网络寻址规则 A、网络地址必须唯一。 B、网络标识不能以数字127开头。在A类地址中,数字127保留给内部回送函数。

ip地址分类及子网划分

国际规定: 把所有的IP地址划分为A,B,C,D,E A类地址: 范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的。因此 A类地址的范围其实是从1-126之间。 如:10.0.0.1,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。转换为2进制来说,一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,地址范围从0.0.0.1到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机(2的24次方的主机数目)。 以子网掩码来进行区别: :255.0.0.0. B类地址: 范围从128-191,如172.168.1.1,第一和第二段号码为网络号码,剩下的2段号码为本地计算机的号码。转换为2进制来说,一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到 191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机。 以子网掩码来进行区别:255.255.0.0 C类地址: 范围从192-223,如192.168.1.1,第一,第二,第三段号码为网络号码,剩下的最后一段号码为本地计算机的号码。转换为2进制来说,一个C类IP地址

由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到 223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。 以子网掩码来进行区别:255.255.255.0 D类地址: 范围从224-239,D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 E类地址: 范围从240-254,以“110”开始,为将来使用保留。全零(“ 0.0. 0.0”)地址对应于当前主机。全“1”的IP地址(“ 255.255. 255.255”)是当前子网的广播地址。 在日常网络环境中,基本是都在使用B,C两大类地址,而ADE这3类地址都不打可能被使用到。 从上述描述中,就可以看到有很多朋友会犯的一个错误,就是把192开头的IP地址设置成B类地址,虽然说在局域网中的网络通讯并不会受到影响,但事实上是不规范的一种划分行为。 子网掩码的简单叙述: 子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。

IP地址合法性判断及子网判断课设

课程设计任务书 学院信息科学与工程学院专业计算机科学与技术 学生姓名学号 设计题目IP地址合法性判断及子网判断 内容及要求: 判断IP和子网是否合法,接着将IP地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP地址是否属于某一个网络。 设计总要求: 实现判断输出命令行中的IP是否合法,掩码是否合法以及ip_addr是否是属于子网subnet。将IP地址一位位与子网掩码做与运算,看结果是否和子网相等来判断IP地址是否属于某一个网络。在这个设计中考虑到了以上的种种情况,根据用户输入的IP地址,掩码和子网,程序可以判断输入的IP地址,掩码和子网是否正确以及ip_addr是否是属于子网subnet。 在判断不合法IP时要考虑全面,比如以下情况均属于不合法 连续两个 . 123..2.1.2 含有非法字符 123.23$.2.1 每部分长度超过3 123.2345.2.1 含有超过三个的. 123.23.45.2.1 每部分大于255 256.123.3.3 进度安排: 第1周:布置课程设计任务;查阅资料;分组进行程序设计。 第2周:程序设计和调试;程序验收;答辩;上交课程设计报告。 指导教师(签字): 2011 年 7 月 4日学院院长(签字): 年月日

目录 一课程设计目的和意义 (3) 1.1设计目的 (3) 1.2设计的意义 (3) 二协议的内容说明,关键技术的说明 (4) 2.1 ip地址简介 (4) 2.2 子网掩码简介 (5) 2.3 ip地址的计算 (6) 2.4 子网划分简介 (7) 3.1主程序设计..................................................................................... (8) 3.2验证ip地址合法性 (8) 3.3验证ip是否属于某个子网 (9) 3.4代码 (10) 四程序的运行和调试结果 (19) 运行结果 (19) 五课程设计小结 (21) 六参考文献 (21)

IP地址和子网划分练习题(整理带答案)

IP地址和子网划分练习题(整理带答案)

1. 19 2.168.1.0/24 使用掩码255.255.255.240 划分子网,其可用子网数为(),每个子网内可用主机地址数为(A) A. 14 14 B. 16 14 C. 254 6 D. 14 62 2. 子网掩码为255.255.0.0 ,下列哪个IP 地址不在同一网段中( C) A. 172.25.15.201 B. 172.25.16.15 C. 172.16.25.16 D. 172.25.201.15 3. B类地址子网掩码为255.255.255.248 ,则每个子网内可用主机地址数为(C) A. 10 B. 8 C. 6 D. 4

4. 对于 C 类IP地址,子网掩码为25 5.255.255.248 ,则能提供子网数为(C ) A. 16 B. 32 C. 30 D. 128 5. 三个网段192.168.1.0/24 ,192.168.2.0/24 ,192.168.3.0/24 能够汇聚成下面哪个网段(D) A. 192.168.1.0/22 B. 192.168.2.0/22 C. 192.168.3.0/22 D. 192.168.0.0/22 6.IP 地址219.25.23.56 的缺省子网掩码有几位?C A.8 B.16 C.24 D.32 7.某公司申请到一个C 类IP 地址,但要连接6

个的子公司,最大的一个子 公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?D A.255.255.255.0 B.255.255.255.128 C.255.255.255.192 D.255.255.255.224 8.一台IP 地址为10.110.9.113/21 主机在启动时发出的广播IP 是? B A.10.110.9.255 B.10.110.15.255 C.10.110.255.255 D.10.255.255.255 9.规划一个C 类网,需要将网络分为9 个子网,每个子网最多15 台主机, 下列哪个是合适的子网掩码?(D) A.255.255.224.0 B.255.255.255.224 C.255.255.255.240 D.没有合适的子网掩码

IP地址合法性判断及子网检测_大学课程设计实验报告

理工学院 实验报告 实验名称IP地址合法性判断及子网检验课程名称计算机科学与技术 成绩 班级学号 日期2013年1月地点计算机学院

一.实验目的 本设计要求编辑写程序,判断一个ip地址是否合法,并判断该地址是否属于一个给定子网,从而考察读者是否对ip地址概念及其子网划分有非常清楚的认识。 1加深对IP地址及subnet的认识; 2.了解IP地址的划分; 3. 了解subnet的作用和产生因素,subnet的划分; 4. 实际操作编写规则,匹配IP和subnet,加深理解 二.设计要求 在掌握ip地址表示方法及子网划分方法的基础上,按如下要求完成程序。 1:命令格式:ip_test subnet/mask ip_addr 其中,ip_test为程序名;subnet为子网号,mask是一个数值,代表子网掩码连续1的个数,ip_addr是要测试的ip地址。 2:判断subnet和ip_addr的合法性。 在判断ip地址合法性时要自行编代码,不要使用任何inet函数。判断时要考虑全面。 3:判断掩码的合法性。 4:在ip地址合法的前提下,判断ip_addr是否属于子网subnet。 5:输出命令行中的ip是否合法,掩码是否合法,以及ip_addr是否属于子网subnet. 三.实验环境(软件、硬件及条件) 1.软件 操作系统:Windows xp(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等) 编程语言:C++ 测试环境:MS-DOS 2.硬件 现阶段常见PC 四.实验方法 Part 1 实验原理 我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的

IP地址的合法性及子网判断

第三章IP地址的合法性及子网判断 3.1 课程设计目的 本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对IP地址概念及其子网划分有非常清楚的认识。 3.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_test 202.113.16.0、24 202.113.16.10.(因为255.255.255.0是连续的24个1,所以用24表示。) 2)判断subnet和ip_addr的合法性。 在判断IP地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑全面,比如以下ip地址均不合法: 123..2.1 123.23¥.2.1 123.2345.2.1 123.23.45.2.1 3)判断掩码的合法性。 4)在IP地址合法的前提下,判断ip_addr是否属于子网subnet. 5)输出命令行中的ip是否合法,掩码是否合法(可适当给出不合法原因)以 及ip_addr是否属于子网subnet。 A类,B类与C类IP地址中主机号权1的地址chengweizhijieguangbo地址,用来使路由器将一个分组以广播方式发送给特定网络上的所有主机。直接广播地址只能作为分组中的目的地址。物理网络采用的使点-点传输方式,分组广播需要通过软件来实现。

IP地址与子网划分讲解

IP地址与子网划分讲解 作者:李石新 IP地址 简介 IP地址分为五类: ·A类用于大型网络(能容纳网络126个,主机1677214台) ·B类用于中型网络(能容纳网络16384个,主机65534台) ·C类用于小型网络(能容纳网络2097152个,主机254台) ·D类用于组播(多目的地址的发送) ·E类用于实验 另外,全零(0.0.0.0.)地址指任意网络。全1的IP地址(255.255.255.255)是当前子网的广播地址。 在因特网中,每台计算机的每个连接都有一个由授权单位分配的用于彼此区别的号码,即IP地址。IP地址采用层次结构,按照逻辑结构划分为两个部分:网络号和主机号。网络号用于识别一个逻辑网络,而主机号用于识别网络中的一台主机的一个连接。因此,IP地址的编址方式携带了明显的位置消息。 一个完整的IP地址由个字节,即32位数字组成,为了方便用户理解和记忆,采用点分十进制标记法,中间使用符号“.”隔开不同的字节。 例如:采用32位形式的IP地址如下 00001010 00000000 00000000 00000001 采用十进制数的形式如下 10.0.0.1 A类地址 (1)A类IP地址。由1个字节的网络地址和3个字节的主机地址,网络地址的最高位必须是“0”。 如:0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)(2)A类IP地址范围:1.0.0.1---126.255.255.254 (3)A类IP地址中的私有地址和保留地址: ①10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用, 而被用在局域网络中的地址)。 范围(10.0.0.1---10.255.255.254) ②127.X.X.X是保留地址,用做循环测试用的。 B类地址 (1)B类IP地址。由2个字节的网络地址和2个字节的主机地址,网络地址的最高位必须是“10”。 如:10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX(X代表0或1)(2)B类IP地址范围:128.0.0.1---191.255.255.254。

IP地址的合法性及子网判断课程设计任务书

课程设计任务书 学生姓名:孙晓晨专业班级:信息0804 指导教师:杜谦工作单位:信息工程学院 题目: IP地址的合法性及子网判断 初始条件: Windows XP C++,SOCKET 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1.编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网; 2.判断掩码的合法性; 3.在IP地址合法的前提下,判断ip_addr是否属于子网subnet; 4.撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。 时间安排: 6月12日查阅资料、方案论证 6月13日~6月15日总体规划, 方案设计、调试 6月16日撰写课程设计说明书 6月17日答辩 指导教师签名:年月日 系主任(或责任教师)签名:年月日

#include #include #include #include using namespace std; int a[4]={0,0,0,0}; //分段存放子网 char Ip_addr[15]; //ip地址 char sub_net[15]; //子网 int ip[4]={0,0,0,0}; int subnet[4]={0,0,0,0}; //分段存放ip地址 int address[4]={0,0,0,0}; int num; //子网掩码 //判断IP是否合法 void aa(char c[15]) { //判断IP地址不能超过15 if(strlen(c)>15) {cout<

IP地址和子网划分练习题

1. 19 2.168.1.0/24 使用掩码255.255.255.240 划分子网,其可用子网数为(),每个子网内可用主机地址数为() A. 14 14 B. 16 14 C. 254 6 D. 14 62 2. 子网掩码为255.255.0.0 ,下列哪个IP 地址不在同一网段中() A. 172.25.15.201 B. 172.25.16.15 C. 172.16.25.16 D. 172.25.201.15 3. B类地址子网掩码为255.255.255.248 ,则每个子网内可用主机地址数为() A. 10 B. 8 C. 6 D. 4 4. 对于C 类IP地址,子网掩码为25 5.255.255.248 ,则能提供子网数为() A. 16 B. 32 C. 30 D. 128 5. 三个网段192.168.1.0/24 ,192.168.2.0/24 ,192.168.3.0/24 能够汇聚成下面哪个网段() A. 192.168.1.0/22 B. 192.168.2.0/22 C. 192.168.3.0/22 D. 192.168.0.0/22 6.IP 地址219.25.23.56 的缺省子网掩码有几位?() A.8 B.16 C.24 D.32 7.某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子 公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?() A.255.255.255.0 B.255.255.255.128 C.255.255.255.192 D.255.255.255.224

8.一台IP 地址为10.110.9.113/21 主机在启动时发出的广播IP 是?() A.10.110.9.255 B.10.110.15.255 C.10.110.255.255 D.10.255.255.255 9.规划一个C 类网,需要将网络分为9 个子网,每个子网最多15 台主机,下列哪个是合适的子网掩码?() A.255.255.224.0 B.255.255.255.224 C.255.255.255.240 D.没有合适的子网掩码 10.与10.110.12.29 mask 255.255.255.224 属于同一网段的主机IP 地址是 ( ) A.10.110.12.0 B.10.110.12.30 C.10.110.12.31 D.10.110.12.32 11.IP 地址190.233.27.13/16 的网络部分地址是? ( ) A.190.0.0.0 B.190.233.0.0 C.190.233.27.0 D.190.233.27.1 12.没有任何子网划分的IP 地址125.3.54.56 的网段地址是? ( ) A.125.0.0.0 B.125.3.0.0 C.125.3.54.0 D.125.3.54.32

IP地址和子网划分习题教学教材

I P地址和子网划分习 题

IP地址和子网划分习题 1、十进制二进制互化 210 ②10111001 ③145 ④10000111 2、172.202.202.202/20,所在的子网和子网内所有节点分别如何表示? 3、189.189.189.189/18 ,所在的子网和子网内所有节点分别如何表示? 4、192.192.240.240,掩码255.255.255.248,计算网络地址和广播地址。 5、10.11.200.200,掩码 255.255.255.192,计算网络地址和广播地址。 6、195.166.0.42/27,计算网络地址和广播地址。 7、172.25.17.201/20,172.25.15.15/20,172.25.19.26/20, 172.25.23.15/20,四个IP哪个跟其他地址不再同一网段? 8、C类IP地址,掩码255.255.255.224,包含子网数、每个子网主机数各为多少?

9、公司分到一个C类IP,划分6个子公司,每个子公司26台电脑,子网掩码使用什么? 10、规划一个C类网络,9个子网,每个子网15台主机,能否规划出符合要求的网络? 11、192.168.1.0/24 用子网掩码255.255.255.240划分子网,可用子网数和每个子网可用主机数分别是多少? 12、192.168.9.0/24,进行子网规划,要求每个子网有10台主机,用什么掩码合理? 13、200.200.0.0/22,可以由以下哪些网络使用CIDR技术汇聚而成? A、200.200.1.0/24 B、200.200.2.0/24 C、200.200.3.0/24 D、 200.200.4.0/24 14、214.197.27.0网段,划分20个子网,每个子网里5台主机,如何划分?

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

计算机网络课设实验报告Computer Networking Experiment Report 学生所在学院: 学生所在班级: 学生姓名: 学生学号: 指导教师: 教务处 2014年6 月 设计题目:基于C++的IP地址合法性与子网归属判断

一. 设计目的 考察对于IP地址基本概念及子网划分技术的掌握情况。通过编写程序,判断任意输入的IP地址是否合法,并且判定该地址是否属于同步输入给定的子网范围。二.设计内容 1.设计并编写IP地址的合法性判断代码。 2.设计并编写子网掩码的合法性判断代码。 3.设计并编写子网号的合法性判断代码。 4.设计并编写IP地址归属网络的判断代码 三.课设环境(软件、硬件及条件) 1.软件 操作系统:Windows 7(Windows NT以上版本皆可) 编程环境:Microsoft Visual Studio 2008(兼容MS VS2005,亦可使用VC6.0等)编程语言:C++ 测试环境: MS-DOS 2.硬件 现阶段常见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 地址概念 IPV4: 32 IPV6: 128 每个B 类网络最多可以拥有216-2台主机 B 类网络数量:64*28个 每个C 类网络最多可以拥有28-2台主机 (254) C 类网络数量:32*216个 为什么减2? ——减掉一个主机号全为0的IP (网络号:主机号部分全为0) ——减掉一个主机号全为1的IP (广播号:主机号部分全为1) 网络号和广播号都不能作为主机IP 地址。 三 划分子网(求网络号、IP 分配范围、广播地址) 子网掩码:二进制形式的IP 的网络号部分全为1,主机号部分全为0 通过子网掩码,屏蔽掉了具体的网络号和主机号,但是可以通过子网掩码看出网 络号位数和主机号位数,从而得出该网络的规模。 1根据子网掩码求网络规模 每个子网最多拥有的主机数量=2n -2 (n 为主机号的位数) 例1: 已知150.58.1.29 /26,求该子网拥有的主机数量 解: /26表示前26位是网络号,则主机号的位数是32-26=6位

拥有的主机数量=26-2=62台主机 例2:已知某网络子网掩码为255.255.248.0,请问该网络能容纳多少台主机?255.255.248.0=11111111.11111111.11111000.00000000 主机号有11位,该网络规模=211-2=2048-2=2046台主机 2 如何根据IP地址和子网掩码判断2个IP地址是否在同一子网中? 方法:将2个IP地址分别与子网掩码做“与”运算(逻辑乘),得出这2个IP 地址的网络号,若网络号相同则在同一子网,否则不同子网。 例3:IP1:192.168.1.44 子网掩码:255.255.255.192 IP2: 192.168.1.131子网掩码:255.255.255.192 请判断这两个主机之间通信是否需要路由器 解:192.168.1.44^255.255.255.192 =11000000. 10101000.00000001.00101100 ^11111111. 11111111 .11111111 . 11000000 =11000000.10101000.00000001. 00000000 =192.168.1.0(是192.168.1.44的网络号) 192.168.1.131^255.255.255.192 =11000000. 10101000.00000001.10000011 ^11111111. 11111111 .11111111 . 11000000 =11000000. 10101000.00000001.10000000 =192.168.1.128(是192.168.1.131的网络号) 这2个IP分别处于不同网络号,所以必须要使用路由器才可以互相通信 例4:10.10.10.29和以下哪个IP在同一子网中?(子网掩码均为255.255.255.224) A 10.10.10.30(00011101)√ B 10.10.10.31(00011111)虽然网络号相同,但主机号全为1,这是一个广播地址,不作为主机IP C 10.10.10.32(00100000)×网络号不同 D 10.10.10.33(00100001)×网络号不同 29=00011100 3 划分子网后,求每个子网可分配的起始IP和终止IP,以及每个子网的网络号和广播号 子网划分: 将网络号199.28.3.0进行子网划分,借用主机号的最高位作为子网号 1)划分1-2个子网:借用主机号最高1位作为网络号,则总的网络号=25位,主机号只有7位,每个子网的规模是27-2台主机 这两个子网号为:199.28.3.00000000和199.28.3.10000000

相关主题
文本预览
相关文档 最新文档