计算IP地址

来源:互联网 发布:传奇霸业轮回系统数据 编辑:程序博客网 时间:2024/03/29 15:28

一、  IP地址概念

IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主机ID用来标识计算机在网段中的位置。IP地址通常用43位十进制数表示,中间用“.”分隔。比如,192.168.0.1

补充(IPv6):前面所讲的32IP地址称之为IPv4,随着信息技术的发展,IPv4可用IP地址数目已经不能满足人们日常的需要,据权威机构预测到2010年要充分应用信息技术,每个人至少需要10IP地址,比如:计算机、笔记本、手机和智能化冰箱等。为了解决该问题开发了IPv6规范,IPv6128位表示IP地址,其表示为8416进制数,中间为“:”分隔。比如,AB32:33ea:89dc:cc47:abcd:ef12:abcd:ef12。 

二、  IP地址的分类

为了方便IP寻址将IP地址划分为ABCDE五类,每类IP地址对各个IP地址中用来表示网络ID和主机ID的位数作了明确的规定。当主机ID的位数确定之后,一个网络中是多能够包含的计算机数目也就确定,用户可根据企业需要灵活选择一类IP地址构建网络结构。

A

A类地址用IP地址前8位表示网络ID,用IP地址后24位表示主机IDA类地址用来表示网络ID的第一位必须以0开始,其他7位可以是任意值,当其他7位全为0是网络ID最小,即为0;当其他7位全为1时网络ID最大,即为127。网络ID不能为0,它有特殊的用途,用来表示所有网段,所以网络ID最小为1;网络ID也不能为127127用来作为网络回路测试用。所以A类网络网络ID的有效范围是1-126126个网络,每个网络可以包含224-2台主机。

B

B类地址用IP地址前16位表示网络ID,用IP地址后16位表示主机IDB类地址用来表示网络ID的前两位必须以10开始,其他14位可以是任意值,当其他14位全为0是网络ID最小,即为128;当其他14位全为1时网络ID最大,第一个字节数最大,即为191BIP地址第一个字节的有效范围为128191,共16384B类网络;每个B类网络可以包含216-2台主机(即65534台主机)。

C

C类地址用IP地址前24位表示网络ID,用IP地址后8位表示主机IDC类地址用来表示网络ID的前三位必须以110开始,其他22位可以是任意值,当其他22位全为0是网络ID最小,IP地址的第一个字节为192;当其他22位全为1时网络ID最大,第一个字节数最大,即为223CIP地址第一个字节的有效范围为192223,共2097152C类网络;每个C类网络可以包含28-2台主机(即254台主机)。

D

D类地址用来多播使用,没有网络ID和主机ID之分,DIP地址的第一个字节前四位必须以1110开始,其他28位可以是任何值,则DIP地址的有效范围为224.0.0.0239.255.255.255

E

E类地址保留实验用,没有网络ID和主机ID之分,EIP地址的第一字节前四位必须以1111开始,其它28位可以是任何值,则EIP地址的有效范围为240.0.0.0255.255.255.254。其中255.255.255.2555表示广播地址。

在实际应用中,只有ABC三类IP地址能够直接分配给主机,D类和E类不能直接分配给计算机。

三、 网络ID、主机ID和子网掩码

网络ID用来表示计算机属于哪一个网络,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段);网络ID不相同的计算机之间通信必须通过路由器连接,我们把网络ID不相同的计算机称之为远程计算机。

当为一台计算机分配IP地址后,该计算机的IP地址哪部份表示网络ID,哪部份表示主机ID,并不由IP地址所属的类来确定,而是由子网掩码确定。子网确定一个IP地址属于哪一个子网。

子网掩码的格式是以连续的255后面跟连续的0表示,其中连续的255这部份表示网络ID;连续0部份表示主机ID。比如,子网掩码255.255.0.0255.255.255.0

根据子网掩码的格式可以发现,子网掩码有0.0.0.0255.0.0.0255.255.0.0255.255.255.0255.255.255.255共五种。采用这种格式的子网掩码每个网络中主机的数目相差至少为256倍,不利于灵活根据企业需要分配IP地址。比如,一个企业有2000台计算机,用户要么为其分配子网掩为255.255.0.0,那么该网络可包含65534台计算机,将造成63534IP地址的浪费;要么用户为其分配8255.255.255.0网络,那么必须用路由器连接这个8个网络,造成网络管理和维护的负担。

网络IDIP地址与子网掩码进行与运算获得,即将IP地址中表示主机ID的部份全部变为0,表示网络ID的部份保持不变,则网络ID的格式与IP地址相同都是32位的二进制数;主机ID就是表示主机ID的部份。

例题1IP地址:192.168.23.35 子网掩码:255.255.0.0

        网络ID:192.168.0.0  主机ID:23.35

例题2IP地址:192.168.23.35  子网掩码:255.255.255.0
                网络ID:192.168.23.0  主机ID:35

四、   子网和CIDR

将常规的子网掩码转换为二进制,将发现子网掩格式为连续的二进制1跟连续0,其中子网掩码中为1的部份表示网络ID,子网掩中为0的表示主机ID。比如255.255.0.0转换为二进制为11111111 11111111 00000000 00000000

在前面所举的例子中为什么不用连续的1部份表示网络ID,连续的0部份表示主机ID呢?答案是肯定的,采用这种方案的IP寻址技术称之为无类域间路由(CIDRCIDR技术用子网掩码中连续的1部份表示网络ID,连续的0部份表示主机ID。比如,网络中包含2000台计算机,只需要用11位表示主机ID,用21位表网络ID,则子网掩码表示为11111111.11111111.11100000.00000000,转换为十进制则为255.255.224.0。此时,该网络将包含2046台计算机,既不会造成IP地址的浪费,也不会利用路由器连接网络,增加额外的管理维护量。

CIDR表示方法:IP地址/网络ID的位数,比如192.168.23.35/21,其中用21位表示网络ID

例题1192.168.23.35/21

子网掩码:11111111 11111111 11111000 00000000则为255.255.248.0

网络ID192.168.00010111.0(其中第三个字节红色部分表示网络ID,其他表示主机ID,网络ID是表示网络ID部份保持不变主机ID全部变为0)则网络ID192.168.16.0

起始IP地址:192.168.16.1(主机ID不能全为0,全为0表示网络ID最后一位为1

结束IP地址:192.168.00010111.11111110主机ID不能全为1,全为1表示本地广播)则结束IP地址为:192.168.23.254

例题2:将163.135.0.0划分为16个子网,计算前两个子网的网络ID、子网掩码、起止IP地址。

1步:用CIDR表示163.135.0.0/20,则子网掩码为255.255.24011110000.0

2步:第一网络ID(子网掩码与IP地址与运算):163.135.0.0

    第一个IP地址:163.135.0.1 结束IP地址:163.135.15.254

3步:第二网络ID163.135.16.0

        第一个IP地址:163.135.16.1 结束IP地址:163.135.31.254

五、   子网掩码和网络ID的快速计算

CIDR的子网掩码都是连续的1跟连接的0表示,则子网掩码有以下几种表示方法:

0000 00000

1000 0000128

1100 000012864192

1110 00001286432224

1111 000025515240

1111 10002557248

1111 11002553252

1111 11102551254

1111 1111255

大家都知道11111111的十进制数为255,那么我们怎么来快速计算子网掩码呢?二进制的1=111=311171111=15;那么1111 1110=255-11111 1100=255-31111 1000=255-81111 0000=255-15这样是不是就很快呢?只要我们一旦确定子网掩码中有多少位表示网络ID,那么我们马上就可以写出子网掩码了。那么,对于1000 00001100 00001110 0000 我们又该怎么计算呢?27=81000 0000=1281100 0000=128+641110 0000=128+64+32,所以我们不需要去记住每一个为多少,只需要做做简单的加减法就搞定子网掩码的计算。

网络ID的结果大家都知道网络ID部份不变主机ID部分全部变为0,那么在计算网络ID时,首先看子网掩码中有多少位用来表示网络,相应在将IP地址转换为二进制时就只转换前面几位,比如192.168.176.15/19网络ID一共19,则网络ID前两个字节为192.168.X.0发生变化的为第三个字节。那么怎样快速计算出这个变化的X的值呢?我们知道第三字节只有三位表示网络ID,转换时176>128,第1位为1,1761284864,第2位为0,48323位为1,剩下的计算就没有意义了,全都要转换为0,则网络ID10100000则网络ID192.168.160.0,这样计算反而出错的可能性很小。

例题:172.168.34.56/20,一共划分为了多少个子网各子网可以包含多少台主机

172.168.34.56是一个B类地址,B类地址用16位表示网络ID,题目中20位表示网络ID子网位数为4,那么子网就有24个(即00000001111116种变化)。

由于IP地址是32位,用20位表示网络ID,则主机ID的位数为12,则每个子网可以包含2122IP地址,即可以包含4096IP地址

注意:为什么计算IP地址时要减2,而计算子网数目时不减2呢?IP地址减2的原因是主机ID不能全为0也不能全为1;子网就不存在这个问题。

 

0 0