计算机网络-子网掩码

Posted by kevin on April 1, 2020

preface

计算机网络中最基础的协议之一就是 TCP/IP 协议,今天复习一下关于 IP 地址的一些东西。大型网络都是基于 TCP/IP 的思路来设计的,就是由一些小的子网,通过路由器连接起来组成一个大的网络。这里的子网可以理解 为用集线器连接起来的几台计算机,我们将它看作一个单位,称为子网。 将子网通过路由器连接起来,就形成了一个网络。

network

在网络中,所有的设备都会被分配一个地址。这个地址就相当于现实 中某条路上的 “×× 号 ×× 室” 。 其中 “号” 对应的号码是分配给整个子网的,而 “室” 对应的号码是分配给子网中的计算机的,这就是网络中的地址。“号” 对应的号码称为网络号,“室” 对应的号码称为主机号,这个地址的整体称为 IP 地址,也就是说,IP 地址是由网络号和主机号共同组成的

子网掩码

在 IP 地址的规则 中,网络号和主机号连起来总共是 32bit,但这两部分的具体结构是不固定的。在组建网络时,用户可以自行决定它们之间的分配关系,也就是说仅凭这 32bit 我们无法区分哪部分是网络号,哪部分是主机号。因此,我们还需要另外的附加信息来表示 IP 地址的内部结构,这个附加信息就是子网掩码

子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码的格式是一 串与 IP 地址长度相同的 32bit 数字,其左边都是 1,右边都是 0,通过子网掩码,就可以判断两个 IP 在不在一个局域网内部。

e.g. 11111111.11111111.11111111.00000000 # 255.255.255.0

其中,子网掩码为 1 的部分表示网络号子网掩码为 0 的部分表示主机号。将子网掩码按照和 IP 地址一样的方式以每 8bit 为单位用圆点分组后 写在 IP 地址的右侧,这是一种表示方法,但这种写法太长,我们也可以把 1 的部分的 bit 数用十进制表示并写在 IP 地址的右侧,代表子网掩码有多少个 bit 为 1,用 32 减去这个数字就是主机号的 bit 数,就能知道这个子网有多少台主机

mask

顺带一提,主机号部分的 bit 全部为 0 或者全部为 1 时代表两种特殊的含义。主机号部分全都为 0 代表整个子网而不是子网中的某台设备,称作网络地址。 此外,主机号部分全都为 1 代表向子网上所有设备发送包,即广播地址

应用

  • 将 IP 地址和子网掩码换算为二进制,子网掩码连续全 1 的是网络地址,后面的是主机地址
  • IP 地址和子网掩码进行逻辑与运算,结果是网络地址(即主机号全 0 是网络地址)
  • 将运算结果中的网络地址不变,主机地址的 0 变为 1,结果就是广播地址
  • 地址范围就是含在本网段内的所有主机,数量为 (2^主机号bit数 -2) ,因为不包括网络地址和广播地址

一个主机的 IP 地址是 202.112.14.137,掩码是 255.255.255.224,计算这个主机所在网络的网络地址和广播地址

将子网掩码转换成二进制为 11111111 11111111 11111111 11100000,所以主机号为 5,网络号为 27

网络地址:202.112.14.128

11001010 01110000 00001110 10001001 # 202.112.14.137
11111111 11111111 11111111 11100000	# 255.255.255.224
逻辑与运算
11001010 01110000 00001110 10000000	# 202.112.14.128

广播地址:202.112.14.159,也就是将主机地址全变成1,最后 8bit 就是 10011111,为 159

主机数:30,因为这个子网只有 5 位主机地址,所以最多主机数为 (2^5 - 2 = 30),其中主机地址全为 1 是广播地址,全为 0 是网络地址

reference

《计算机是怎样连接的》 – 户根勤

https://blog.csdn.net/gatieme/article/details/50989257