阅读 66

IP地址的构成、相同网段、网络掩码

看完这篇文章希望可以解答的问题是:
1、IP地址的构成
2、什么是网络掩码?
3、如何才算是处于相同网段的通信?

看懂所需要的门槛是:二进制换算 

        计算机之间的通信,可以分为相同网段的通信和不同网段的通信。那什么是相同网段和不同网段呢?不管三七二十一,先画个图,感受一下。

        员工A和B就属于相同网段,A与C、B与C就是不同网段。在图中我们可以看到有IP地址和网关两个玩意儿,他们究竟是什么呢?为什么又能来区分相同网段和不同网段?

        在回答之前,先介绍一下什么是IP地址:

        IP地址相当于网络中的身份唯一认证ID,跟身份证ID一样是唯一的,唯一不同的是,IP地址是可以变的,只是不管怎么变,都将会是唯一的。Mac地址的性质更加接近于身份证ID,它是设备的唯一ID。

        IP地址 = 网络地址 + 主机地址
        IP地址目前普遍是IPv4版本,由32位二进制数分成4组,每组1字节Byte(8比特Bit)组成。分别用十进制表示再用圆点隔开,就是现在的172.1.1.10。

        什么是网络地址和主机地址?图中172.1.1.10/24的24又指的是什么?

        说到这里不得不解释一下什么是子网掩码(又称网络掩码)
         24指的是子网掩码的长度,用子网掩码来表示,就是:255.255.255.0。它的作用主要是用来区分网络地址和主机地址。
        上面我们说了,员工A和B就属于相同网段。而归根究底是因为他们有相同的网络号,偏偏子网掩码又是用来告诉我们他们是真的有着相同的网络号的。
        255.255.255.0用二进制表示,则是:11111111.11111111.11111111.00000000
        172.1.1.10用二进制表示,则是:10101100.00000001.00000001.00001010
        连续24个1,也就是172.1.1.10/24中24的由来。
        通过按位与最终得到网段号:10101100.00000001.00000001.00000000
        按位与/& : 1 & 1 => 1 、 1 & 0 => 0 、 0 & 0 => 0

如图:


        所以172.1.1.10中剩下的10(00001010)即是主机号,172.1.1是网段号,那回到上面的员工A、B、C中:
       员工A(172.1.1.10/24)的网段号:172.1.1
       员工B(172.1.1.11/24)的网段号:172.1.1
       员工C(172.1.2.10/24)的网段号:172.1.2
       显然A、B在同一个网段里

       是不是看上去很容易了,那我们学以致用,现在有一个IP地址:172.1.1.10/25,请问,这里的网络位、主机位是多少?主机数是多少?网络地址和广播地址是多少?网络掩码是多少?

解题步骤:

1、首先我们将IP地址转为32位二进制:10101100.00000001.00000001.00001010

2、从地址中知道子网掩码的长度是25,总长为32Bit,那我们可以写上25个连续的1,剩下的补上0,得到:11111111.11111111.11111111.10000000 转为10进制得到:

      网络掩码: 255.255.255.128

      按位与操作后,可以拿到网络位:10101100.00000001.00000001.1xxxxxxx

3、那网络地址和广播地址是什么呢,我们将上面的7个x,改为0,得到的就是网络地址(网络号),全部改为1,得到的就是广播地址。所以:

      网络地址: 10101100.00000001.00000001.10000000 =>172.1.1.128
      广播地址: 10101100.00000001.00000001.11111111 => 172.1.1.255

4、那么我们的主机位有多少呢?172.1.1.128 ~172.1.1.255 之间(抛开网络地址和广播地址)一共可以有126个主机位。

当然这样算太累了,用一个比较简便的算法,IP地址总长 32 - 子网掩码长度 25 = 主机位 7,那么根据排列组合主机位 = 2 ^ 7 - 2 = 126,减2是减去广播地址以及网络地址。


        算完上面的题目,是不是感觉清晰了很多,那问题又来了?255.255.255.198这个掩码又是不是合法呢?
        我们上面的掩码长度,都是连续的1,可 255.255.255.198转为二进制是:11111111.11111111.11111111.11000110
        不是连续的1了,很多人认为,这样的子网掩码是不合法的。这是错误的理解,IP协议中给子网掩码提供了一定得灵活性,允许子网掩码中的0和1不连续,但是这样的子网掩码给分配主机以及找到相同网段都造成了一定的难度。市面上也只有极少路由器支持在子网中这样使用。所以实际应用中大多都是采用上述方式。

         当我们的企业、公司去申请一个IP地址时,实际上拿到的是网络号,通过网络的性质以及规模,由自己的企业去自行分配主机号。

         当然,网络号自然是要划分三六九等的,因为网络的规模差异比较大、而我们的IP资源有限,根据网络号和主机地址来分,主要分为A、B、C三类和特殊地址D、E(可以粗略了解,传送门:blog.51cto.com/huchina/215…

         至此,文章开头的问题,应该是有所解答了。