Linux常用命令--子网掩码

摘要

  • 本文介绍子网掩码的作用

  • 本文基于CentOS8(x86_64)

子网掩码

  • 我们经常看到10.8.1.0/24这种ip表示方式,其表示为从10.8.1.0这个IP开始,24代表子网掩码为255.255.255.0,共包含256个地址,即从0-255共256个IP,即10.8.1.0~10.8.1.255。

  • 这里/24代表子网掩码,IP地址由4段8位二进制数表示,总共32位长度,/24即前面有24个1组成,后面就是32-24=8个0,即255.255.255.0,这就是子网掩码,后面8个0,表示可以分配的IP地址为2的8次方,共256个。
    举例如下:
    A类IP地址的默认子网掩码为255.0.0.0,由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位,/12表示网络号占了12位,即有12个1,以此类推。
    具体的设置规则可参考下表:

IP总数 子网掩码
/24 256 255.255.255.0
/20 4096 255.255.240.0
/16 65536 255.255.0.0
/12 1048576 255.240.0.0
/8 16777216 255.0.0.0

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
最为简单的理解就是两台计算机各自的IP地址与子网掩码进行运算后,得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。
比如:
网段:10.8.1.0/24
网络地址:10.8.1.0
子网掩码:255.255.255.0
主机地址:10.8.1.1~10.8.1.254
广播地址:10.8.1.255
主机地址+网络地址+广播地址:256

计算规则:

10进制 二进制 说明
主机地址 10.8.1.1 00001010.00001000.00000001.00000001 10.8.1.1~10.8.1.254,这些ip和子网掩码后的结果都相同
子网掩码 255.255.255.0 11111111.11111111.11111111.00000000 /24,即24个1
网络地址 10.8.1.0 00001010.00001000.00000001.00000000 主机地址和子网掩码运算后的结果就得到了网络地址,同一个物理网络上的所有主机都使用同一个网络地址
广播地址 10.8.1.255 00001010.00001000.00000001.11111111 网络地址最后的0全部变为1就得到了广播地址

以172.16.0.0/12为例,其子网掩码是255.240.0.0,
则172.16.0.0是网络地址,172.31.255.255是广播地址,网络地址相同的ip可以互相通信

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
其中A类、B类、和C类这三类地址用于TCP/IP节点,其它两类D类和E类被用于特殊用途。

A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是O,B类地址的前两位总是10,C类地址的前三位总是110。

地址类型 二进制 十进制 地址范围 私有地址 保留地址 说明
A类 0000000.00000000.00000000.00000000 0.0.0.0 1.0.0.1~126.155.255.254 10.X.X.X 127.X.X.X 第1字节为网络地址,其它3个字节为主机地址,第1个字节的第一位固定为0,注意数字0和127不作为A类地址
B类 10000000.00000000.00000000.00000000 128.0.0.0 128.0.0.1~191.255.255.254 172.16.0.0~172.31.255.255 169.254.X.X 第1字节和第2字节为网络地址,其它2个字节为主机地址,第1个字节的前两位固定为10
C类 11000000.00000000.00000000.00000000 192.0.0.0 192.0.0.1~223.255.255.254 192.168.X.X 第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址,第1个字节的前三位固定为110
D类 11100000.00000000.00000000.00000000 224.0.0.0 224.0.0.1~239.255.255.254 不分网络地址和主机地址,第1个字节的前四位固定为1110,这一类地址被用在多点广播(Multicast)中
E类 11110000.00000000.00000000.00000000 240.0.0.0 240.0.0.1~255.255.255.254 第1个字节的前五位固定为11110,为将来使用保留

私有网络地址(以下简称私网地址)是指内部网络或者主机的IP地址,IANA(互联网数字分配机构)规定将下列的IP地址保留用作私网地址,不在Internet上被分配,可在一个单位或公司内部使用。RFC918中规定私有地址如下:

私有地址类别 地址范围 网段
A类私有地址 10.0.0.0 ~ 10.255.255.255 10.0.0.0/8
B类私有地址 172.16.0.0 ~ 172.31.255.255 172.16.0.0/12
C类私有地址 192.168.0.0 ~ 192.168.255.255 192.168.0.0/16

知道主机地址和子网掩码,如何快速获得网络地址、广播地址等信息

  • linux下提供了ipcalcsipcalc命令,没安装的话可以使用yum进行安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ipcalc
$ ipcalc -bnpm 192.168.16.155/19
NETMASK=255.255.224.0
PREFIX=19
BROADCAST=192.168.31.255
NETWORK=192.168.0.0

# sipcalc,其显示的内容更详细
$ sipcalc 192.168.16.155/19
-[ipv4 : 192.168.16.155/19] - 0

[CIDR]
Host address - 192.168.16.155
Host address (decimal) - 3232239771
Host address (hex) - C0A8109B
Network address - 192.168.0.0
Network mask - 255.255.224.0
Network mask (bits) - 19
Network mask (hex) - FFFFE000
Broadcast address - 192.168.31.255
Cisco wildcard - 0.0.31.255
Addresses in network - 8192
Network range - 192.168.0.0 - 192.168.31.255
Usable range - 192.168.0.1 - 192.168.31.254
  • mac下同样可以使用ipcalcsipcalc命令,没安装的话可以使用brew进行安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# mac下ipcalc命令的使用方式与linux不同
$ ipcalc -b 192.168.16.155/19
Address: 192.168.16.155
Netmask: 255.255.224.0 = 19
Wildcard: 0.0.31.255
=>
Network: 192.168.0.0/19
HostMin: 192.168.0.1
HostMax: 192.168.31.254
Broadcast: 192.168.31.255
Hosts/Net: 8190 Class C, Private Internet

# mac下sipcalc与linux基本相同
$ sipcalc 192.168.16.155/19
-[ipv4 : 192.168.16.155/19] - 0

[CIDR]
Host address - 192.168.16.155
Host address (decimal) - 3232239771
Host address (hex) - C0A8109B
Network address - 192.168.0.0
Network mask - 255.255.224.0
Network mask (bits) - 19
Network mask (hex) - FFFFE000
Broadcast address - 192.168.31.255
Cisco wildcard - 0.0.31.255
Addresses in network - 8192
Network range - 192.168.0.0 - 192.168.31.255
Usable range - 192.168.0.1 - 192.168.31.254