查看原文
其他

老司机:子网掩码我不怕,怕的是子网划分!

Cloud研习社 Cloud研习社 2023-06-06

教程每周二、四、六更新


子网掩码



不按照ABC类划分网段,可以任意指定网段的范围,即CIDR无类域间路由

CIDR表示法:IP/网络ID位数。如:172.16.0.0/16

netmask子网掩码:32位或128位的数字,和IP配对使用,用来确认IP地址中的网络ID和主机ID,网络ID对应掩码是1的位置,主机ID对应掩码位0的位置。

网络地址 = (二进制的 IP 地址) AND (地址掩码)

我们看个实例:

已知IP地址是128.14.35.7,求网络地址。

上图中,粉红色背景的部分正好是20位,作为网络ID,后面的就是全0,这样与IP地址相与,得到的就是网络地址。通过这个例子我们也可以看到:

  • 不按照A、B、C这种分类进行IP划分以后,网络ID的位数是不固定的,不一定是整数个字节

  • 计算的时候,需要把所有的数都换算成对应的二进制数进行计算

当然,网络ID永远是在最左边,这样的话,就不是所有的十进制数都是子网掩码,我们来看:

所以,我们记住上面的表格,就可以轻松的得到对应的掩码值,不需要再费时间计算了。

这里再重复一下前面讲过的两个公式,然后我们看个例子:

  • 网络的最多主机数:2^主机ID位数-2

  • 网络数(网段数)=2^网络ID中可变的位数

实例讲解1:

netmask:255.255.192.0, 网络ID位:18,主机ID14位,主机数:2^14-2

实例2:

A:192.168.1.100 netmask: 255.255.255.0

B:192.168.2.100 netmask: 255.255.0.0

判断A和B是否在同一个网段?

通常工作中:判断是不是在同一个网段,需要计算出网络ID,如果网络ID相同,则在同一网段,否则不在同一个网段。

192 .168     . 1.100      # 十进制地址
192 .168     .000000001.01100100  # 二进制地址
11111111.11111111.11111111 .00000000  # 掩码的二进制,和上面地址相与,得到:
192 .168     .000000001.00000000  # 网络地址就是192.168.1.0

192 .168     . 2.100      # 十进制地址
192 .168     .00000010.01100100    # 二进制地址
11111111.11111111.00000000.00000000    # 掩码的二进制,和上面地址相与,得到:
192 .168     .00000000.00000000    # 网络地址就是192.168.0.0


所以上面的两个地址不是同一个网段。但是这么算对吗?

实际上,判断两者是不是在同一个网段,需要用自己的子网掩码分别和自己的IP以及对方的IP相与,如果得到的网络ID相同,则才认为是在同一个网段,否则不在同一个网段。所以上面的结果,如果从A的角度看,A和B是不在同一个网段的,但是从B的角度看(网络地址都是192.168.0.0),B和A是在同一个网段的。这是因为,在网络通信的时候,我是不知道对方的子网掩码的,只能用我自己的子网掩码和对方的IP地址相与。

课后练习:

172.16.2.100/28

求这个地址的主机数、网络ID、主机ID最小的IP和最大的IP



划分子网



将一个大的网络划分成多个小的网络,主机ID位数变少,网络ID位数变多,网络ID位向主机ID位借位。

下面我们通过一个实例来讲解子网划分:

请把10.0.0.0/8划分成2个子网

前提原则:向主机ID位借位的时候,把数字换成二进制形式,从最左侧开始借位。

我们把第二个数字0换成二进制以后,写成如下形式

| 10   | 00000000 | 0    | 0    || ---- | -------- | ---- | ---- |

第一列的数字是固定,所以,10.0.0.0/8的最小IP地址是10.0.0.1,最大地址是10.255.255.254。故,第二列的8个0可以都为0,也可以都为1 。 现在要求划分两个子网,网络数(网段数)=2^网络ID中可变的位数,所以就是2^1,所以我们只需要从主机ID位借一位即可:

| 10   | 0   0000000 | 0    | 0    || ---- | ----------- | ---- | ---- |

其中第二列最左侧的0就是我们借来用作网络ID的位。经过上面的讨论,我们知道,这一位可以是0也可以是1。

当这一位为0的时候,我们可得网络地址为:10.0.0.0/9

当这一位为1的时候,我们可得网络地址为:10.128.0.0/9

这就是我们分出来的两个网络。

课后练习:

假设取得网络地址200.200.200.0 ,子网掩码为255.255.255.0。现在一个子网有100台主机,另外4个子网有20台主机,请问如何划分子网,才能满足要求。请写出五个子网的子网掩码、网络地址、第一个主机地址、最后一个主机地址、广播地址。(子网号可以全0和全1)。




雷哥在这个暑假决定搞一件大事:带你学Linux  云计算  运维。

课程特色:

  1. 量身定制学习计划、正规出版社书籍电子版;
  2. 雷哥一对一答疑(集中做计划学习一个月,答疑有效期一年);
  3. 雷哥督促学习进度。
  4. 点我查看详情
长按下方卡片购买



推荐阅读


干货 | PXE+kickstart无人值守批量装机(原理与架构)

40个简单而有效的Shell脚本,想不起来的时候一看就懂(下)

干货 | PXE+kickstart无人值守批量装机(实战部署)

ifconfig已淘汰,ip登场

Linux 云计算 学习路线(建议收藏)
放后台的Linux任务没有了,试试这个命令

Linux 网络状态工具 ss 命令详解

这次终于搞明白VLAN技术了

终于有人把敏捷、DevOps、CI、CD讲清楚了

用10行shell脚本监控Linux


看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存