自学网络协议(五):网间通信——子网掩码

前文回顾:

  1. 自学网络协议(一):HTTP请求与响应——GET和POST真的不一样吗?
  2. 自学网络协议(二):OSI第一层——物理层Physical layer
  3. 自学网络协议(三):OSI第二层——机器通信那点事
  4. 自学网络协议(四):OSI第三层——网络层的作用(上)

前面说OSI第3层的作用是“互连网络”。
我们也开始了IP的学习,IP —— Internet Protocol,即“互联网协议”,它毫无疑问是网络协议中主要的协议簇。
而IP地址,它实际上分为两部分 —— 网络地址 & 机器地址。
实际上,我们在互联网上定位一个主机,就类似于去一个小区找人:首先通过网络地址找到这个人是哪个小区的,再用主机地址(机器地址)从小区中找到这个人。

那么,我们怎么知道IP地址中的哪个部分代表什么呢?

子网掩码

子网掩码 算是一个“额外的信息”了。它和IP地址是密不可分的。因为正是子网掩码指明了IP地址的哪一部分是网络地址,哪一部分是主机地址。
还记得ifconfig / ipconfig 吗?它不仅包含了MAC地址,还有IP地址和子网掩码:enp0s3(以太网接口)、inet(IP地址)、netmask(子网掩码)
我们看到,子网掩码和IPV4的IP地址格式一致——4个字节,用点分十进制表示,是因为IPV6格式的地址不需要子网掩码。

子网掩码中为1的二进制位代表IP地址中的网络部分。
因为二进制只由0、1组成,因此:子网掩码中为0的二进制位代表IP地址的主机部分。

如IP地址192.168.0.1与子网掩码255.255.0.0相关联。

255.255.0.0 -> 11111111.11111111.00000000.00000000
192.168.0.1 -> 11000000.10101000.00000000.00000001

如上,二进制中黄色部分代表IP的网络地址,其余代表主机地址。

然而,上述只是非常简单的一个例子。众所周知,分割经常会发生在一个字节的中间:

255.255.240.0 -> 11111111.11111111.1111 0000.00000000
192.168.0.1 -> 11000000.10101000.0000 0000.00000000

这次分割又变成了这样!

其实,子网掩码中字节可以取的值是特定的。这是由于子网掩码中0和1的排列造成的。

与子网掩码相关的问题

二进制位的连续性

事实上,在二进制子网掩码中,为1的位必须在左边,为0的位必须在右边,不能混用0和1

所以… 子网掩码这样写:11111111.11100011.00000000.00000000 是错的!

也就是说,子网掩码的4个字节中的每一个字节能取的值将始终是以下值:

00000000 -> 0
10000000 -> 128
11000000 -> 192
11100000 -> 224
11110000 -> 240
11111000 -> 248
11111100 -> 252
11111110 -> 254
11111111 -> 255

好的,看来我们有必要实践一下,如何确定与子网掩码相关的IP地址范围。

IP地址范围是指由相关联的IP地址和子网掩码所确定的一组地址,从最小的到最大的。

我们知道,一个网络中,往往不只有一台主机。就像你一个小区里面,虽然我Mxc用户可以通过查找我的网络地址和主机地址来确定,但我也很想知道,这个小区可以容纳多少住户,这些住户的可用地址又是在哪个范围里的。

IP地址范围的计算 —— 计算第一个和最后一个地址
我们还是将目光放向了192.168.0.1255.255.240.0相关联。
要知道,属于同一网络的所有主机,他们的网络地址的所有位都是相同的!
对于这个例子,显然,他们的网络地址都等于11000000.10101000.0000
然而,其中主机地址是可以变化的
在这个网络中,主机地址可以取很多值 —— 这取决于我们将主机地址的某些为设置为0还是1。
总的来说,他们(这些IP地址)将是:
在这里插入图片描述
如此,我们通过改变IP地址中主机地址的位,就找到了此网络中所有可被主机所用的IP地址。

网络的第一个IP地址是主机地址所有位皆为0的地址;
网络的最后一个IP地址是主机地址所有位皆为1的地址;

那么问题又来了,此网络中有多少个真正可用IP地址?

  • 若主机地址只有一位,那么只有两种选择:0或1
  • 若主机地址有两位,那就有2的2次方个可能的地址(00、01、10、11)

以此类推,要找到网络中的地址数量,只需知道主机地址的二进制位数即可。

而IP地址中的主机地址是由子网掩码定义的,也就是说,网络中的可用主机数取决于子网掩码!
那么,我们完全可以定义:网络中可用的IP数=2的“子网掩码中0的个数”次方个

网络地址和广播地址
在由相关联的 IP 地址和子网掩码所确定的 IP 地址范围中,有两个是特殊的:第一个 IP 地址和最后一个 IP 地址。

  • 地址范围中的第一个 IP 地址是这个网络的地址本身,此地址不能为某个主机所用。
  • 地址范围中的最后一个 IP 地址是一个特殊地址,即广播地址。该地址也不能为某个主机所用。(实际上,它用于标识该网络中的所有主机)

当我们向某网络的广播地址发送消息时,此网络上的所有主机都将收到此消息。

因此,假设一个网络有 16 个可用的 IP 地址,网络中的主机却只能使用 14 个地址,因为第一个和最后一个将保留给该网络的地址和广播地址。这条规则对于任何网络都是如此,总是有 2 个不能为主机所用的地址。

上一个例子,就是相关联的 IP 地址 192.168.0.1 和子网掩码 255.255.240.0 的示例中,网络中的主机可以使用的地址数是 4096(2的12次方) - 2 = 4094 个,因此理论上此网络可以容纳 4094 台主机。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恪愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值