理解网际网路协定(三):何谓「子网路遮罩」,什麽又是「预设闸道」?

你是否有在电脑上做过网路设定呢?在常见网路问题 - 检查 Router 设定中有简单提到过 DHCP 和 Static(或 Manually,手动)两种类型,都能取得到一组 IP 位置。在电脑上与在 Router 上情况一样,取得到 IP 位置的方法大致也是这两种。

差别是在 Static 下你需要填入自己这台电脑的 IP 位置、子网路遮罩,以及预设闸道,而 DHCP 会自动帮你填好。

在 Mac 上手动设定 IP Address
*在 Mac 上手动设定 IP Address

今天就来聊聊子网路遮罩级预设闸道,这些使用电脑上网可能会需要的知识吧。

Subnet Mask 子网路遮罩

什麽是子网路遮罩,好奇怪的名字?子网路我可以理解,但为什麽是遮罩呢?这边就来详细聊聊。

首先,子网路故名思义就是某网路底下的部分网路,就有点像是台北市底下信义区这样,而子网路遮罩的功能就是决定哪些 IP 位置是属於同一个子网路用的,而在理解「遮罩」之前,我们有必要先讲一讲计算机中的某些运算。

AND 运算

我们普通世界常用的运算有加减乘除,在计算机的世界中虽然也有,但是并非基础运算,也相较没那麽容易直接实做出来。由於计算机处理的资料是二进制的,在硬体的设计上,最基本的运算用符合二进制的运算可以让成本更低、速度更快。

例如一个输入值从 0 变 1,或是从 1 变 0,就称做 NOT 运算,这在计算机中所做的事就是把低电位(0)转换成高电位(1)。

而把两个输入值做运算,例如 0 和 1 输出成 0,1 和 1 输出成 1,如下图,就称之为 AND 运算。

AND 运算
*AND 运算

在计算机处理哪些 IP 位置属於同一子网路时,用的就是这种运算。

回到子网路「遮罩」

那究竟要如何判断子网路的 IP 位置呢?我们就用子网路遮罩,把给定的 IP 位置做上面提到的 AND 运算,再看得出来的结果,是否一样就可以了。如果一样,代表这些 IP 位置属於同一个子网路,反之则属於不同的子网路。

先看一下常见的子网路遮罩:255.255.255.0,长的很怪对吧?但转换成二进制就比较好理解了,会变成:11111111 11111111 11111111 00000000,我们接下来试着用某些 IP 位置,对这个遮罩做做 AND 运算看看。

  • 192.168.1.1
  • 192.168.1.123
  • 192.168.2.1

首先先将其转换成二进制的表示

二进制的 IP 位置转换
*二进制的 IP 位置转换

然後将三个 IP 位置分别对子网路遮罩做 AND 运算

IP 位置与子网路遮罩 AND 运算
*IP 位置与子网路遮罩 AND 运算

得到的结果为,前两个 IP 位置都是同一个结果:192.168.1.0,第三个 IP 位置得到:192.168.2.0。也就是说前两个 IP 位置属於同一个子网路,而第三个则属於其它子网路。

这样做 AND 运算的过程,是否很像把一个 IP 位置丢到遮罩里面呢?因为只要遮罩的数字是二进位的 1,结果就保持不变:如果是二进位的 0,就会被 AND 运算遮成 0。

Default Gateway 预设闸道

了解完稍微复杂些的子网路遮罩,最後来看看比较容易理解的设定:预设闸道。

预设闸道是由 Default Gateway 翻译过来的,其实就是当你要连上网路时,封包要往哪里丢的预设目的地而已。

而这个目的地通常就是 Router,所以像是我在 Mac 里面做设定时,乾脆就把 Default Gateway 这个名称拿掉,改成 Router。

小结:子网路

有了子网路遮罩及预设闸道,其实就可以表示成一个独立的子网路罗。例如你的预设闸道是 192.168.1.1,而子网路遮罩是 255.255.255.0,这就意味着只要是 192.168.1 开头的就属於同一个子网路。

由於子网路遮罩都是在二进位都是由 1 开头的,我们通常会计算前面总共有几个 1,例如 255.255.255.0 在二进位有 24 个 1,配合上预设闸道是 192.168.1.1,我们就可以把这个子网路表示成 192.168.1.0/24

再举一个例子,我们能否从子网路 10.1.0.0/16 判断哪些 IP 位置在其之中呢?子网路遮罩前 16 个都是 1,就代表这个子网路的前 16 位都会是一样的,换成十进位,就是 10.1 开头的都属於同一个子网路。


<<:  [Day 11] 阿嬷都看得懂的基础 CSS 样式-图片篇

>>:  Day28-Custom Hook

iOS APP 开发 OC 第十五天,网路请求(请求方式对比,缓存策略,请求时长)

tags: OC 30 day 获取网路数据的两种方式: 方式一:NSData 方法: 获取JSON...

4 种方法彻底移除 Mac App

方法一,透过「Finder」删除从其他来源安装的 Mac 应用程序 如果你的应用程序并非从 Mac ...

HTTP & HTTPS

HTTP 和 HTTPS HTTP是甚麽? 定义 超文本传输协定**(英语:HyperText Tr...

[Slack] 利用 Incoming Webhooks 发送讯息至指定频道(channel)

关於Incoming Webhooks Slack是现在蛮流行的办公用通讯软件,其中有许多appli...

[day-3] 一切的开端,认识你所使用的工具,Visual Studio Code !(Part .1)

何谓Visual Studio Code ?   Visual Studio Code(简称 VS ...