判断IP地址合法性

判断IP地址合法性
判断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 - )。可

用的B类网络有16384个,每个网络能容纳65534主机。

3.C类IP地址

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围 00000000 00000001 00000001 - )。C类网络可达2097152个,每个网络能容纳254个主机。

4.D类地址用于多点广播(Multicast)。

D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。

地址范围

5.E类IP地址

以“1111”开始,为将来使用保留。

E类地址保留,仅作实验和开发用。

全零(“0.0.0.0”)地址指任意网络。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。

三、设计方案

IP地址格式为“,判断IP地址合法性这个问题可以归结为对三种情况的处理:分隔符“.”的合法性、0的合法性、四个数值的合法性。即每个IP中分隔符“.”必须只有三个,每个非零数字前不能有0,每个分隔符“.”之间的数值xxx大小在0—255内,只有满足这三个条件,IP地址才算合法。

采用C语言编写程序,编写要求:

1、如果字符串范围在”,为合法,返回1;否则非法,返回0。

2、每个不能非零数字前不能有0,如

3、尽量不要使用c的库函数

4、尽量不要重新复制一遍字符串

5、尽量不要修改原字符串

6、使用合适个数个局部变量

7、尽量做到占用的内存少,速度快,效率高

四、程序编写

程序代码如下

#include

int IpCheck1(char*IP)

{

int numI=0;

int numD=0;

char numT[3];

while(*IP)

相关主题
相关文档
最新文档