论文部分内容阅读
摘 要: IP地址(Internet Protocol Address)也称为网际协议地址。每個连接在Internet上的主机都需要分配一个唯一的32bit地址用来互相区分和互相联系,以实现在全球范围内不同硬件结构、不同操作系统、不同网络系统的互联。同时,在网络的实际应用或有关网络的考试中,也体现了IP地址的重要性,求IP地址的相关问题既是理论计算,也是网络设计所要考虑的重要问题。本文将详细阐述基于数组的IP地址计算的Java实现步骤,使用该程序可以快速的计算出程序输入的IP地址所在网段的网络地址、子网掩码、主机地址范围内除网络地址和广播地址的IP地址数量以及所有的IP地址。
关键词: 数组;IP地址;前缀;子网掩码;网络号;主机地址范围
【中图分类号】 TP393.07 【文献标识码】 B 【文章编号】 2236-1879(2017)14-0309-02
1关于IP
IP地址、网络地址、子网掩码、主机地址数量以及可用主机地址范围的计算是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解 TCP/IP协议的设置。因此在进行程序编写之前,需要对相关基础知识进行初步的了解。
1.1 IP地址,
IP地址(Internet Protocol Address)是一个32位二进制的地址,分为4段,每段8位,为了方便,通常写成点分十进制的形式,每个字段之间用点号隔开。 IP地址由两部分组成,前一部分为网络号,后一部分为主机号,网络号和主机号由子网掩码划定。
1.2 子网掩码,
子网掩码(Subnet Mask)用于将IP地址划分成网络地址和主机地址两部分。子网掩码除了表示成32位由0、1组成的二进制地址外还可以使用点分十进制的形式表示,或者使用一个十进制网络前缀表示,这三种表示形式可以互相转换。当使用二进制形式表示时,通常是将对应于IP地址中网络地址的所有位都设置为“1”,对应于主机地址的所有位都设置为“0”。网络前缀只用于确定主机数,前缀长度指明IP地址的网络部分的比特位数。子网掩码不能单独存在,他必须结合IP地址一起使用。
1.3 网络地址、主机地址及范围,
网络地址是IP地址所在网段内的第一个主机地址。可以通过32位二进制形式的IP地址与32位二进制形式的子网掩码进行与运算得到32位二进制形式的网络地址,再将其转换成点分十进制表示。主机地址是分配给网络中终端设备的地址,即标识主机在该网络中唯一性的地址;主机地址范围为IP地址所在网段的第一位可用地址到最后一位可用地址,包括第一个网络地址及最后一个广播地址。
2 基于数组的IP地址计算步骤
有关IP地址的相关计算存在计算过程繁琐及计算结果易出错的问题,于数组的IP地址计算程序很好的解决了以上两个问题。此程序将实现了输入IP地址及网络前缀,程序计算出网络地址、子网掩、主机地址数以及该范围内的IP地址并输出,由于所求出的主机地址数量较大,因此此程序将以IP地址范围的形式输出。
程序所处理的数据数据类型相同、数据量较大且不需要对数据进行增删改查,所以此程序将使用数组来进行数据的存储及处理。根据不同的需求分别使用了一维数组、二维数组和三维数组来存储IP地址。本文以172.15.67.78及13为主要输入实例,解释说明基于数组的有关IP地址的计算步骤。
2.1 求子网掩码,
将网络前缀转换为二进制形式的子网掩码并存储到字符串数组ipsub1,再将其转换为十进制点分形式的子网掩码,并划分为四段存储到整型数组ipsub。根据实例将网络前缀13转换为二进制形式的子网掩码和十进制形式的子网掩码如下:
ipsub111111111 11111000 00000000 00000000
ipsub255 248 0 0
2.2定义一个网络地址,
定义一个整型数组ipbc为{255,255,255,255}作为广播地址,将数组ipbc与子网掩码数组ipsub按数组下标对应相减,记录相减后不为0的下标赋值给bitCG,同时将差加1并赋值给hostNumCG,则表示第bitCG段跳的主机数为hostNumCG。
将广播地址与子网掩码按下标相减如下所示:
由结果可得bitCG=1,即第二段为网络号,该段的主机数跳动间隔为:hostNumCG=7+1=8
通过循环判断,当下标为bitCG时,对应的IP地址段为网络号;下标大于bitCG时,对应的IP地址段为0;下标小于bitCG时,按下标对应于数组ipNo,以此生成网络号。由此可得IP地址为172.15.67.78,网络前缀为13的网络号为172.8.0.0
2.3计算主机地址数量,
可用主机地址数量分三种情况计算,当bitCG=3,即主机地址为第四段时,可用主机地址数量为该段的跳跃间隔主机数-2;当bitCG=2,即主机地址为第三、四段时,可用主机地址数量为该段的跳跃间隔主机数*256-2;当bitCG=3,即主机地址为第二、三、四段时,可用主机地址数量为该段的跳跃间隔主机数*256*256-2。其中减二表示的是主机地址数量除去网络地址和广播地址。
2.4 生成IP地址,
计算IP地址分三段考虑,分别为当bitCG为3、2、1时,可用主机IP地址的最大数量如第二步计算所得,根据需求分别采用一维数组、二维数组和三维数组来存储所有可用主机IP地址。
当bitCG=3时,则IP地址的一二三段为网络地址,第四段为主机地址,此时可以使用一维数组来记录所有的IP地址,如当IP地址为:172.16.8.30,网络前缀为:28,则使用一维数组的IP地址存储情况如下图所示:
当bitCG=2时,则IP地址的一二段为网络地址,三四段为主机,此时需要使用二维数组来记录所有的IP地址。如当IP地址为:172.16.8.30,网络前缀为:21,则使用二维数组的IP地址存储情况如下图所示:
当bitCG=3时,则IP地址的第一段为网络地址,二三四段为主机地址,此时需要使用三维数组来记录所有的IP地址。如当IP地址为:172.15.67.78,网络前缀为:13,则使用三维数组的IP地址存储情况如下图所示:
3 结论
IP地址是构成整个Internet的基础,它是如此的重要,基于数据的IP地址计算程序很好的解决了IP地址计算过程繁琐及计算结果易错的问题。有关IP地址计算的数据具有相同的数据类型、相同的数据长度、数据量较大且不需要进行数据的增、删、改、查,因此使用数组来存储和处理数据,充分的适应了以上数据特性。数组的存储形式具有很强的规律性,可以通过下标的方式很方便的获取某一个IP地址或者某一个IP地址范围。
参考文献
[1] 严蔚敏,数据结构[M],北京: 清华大学出版社,2007.
[2] Richanl Deal,CCNA学习指南[M],北京: 人民邮电出版社,2009.
[3] 李春葆,数据结构教程,清华大学出版社,2005年1月第1版.
[4] 谢希仁,计算机网络[M].5版,北京:电子工业出版社,2008.
[5] James F. Kurose,Keith W. Ross,计算机网络自顶向下方法,北京:机械工程出版社,2016年10月第1版第7次印刷
[6] 梁勇(Y. Daniel Liang),Java语言程序设计,北京:机械工程出版社,2015年9月第1版第2次印刷
关键词: 数组;IP地址;前缀;子网掩码;网络号;主机地址范围
【中图分类号】 TP393.07 【文献标识码】 B 【文章编号】 2236-1879(2017)14-0309-02
1关于IP
IP地址、网络地址、子网掩码、主机地址数量以及可用主机地址范围的计算是每个使用互联网的人必须要掌握的基础知识,只有掌握它,才能够真正理解 TCP/IP协议的设置。因此在进行程序编写之前,需要对相关基础知识进行初步的了解。
1.1 IP地址,
IP地址(Internet Protocol Address)是一个32位二进制的地址,分为4段,每段8位,为了方便,通常写成点分十进制的形式,每个字段之间用点号隔开。 IP地址由两部分组成,前一部分为网络号,后一部分为主机号,网络号和主机号由子网掩码划定。
1.2 子网掩码,
子网掩码(Subnet Mask)用于将IP地址划分成网络地址和主机地址两部分。子网掩码除了表示成32位由0、1组成的二进制地址外还可以使用点分十进制的形式表示,或者使用一个十进制网络前缀表示,这三种表示形式可以互相转换。当使用二进制形式表示时,通常是将对应于IP地址中网络地址的所有位都设置为“1”,对应于主机地址的所有位都设置为“0”。网络前缀只用于确定主机数,前缀长度指明IP地址的网络部分的比特位数。子网掩码不能单独存在,他必须结合IP地址一起使用。
1.3 网络地址、主机地址及范围,
网络地址是IP地址所在网段内的第一个主机地址。可以通过32位二进制形式的IP地址与32位二进制形式的子网掩码进行与运算得到32位二进制形式的网络地址,再将其转换成点分十进制表示。主机地址是分配给网络中终端设备的地址,即标识主机在该网络中唯一性的地址;主机地址范围为IP地址所在网段的第一位可用地址到最后一位可用地址,包括第一个网络地址及最后一个广播地址。
2 基于数组的IP地址计算步骤
有关IP地址的相关计算存在计算过程繁琐及计算结果易出错的问题,于数组的IP地址计算程序很好的解决了以上两个问题。此程序将实现了输入IP地址及网络前缀,程序计算出网络地址、子网掩、主机地址数以及该范围内的IP地址并输出,由于所求出的主机地址数量较大,因此此程序将以IP地址范围的形式输出。
程序所处理的数据数据类型相同、数据量较大且不需要对数据进行增删改查,所以此程序将使用数组来进行数据的存储及处理。根据不同的需求分别使用了一维数组、二维数组和三维数组来存储IP地址。本文以172.15.67.78及13为主要输入实例,解释说明基于数组的有关IP地址的计算步骤。
2.1 求子网掩码,
将网络前缀转换为二进制形式的子网掩码并存储到字符串数组ipsub1,再将其转换为十进制点分形式的子网掩码,并划分为四段存储到整型数组ipsub。根据实例将网络前缀13转换为二进制形式的子网掩码和十进制形式的子网掩码如下:
ipsub111111111 11111000 00000000 00000000
ipsub255 248 0 0
2.2定义一个网络地址,
定义一个整型数组ipbc为{255,255,255,255}作为广播地址,将数组ipbc与子网掩码数组ipsub按数组下标对应相减,记录相减后不为0的下标赋值给bitCG,同时将差加1并赋值给hostNumCG,则表示第bitCG段跳的主机数为hostNumCG。
将广播地址与子网掩码按下标相减如下所示:
由结果可得bitCG=1,即第二段为网络号,该段的主机数跳动间隔为:hostNumCG=7+1=8
通过循环判断,当下标为bitCG时,对应的IP地址段为网络号;下标大于bitCG时,对应的IP地址段为0;下标小于bitCG时,按下标对应于数组ipNo,以此生成网络号。由此可得IP地址为172.15.67.78,网络前缀为13的网络号为172.8.0.0
2.3计算主机地址数量,
可用主机地址数量分三种情况计算,当bitCG=3,即主机地址为第四段时,可用主机地址数量为该段的跳跃间隔主机数-2;当bitCG=2,即主机地址为第三、四段时,可用主机地址数量为该段的跳跃间隔主机数*256-2;当bitCG=3,即主机地址为第二、三、四段时,可用主机地址数量为该段的跳跃间隔主机数*256*256-2。其中减二表示的是主机地址数量除去网络地址和广播地址。
2.4 生成IP地址,
计算IP地址分三段考虑,分别为当bitCG为3、2、1时,可用主机IP地址的最大数量如第二步计算所得,根据需求分别采用一维数组、二维数组和三维数组来存储所有可用主机IP地址。
当bitCG=3时,则IP地址的一二三段为网络地址,第四段为主机地址,此时可以使用一维数组来记录所有的IP地址,如当IP地址为:172.16.8.30,网络前缀为:28,则使用一维数组的IP地址存储情况如下图所示:
当bitCG=2时,则IP地址的一二段为网络地址,三四段为主机,此时需要使用二维数组来记录所有的IP地址。如当IP地址为:172.16.8.30,网络前缀为:21,则使用二维数组的IP地址存储情况如下图所示:
当bitCG=3时,则IP地址的第一段为网络地址,二三四段为主机地址,此时需要使用三维数组来记录所有的IP地址。如当IP地址为:172.15.67.78,网络前缀为:13,则使用三维数组的IP地址存储情况如下图所示:
3 结论
IP地址是构成整个Internet的基础,它是如此的重要,基于数据的IP地址计算程序很好的解决了IP地址计算过程繁琐及计算结果易错的问题。有关IP地址计算的数据具有相同的数据类型、相同的数据长度、数据量较大且不需要进行数据的增、删、改、查,因此使用数组来存储和处理数据,充分的适应了以上数据特性。数组的存储形式具有很强的规律性,可以通过下标的方式很方便的获取某一个IP地址或者某一个IP地址范围。
参考文献
[1] 严蔚敏,数据结构[M],北京: 清华大学出版社,2007.
[2] Richanl Deal,CCNA学习指南[M],北京: 人民邮电出版社,2009.
[3] 李春葆,数据结构教程,清华大学出版社,2005年1月第1版.
[4] 谢希仁,计算机网络[M].5版,北京:电子工业出版社,2008.
[5] James F. Kurose,Keith W. Ross,计算机网络自顶向下方法,北京:机械工程出版社,2016年10月第1版第7次印刷
[6] 梁勇(Y. Daniel Liang),Java语言程序设计,北京:机械工程出版社,2015年9月第1版第2次印刷