欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IP地址与子网掩码

程序员文章站 2022-05-20 08:04:37
...

IP地址与子网掩码

文章从一个IP地址:128.36.202.186/20 开始说起。通过该IP来描述IP地址与子网掩码。

IP地址分类

我们知道IPV4是4段点分的十进制数字,我们在计算分类是需要转换成二进制。例如最高位255.255.255.255的二进制就是32个1:11111111.11111111.11111111.11111111

A类地址

A类地址最高位必须是0,形如0XXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX,那么其范围就是从00000000.00000000.00000000.00000000 - 01111111.11111111.11111111.11111111,换成十进制就是从0.0.0.0 - 127.255.255.255

  • 10.0.0.0 - 10.255.255.255 是私有地址,用在局域网;
  • 127.0.0.0 - 127.255.255.255 用作环回地址。

所以实际A类地址范围是 0.0.0.0 - 126.255.255.255 。默认子网掩码为255.0.0.0.

B类地址

B类地址最高位必须是10,形如 10XXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX,那么其范围就是 128.0.0.0 - 191.255.255.255 。默认子网掩码为255.255.0.0.

C类地址

C类地址最高位必须是110,形如 110XXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX,那么其范围就是 192.0.0.0 - 255.255.255.255 。默认子网掩码为255.255.255.0.

所以上面的128.36.202.186就是一个B类地址。

子网掩码

我们在电脑上填写IP地址的时候,需要填写子网掩码,有时电脑会根据填写的IP的地址的分类自动生成子网掩码。上面的例子中的 /20 代表子网掩码的位数。通过这个位数我们可以计算子网掩码,同时可以计算网络中的最大主机数。

根据掩码位数计算掩码

这个子网掩码位数代表的是32个二进制从最高位开始1的个数,/20 就代表的是 11111111.11111111.11110000.00000000,计算结果就是 255.255.240.0,这个就是子网掩码。

所以如果要根据子网掩码计算掩码位数,只要换算成二进制,数一下从最高位开始连续的1的个数即可。

根据掩码位数计算最大主机数

最大主机数=2^(32-掩码位数)-2

之所以减2是要减去广播地址和网络地址。

根据IP和子网掩码计算网络地址、广播地址和最大主机数

例如IP地址是128.36.202.186,子网掩码是255.255.240.0。

计算网络地址

将IP和子网掩码的二进制进行与运算,结果是网络地址。

 128.36 .11001100.10111010
&255.255.11110000.00000000
---------------------------
 128.36 .11000000.00000000

那么网络地址就是128.36.192.0

主机位:子网掩码二进制中为0的部分。上例中主机位是12位,这个记住,在计算广播地址会用到。

计算广播地址

将网络地址中的主机位换成1,就是广播地址。

上例中的主机位是12,将网络地址换算下,就是128.36.11001111.11111111,也就是128.36.207.255

计算IP范围

IP范围就是 网络地址+1 - 广播地址-1
对应到上例中就是 128.36.192.1 - 128.36.207.254

计算最大主机数

   最大主机数=2^(32-掩码位数)-2
或 最大主机数=2^主机位数-2

上例中就是 2^(12)-2=4094

根据允许主机数计算子网掩码

既然通过子网掩码能够控制最大主机数,那么我们如果想控制主机数,如何计算子网掩码呢?

例如一个公司想允许最多接入1000台主机,如何计算子网掩码?

  1. 计算总主机数

    总主机数=允许主机数+1+1+1
    第一个1代表网络地址
    第二个1代表广播地址
    第三个1代表网关地址
    

    所以这里总主机数是1003,但是我们要换算成2的倍数,也就是1024台,也就是2的10次方。

  2. 计算子网掩码

    既然知道了是2的10次方,根据公式 最大主机数=2^主机位数-2,那么主机位数就是10,也就是子网掩码中0的个数是10,1的个数就是22,也就是11111111.11111111.11111100.00000000,换算成十进制就是255.255.240.0

相关标签: IP 子网掩码