资源描述
计算机网络论文
课程设计题目:编写实现点分十进制IP地址程序
学生姓名:
专 业: 计算机科学和技术
班 级:
学 号:
指导老师:
12 月 27 日
目 录
一、 摘要-------------------------------------------------------------------------2
二、 程序运行环境-------------------------------------------------------------3
三、 程序作用及设计目标----------------------------------------------------3
四、 程序分析和设计----------------------------------------------------------3
五、 程序调试和运行----------------------------------------------------------3
六、 经验和总结----------------------------------------------------------------5
七、 参考文件-------------------------------------------------------------------5
八、 程序清单-------------------------------------------------------------------5
一、摘要
Internet 上每台主机(Host)全部有一个唯一IP地址。IP协议就是使用这个地址在主机之间传输信息,这是Internet 能够运行基础。IP地址长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段和段之间用句点隔开。比如159.226.1.1。IP地址有两部分组成,一部分为网络地址,另一部分为主机地址。IP地址分为A、B、C、D、E5类。常见是B和C两类。IP地址就像是我们家庭住址一样,假如你要写信给一个人,你就要知道她(她)地址,这么邮递员才能把信送到。计算机发送信息是就好比是邮递员,它必需知道唯一“家庭地址”才能不至于把信送错人家。只不过我们地址使用文字来表示,计算机地址用十进制数字表示。众所周知,在电话通讯中,电话用户是靠电话号码来识别。一样,在网络中为了区分不一样计算机,也需要给计算机指定一个号码,这个号码就是“IP地址”。 有些人会认为,一台计算机只能有一个IP地址,这种见解是错误。我们能够指定一台计算机含有多个IP地址,所以在访问互联网时,不要认为一个IP地址就是一台计算机;另外,经过特定技术,也能够使多台服务器共用一个IP地址,这些服务器在用户看起来就像一台主机似。将IP地址分成了网络号和主机号两部分,设计者就必需决定每部分包含多少位。网络号位数直接决定了能够分配网络数(计算方法2^网络号位数-2);主机号位数则决定了网络中最大主机数(计算方法2^主机号位数-2)。然而,因为整个互联网所包含网络规模可能比较大,也可能比较小,设计者最终聪慧选择了一个灵活方案:将IP地址空间划分成不一样类别,每一类含有不一样网络号位数和主机号位数。
IP地址被用来给Internet上电脑一个编号。大家日常见到情况是每台联网PC上全部需要有IP地址,才能正常通信。我们能够把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中路由器,就相当于电信局“程控式交换机”。 IP地址是一个32位二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常见“点分十进制”表示成(a.b.c.d)形式,其中,a,b,c,d全部是0~255之间十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。 IP地址(英语:Internet Protocol Address)是一个在Internet上给主机编址方法,也称为网际协议地址。常见IP地址,分为IPv4和IPv6两大类。 现在使用IPV4,就是有4段数字,每一段最大不超出255。近十年来因为互联网蓬勃发展,IP位址需求量愈来愈大,使得IP位址发放愈趋严格,各项资料显示全球IPv4位址可能在至间全部发完。 IPv6是下一版本互联网协议,也能够说是下一代互联网协议,它提出最初是因为伴随互联网快速发展,IPv4定义有限地址空间将被耗尽,地址空间不足必将妨碍互联网深入发展。为了扩大地址空间,拟经过IPv6重新定义地址空间。IPv6采取128位地址长度,几乎能够不受限制地提供地址。按保守方法估算IPv6实际可分配地址,整个地球每平方米面积上仍可分配1000多个地址。在IPv6设计过程中除了一劳永逸地处理了地址短缺问题以外,还考虑了在IPv4中处理不好其它问题,关键有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。
点分十进制,全称点分十进制表示法(英:Dotted decimal notation),是IPv4IP地址标识方法,每一组数字全部是十进制,组和组之间用".(点)"分隔,所以称为“点分十进制”,比如IP地址123.123.123.123;此种表示法有区分于IPv6冒分十六进制,即冒分十六进制(也叫冒号十六进制)是用冒号分隔每一组数,每组数用16进制表示,比如IP地址3FFE:FFFF:7654:FEDA:1245:BA98:3210:4562。
二、程序运行环境
1、开发环境
本程序设计采取是VC语言开发
2、Windows 操作系统
Microsoft Visual C++ 6.0
三、程序作用及设计目标
1、程序作用
经过程序使32位二进制数转换为十进制,并以ip地址形式显示出来。以实现简化ip地址长度作用。方便大家记忆和使用。
2、 设计目标
根据TCP/IP协议要求,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。比如一个采取二进制形式IP地址是“00000001”,这么长地址,大家处理起来也太费劲了。为了方便大家使用,IP地址常常被写成十进制形式,中间使用符号“.”分开不一样字节。于是,上面IP地址能够表示为“10.0.0.1”。IP地址这种表示法叫做“点分十进制表示法”,这显然比1和0轻易记忆得多。而本程序目标就是将32位二进制表示ip地址转化为4位十进制ip地址,并显示出来。
四、 程序分析和设计
本程序大致由zhuanhuan()函数和main()函数,其中以zhuanhuan()函数实现二进制转换十进制之间转换.main()函数实现32位2进制数输入和转换调用过程.用a[]数组实现32位2进制数存放,用ip[]数组存放转换后4个十进制数.scanf()语句实现键盘输入识别,并用4个for()语句分别进行8位2进制数依次输入,并用if()语句判定假如输入数值为1时进行二进制到十进制转换.
五、 程序调试和运行
程序运行截图:
六、经验和总结
经过此次课程设计首先让我对网络这一门课程知识溶入到实践设计中,对知识掌握从理论到实践有了深入跨越,尤其是网络IP位数设置,应用和表示方法等内容,有了更深体会.
其次温习了c语言相关课程,将c语言课程和计算机网络课程相关联,并对进制转换有了更深入了解.及对计算机网络各部件之间亲密关系有了更深入了解.
一次整体网络设计,使我学到更多网络知识,对网络各个部分和各部分之间连接有了深入认识。总而言之,这次网络课程设计使我收益非浅。同时,谢谢杨老师辛勤培养,给我了更为丰富知识和宽广视野。
七、 参考文件
[1] 谭浩强,《c程序设计(第二版)》,北京:清华大学出版社,
[2] 谢希仁,《计算机网络(第5版)》,电子工业出版社,
[3] 谢鸣等,《计算机网络试验教程,从原理到实践》,机械工业出版社,
[4] .com
八、 程序清单
#include <stdio.h>
#include <iostream.h>
int zhuanhuan(int s, int n) //定义zhuanhuan函数将二进制数转换为十进制
{
if(n == 0)
{
return 1;
}
return s * zhuanhuan(s, n-1); //递归调用zhuanhuan()函数
}
int main(void) //主函数实现32位二进制输入及调用zhuanhuan()函数进行进制转换
{
int i;
int ip[4] = {0,0,0,0}; //定义ip[]数组,存放转换后4个十进制数
char a[33]; //定义a[]数组,存放32个二进制数
printf("请输入二进制数(0或1): \n");
scanf("%s", a); //输入二进制数
for(i=0; i<8; i++) //第一个八位二进制转换
{
if(a[i] == '1')
{
ip[0] += zhuanhuan(2, 7-i); //转换后十进制存入ip[0]数组
}
}
for(i=8; i<16; i++) //第二个八位二进制转换
{
if(a[i] == '1')
{
ip[1] += zhuanhuan(2, 15-i);
}
}
for(i=16; i<24; i++) //第三个八位二进制转换
{
if(a[i] == '1')
{
ip[2] += zhuanhuan(2, 23-i);
}
}
for(i=24; i<32; i++) //第四个八位二进制转换
{
if(a[i] == '1')
{
ip[3] += zhuanhuan(2, 31-i);
}
if(a[i] == '\0')
{
break;
}
}
printf("转换为十进制IP为:\n");
printf("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);//输出转换后十进制IP地址
return 0;
}
展开阅读全文