计算机网络课设--------判断一个IP地址是否合法,并判断该地址是否属于一个给定子网.doc
文本预览下载声明
目 录
1 课程设计目的 1
2 课程设计要求 1
3 相关知识 1
4 课程设计分析 3
4.1程序大致设计过程 3
4.2实验流程图 3
5 程序代码 5
6 运行结果与分析 11
7 参考文献 12
课程设计目的
本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。从而考察读者是否对IP地址概念及其子网划分有非常清楚的认识。
2 课程设计的要求
根据介绍的IP地址与子网划分的知识,编写程序判断IP地址的合法性及所属子网。(1)以命令行形式运行
IPAddress subnet_address/mask ip_address
其中,IPAddress为程序名,subnet_address为子网地址,mask为掩码,ip_address为IP地址。
(2)输入内容:IP地址、子网地址与掩码是否合法,以及IP地址是否属于子网。
3 相关知识
IP地址相关概念
所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。
按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长
32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。
大型的互连网络中应该有一个全局的地址系统,它能够给连接到互联网的每一台主机或者路由器分配一个唯一的全局地址。TCP/IP协议的网络层使用的地址标识符叫做IP地址,IPv4中IP地址是一个32位的二进制地址。网络中的每一台主机或者路由器至少有一个IP地址,在Internet中不允许有两个设备具有相同的IP地址。如果一台主机或者路由器连接到两个或多个物理网络,那么它可以拥有两个或多个IP地址。
IP地址采用分层结构,由网络号与主机号两部分组成(如下图1所示):
网络号 主机号 图1
IP地址长度为32位,用点分十进制表示,格式为ⅹ.ⅹ.ⅹ.ⅹ,每个ⅹ为8位,每个ⅹ的值为0—255(例如202.113.29.119)C类IP地址适合用于一些小公司与普通的研究机构。
2.子网的划分
划分子网实际上就是在IP地址系统中增加一个层次。三级IP地址的表示方法为netID-subnet ID-host ID。第一级网络号定义了网点的位置;第二级子网号定义了物理子网;第三级主机号定义了主机和路由器到物理网络的连接。三级层次的IP地址,一个IP分组的路由器的过程分为三步:第一步将分组转发给网点,第二步转发给物理子网,第三步转发给确切的主机。
当三级层次的IP地址提出后,一个很显示的问题是:如何从一个IP地址提取出子网号。因此,提出了子网掩码(subnet mask)的概念。子网掩码有时也叫做子网掩码。
子网掩码表示方法:网络号与子网号置1,主机号置0。
4.课程设计分析
4.1程序大致设计过程:
1.分别判断子网号、掩码和IP地址的基本格式是否合法。
2.如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0、全1.
4.2实验流程图如下:
1.主流程图
图3 主流程图
2.验证ip地址合法性流程图
图4 验证ip地址合法性流程图
3验证子网掩码合法性流程图
图5 验证子网掩码合法性流程图
5 程序代码
#includeiostream.h
#includestring.h
#includestdlib.h
#includectype.h
//定义 ip地址类
class ipTest
{
char ip[15];
char subnetPlusMask[18];
char subnet[10];
char TempIp[15];
char TempSub[10];
int mask;
bool maskIsValid;
public:
ipTest(char*,char*);
~ipTest(){}
显示全部