下午好,我的网工朋友。
最近网工群里还是一如既往的热闹啊,关于行业、技术、职场的话题热议不断。
前段时间有群友在里面聊子网划分,有几个不懂的网工朋友,悄悄来私聊老杨总,表示想再补充一下这方面的知识。
看了眼,关于这方面的内容,确实还可以再补充点。
子网划分技术其实是计算机网络基础中的重点难点了。今天就给你来一篇,IP子网划分VLSM详解。
今日文章阅读福利:《全国网工交流群进群名额(限时开放)》
老杨总的网工交流群即将破100+,想一起在群里聊技术、行业、职场又或是上班摸鱼唠唠嗑吗?
私信我,发送暗号“进群”,前30名私信的小友可获得进群资格。
01 什么是IP地址
老规矩啊,先给你讲一波理论基础。
IP地址在网络中用于标识一个节点(或者网络设备的接口)。
IP网络中数据包的寻址是基于IP地址来进行的,因此IP地址就像是现实生活中的地址。
IP协议定义了数据分组的格式,也定义了数据分组寻址的方式。目前我们在业务环境中常见的IP主要是两个版本:
IPv4及IPv6。
而现阶段网络主体仍然是IPv4,但是在可预见的未来,会逐渐向IPv6过渡。今天只介绍IPv4哈。
一个IPv4地址有32比特位(二进制格式下)。
当然,我们不可能用二进制来书写IPv4地址,那是低效的,我们通常采用十进制格式来书写IP地址,但是计算机在进行IP地址的相关计算工作时,无疑是通过二进制的形式来进行。
因此掌握十进制到二进制的数制转换是必备的技能。
IPv4地址通常采用“点分十进制”表示,以适应人类的读写习惯,例如192.168.1.1。
02 十进制与二进制的转换
“点分十进制”IP地址表现形式能够帮助我们更好的使用网络,但网络设备在对IP进行计算时使用的是二进制的操作方式。
例如:
以下是192这个数字,对应的二进制算法,这里就不再赘述了哈,这是基本技能。
03 IP地址的分类
IPv4地址的空间从0.0.0.0 一直到 255.255.255.255,这么庞大的空间,如果不加以区分和规划,势必不便于统筹管理。
因此我们对IPv4地址空间进行类别上的划分,一共有五类:
地址的类别上的区分主要体现在第一个八位组(一个IP地址拥有4个八位组)上:
第一个八位组首位恒定为0,那么我们就得到一个区间:
1.0.0.0一直到127.255.255.255。
这是A类地址,其中127.0.0.0/8作为本地回环使用,例如你ping 127.0.0.1实际上ping的是本机。
所以如果看到一个IP,它的首个八位组掉落在1-126的区间内,那么这是一个A类地址。
第一个八位组的最高两位恒定为10,就得到一个区间:
128.0.0.0-191.255.255.255,这是B类地址。
第一个八位组的最高三位恒定为110,就得到一个区间:
192.0.0.0 – 223.255.255.255,这是C类地址。
第一个八位组的最高四位恒定为1110,就得到一个区间:
224.0.0.0 – 239.255.255.255,这是D类地址,这个类别的地址专门用于组播。
剩下的是E类地址,这类地址保留作为研究使用。
04 网络掩码Netmask
一个IP地址包含两部分:网络部分以及主机部分。
网络部分用于表示这个IP地址所处的“空间”,对于一台路由器而言,当它在为数据包寻址时,通常只关心IP地址的网络部分。
那么如何区分一个IP地址中的网络与主机部分?
自然是网络掩码(Network Mask,简称netmask),用于和IP地址进行对应,从而标识出IP地址中的网络与主机部分。
● 网络掩码为32bits,与IPv4地址的位数是一样的。
● 网络掩码在二进制的表示上是一堆连续的1、后面接连续的0。
● 网络掩码值为1的bit对应IP地址中的网络位;为0的bit对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络与主机位,如下图:
为了方便书写,我们往往使用掩码长度的方式来表示一个IP地址+掩码:
192.168.1.1 255.255.255.0 等同于 192.168.1.1/24。
因为255.255.255.0写成二进制的话,从左往右数就是24个1,所以我们也说,它的掩码长度为24。
默认情况下,A类IP地址,首个八位组为网络位,其他位为主机位,因此A类地址的默认掩码就是255.0.0.0,或者长度为/8。
B类IP地址前两个八位组为网络位,后两个八位组为主机位,因此B类地址的默认掩码就是255.255.0.0或者/16。
C类地址的前三个八位组为网络位,后面一个八位组是主机位,因此C类地址的默认掩码就是255.255.255.0,或者/24。
从这里我们可以看出来,如果你申请到一个A类地址空间:
123.0.0.0/8,那么这是一个相当庞大的地址空间,因为这个空间有2的24次方个IP地址。
相对的,一个B类的IP网络地址空间默认有2的16次方个IP地址,而C类地址则更少。
05 IP地址类型
这里给你说说下面这三种类型。
● 网络地址:
标识一个网络,相当于一个“面”的概念。是一个IP地址中主机位全0的地址。例如192.168.10.0/24。
● 广播地址:
用于向网络中的所有主机发送数据的特殊地址。广播地址即主机部分的各比特位全部为1的地址。例如192.168.10.255/24。
● 主机地址:
可分配给网络中终端设备的地址。例如192.168.10.1/24至192.168.10.254/24。
例:192.168.1.0 这个C类网络的网络号、广播号及可分配IP分别是?
06 为什么要划分子网
假设你有一个B类地址:172.16.0.0,由于B类地址的默认掩码是255.255.0.0,这就意味着这个网络内有2的16次方个地址。
而可分配给PC使用的IP地址就有2的16次方-2这么多个IP,为什么要减去2?
因为广播地址及网络号是不能分配给PC使用的。
设想一下,如果你真有这么多台PC,这么多个IP地址处于同一个网络中、同一个网段中、同一个广播域中,如上图所示。
那么一旦网络中发生广播,影响可就大了。
再者,实际的业务环境中,我们往往给一个业务单元,划分一个网段,不同的业务单元不同的网段。
那么如果你有10个业务单元,每个业务单元才百来号设备,一个业务单元就耗费一个B类地址,这就造成地址空间的浪费。
因此,我们提出子网划分的概念,子网划分的术语叫做VLSM(Variable Length Subnet Mask,可变长子网掩码),事实上是拿子网掩码变戏法。
在上图中,我们有五个网段,需要五个IP地址段。
而如果你只有一个B类地址(172.16.0.0/16)可用,通过子网划分,可以将这个B类地址划分成一个个小一点的子网。
这样一来,一个庞大的广播域可以被分割成小的单元,另外IP地址的使用也更为科学更为合理。
07 如何划分子网
现在假设我们有一个B类地址:172.16.0.0/16。
默认情况下,这个B类地址的掩码为255.255.0.0,前两个八位组是网络位,后两个八位组是主机位。
那么这个单一的网络中,有2的16次方个IP地址,如上图所示,非常庞大。
现在,将原有的16个位的网络位向主机位去“借”一位,这样一来网络位就扩充到了17位,相对的主机位就变成了15位。
那么借过来的这一位,就是子网位了,如上图所示。
由于我们借了这一位,因此掩码就从默认的255.255.0.0变成了255.255.128.0或者说从/16变成了/17。
于是从原来的只有172.16.0.0/16的一个大网段,变成现在拥有172.16.0.0/17及172.16..128.0/17这两个小一点的网段。
这就是子网划分。
务必要关注网络掩码在这个过程中发挥的作用。
接下来给你说两个子网划分的案例。
08 子网划分—案例1
现在有一个IP地址:192.168.1.0,这是一个C类地址,默认的掩码是/24。
我要对它做子网划分,向主机位借一位作为子网位,也就是掩码变成/25,那么我能拿到几个子网?
每个子网网络号是多少?每个子网广播号是多少?每个子网的可用IP是多少?
步骤如下:
01 判断类别,找默认掩码
首先这是一个C类地址,因此默认的掩码长度为/24,你可以划一条竖线帮助计算。线的左边为网络位,右边为主机位,如上图所示。
02 变更掩码,找子网
在原有的/24掩码基础上,向主机位借一位,掩码变成/25。
借出来的这一位就是子网位,如上图所示,我们只要将虚线往右移动一格就行。
这个子网位要么为0,要么为1,两种可能性。
这就创造了两个子网(2的1次方),子网位为0时,得到的网络号是192.168.1.0/25,子网位为1时,得到另一个子网的网络号192.168.1.128/25。
如下图所示:
03 得出广播号
上面分别列出了子网1及子网2的广播号,其实很简单,就是把各个子网的主机位全部置1即可。
因此子网192.168.1.0/25的广播号为192.168.1.127;子网192.168.1.128/25的广播号为192.168.1.255;
04 得出每个子网的可用IP地址数量
经过上面的计算,得出了子网1及子网2的网络号和广播号,那么每个子网可用的IP地址也就出来了,因为可用IP实际上就是该子网的网络号与广播号之间夹着的那些个IP。
所以实际上我们对192.168.1.0这个C类地址,用了一个变长子网:/25,也就是向主机位借1位后产生出了2个子网,每个子网有126个可用IP地址。
这里有个公式:
09 子网划分—案例2
假设现在你有一个IP地址:192.168.1.64/27,想把这个地址配置在一台PC上,是否可行?
默认掩码/24,新掩码/27因此网络位向主机位借了3位,产生了8个子网,每个子网可用IP地址为30;
而相应的每个子网块的大小就为32,也就是2的5次方(5是剩余的主机位数)。
现在开始把每个子网罗列一下,结果发现192.168.1.64/27这个IP地址,其实是一个子网的网络号。
既然是网络号,当然是不能分配给PC用的了。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部