浅谈IPv4地址的计算

很多刚学习网络的小伙伴总是对IP地址一知半解,不知道怎么计算它,或者老算错,算得很慢。其实这东西多做几题就熟练了。没什么捷径可以走。

要想知道怎么计算我们首先要来理解一下什么是IP地址呢?通俗地说就是用来标识一台设备在网络中的具体位置。就像我们写邮件的时候一定要署上收件人和发件人的具体地址一样。我们在网络中想要相互通信也需要一个代号来标识设备在网络中的具体位置。那我们要怎么来标识这个地址呢?以IPv4为例。

在IPv4中,我们把IP地址分为两个部分,网络位和主机位。网络位用于表示一个网段,主机位用来表示具体的设备地址。你可以这样来表示它们的关系。把一个大的网段当作一个具体的国家,比如说中国。中国下面可以有很多的省和市。这些省和市就是子网。再具体到我们每一个人就是具体的主机号了。做个总结就是网络位用来表示一个范围,主机位用来表示具体的主机。通过网络位和主机位的结合我们就可以找到目的主机在网络中的位置了。

当我们理解了网络位和主机位的概念后,我们就可以来看一下具体怎么实现这个过程。首先我们要记住以下的一组对应关系。

2^{7}=128       2^{6}=64      2^{5}=32       2^{4}=16        2^{3}=8      2^{2}=4      2^{1}=2       2^{0}=1

     1                    1                 1                  1                   1               1               1                 1

如上对应关系中的下行表示的是八位二进制,而上行表示的是该位置数值的大小。一个IPv4地址就是由4个8字节的2进制组成。就像下面这样。                                                                                                                                                                                                                                       00000000.00000000.00000000.00000000                                                                                 

是不是觉得有点繁琐,如果我们每次配IP地址都这样,麻烦是一回事,更多的是有可能出错。所以一般情况下我们把二进制转换为十进制。这种表示方法称为点分十进制。以以下的地址为例 。                                                                                                                                                           11000000.00000000.00000000.00000000                                                                                   转化为点分十进制就是2^7+2^6.0.0.0也就是192.0.0.0。

还记得我们刚刚说的网络位和主机位的事情吗,在IPv4中我们要怎么表示网络位和主机位呢?我们要借助一个工具,它就是子网掩码。子网掩码和IPv4地址一样,也是由四个八位二进制组成。在二进制中为1的部分表示表示网络位,为0的部分表示为主机位。但是在子网掩码中我们除了点分十进制来表示它还有一个方法来表示它。可以数这32个字节中1的数量来表示有多少个网络位。比如说如下的IP地址(具体的主机地址)。                                                                                                                              

                                                     192.168.192.74/17(或255.255.128.0)                                                                                      

它的掩码是17,也就是说它有17位网络位。我们知道一个字节有8位,所以前两个字节就已经有16位了,再加上第三个字节的第一位就是我们的网络位。我们把主机位置为0,就可以得到网络地址: 192.168.128.0 。我们如果把上例的IP地址改为192.168.1.74/17的话。它的第三字节的第一位为0,所以它的网络地址就是:192.168.0.0.                            

                                                                                                                                                                              

那么上例的网络地址能表示多少台主机呢?我们首先要来计算它有多少位主机位。因为一个ip地址有32位,减去17位网络位也就是32-17=15,我们知道它有15位主机位。在2进制中,一个位置有两种情况,也就是0和1。有15位2进制数来表示主机位,也就是说该网络中可以表示2^15台主机。但是主机位全为0是用来表示网络地址,主机位全为1用来表示广播地址,这两位要做保留。所以在该网络中实际上有2^15-2台主机。将它转换成公式就是2^n-2,其中n表示主机位的位数。

还记得我们刚刚说的‘中国-深圳-你’的故事吗?我们刚刚计算出来的结果只有中国和你,忽略了深圳这一环。你有没有想过为什么国家要设置省和市甚至是县等其他行政单位吗?答案显而易见,为了放便管理。引用上面的例子,17位网络位能表示32766台主机,为了管理方便,我们将上面的IP地址再进行细分。具体的细分方法就是借位。比如说我们的网络位是17位,为了业务需要和管理方便我们需要划分两个子网,一个子网给深圳公安局用,一个子网给深圳教育局用。我们需要在原有的基础上向主机位借一位二进制当作网络位,也就是有子网的子网掩码为18位。因为一个二进制可以有两种情况,所以借一位就可以满足两个子网的业务需求。两个子网分别为192.168.128.0/18,192.168.(128+64).0/18。一个子网能表示的主机数就是2^(32-18)-2台主机。当需要更多的子网的时候可以继续进行借位这一过程。

文章说的都是具体的方法,想要具体地学会IP地址这一内容还需要多加练习。练习题将在下一篇博文进行更新。

一个刚入门网络的小白

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(计算机网络)