IP 子网划分
首先, 在进行子网划分的学习之前, 我们先来回顾一下 IP 地址的相关知识, 同时了解一下公有和私有 IP 地址:
在 Internet 上有千百万台主机, 为了区分这些主机, 人们给每台主机都分配了一个专门的地址, 称为 IP 地址. Internet IP 地址由 NIC(Internet Network Information Center)统一负责全球地址的规划, 管理; 同时由 Inter NIC,APNIC,RIPE 三大网络信息中心具体负责美国及其它地区的 IP 地址分配.
在现在的网络中, IP 地址分为公网 IP 地址和私有 IP 地址. 公网 IP 是在 Internet 使用的 IP 地址, 而私有 IP 地址则是在局域网中使用的 IP 地址. 上一篇博客中我们介绍到了 A,B,C,D,E 五类 IP 地址, 其中 D,E 类有特殊用途, 所以实际我们可用的 IP 地址就为 A,B,C 三类地址, 其中公有地址 (Public address) 由 Inter NIC(Internet Network Information Center 因特网信息中心)负责. 这些 IP 地址分配给注册并向 Inter NIC 提出申请的组织机构. 通过它直接访问因特网. 私有地址 (Private address) 属于非注册地址, 专门为组织机构内部使用. 以下列出留用的内部私有地址
A 类: 10.0.0.0--10.255.255.255
B 类: 172.16.0.0--172.31.255.255
C 类: 192.168.0.0--192.168.255.255
除去这些地址以外, 其他的即为公有 IP, 所以共有 IP 的地址范围为:
A 类: 0.0.0.1-- 9.255.255.255 & 11.0.0.0--126.255.255.255
B 类: 128.0.0.0--172.15.255.255 & 172.32.0.0--191.255.255.255
C 类: 192.0.0.0-- 192.167.255.255 &192.169.0.0--223.169.255.255
子网划分的原因
今天讨论的子网划分技术是在 ipv4 协议的基础上实施的. 首先看一看百度对 ipv4 的定义:
IPv4, 是互联网协议 (Internet Protocol,IP) 的第四版, 也是第一个被广泛使用, 构成现今互联网技术的基础的协议. 1981 年 Jon Postel 在 RFC791 中定义了 IP,Ipv4 可以运行在各种各样的底层网络上, 比如端对端的串行数据链路(PPP 协议和 SLIP 协议) , 卫星链路等等. 局域网中最常用的是以太网.
ipv4 提出来时才 1981 年, 当时互联网并不普及, 人们对于互联网的需求极小, 然而随着时代的发展, 互联网上网民数量的不断增加, 人们对网络的需求量日趋庞大, 原有的 IPv4 地址逐渐开始不够用了.
在互联网中, 我们用交换机可以组成一个局域网, 一个局域网即可单独成为一个网段, 两个局域网之间通信就需要使用路由器相连, 路由器的功能便是用来连接不同网段设备进行通.
而世界上那么多的路由器, 若是全部都连在一起, 现有的 ipv4 网段是绝对不够用的. 而全世界的互联网上只能出现公有 IP, 一个网段在公网任何地方出现过一次, 在其他地方就不能再次出现, 一旦出现就会造成互联网的网络冲突.
ABC 三类地址加起来也就那么多网段, 我们设想一下, 假如一个公司拥有着一个 A 类的地址网段, 例如: 140.0.0.0/8, 这个网段里最大可容纳主机数为 2^24-2=16777214, 而这个公司员工可能还不到 1000 人, 在网络资源如此紧张的情况下, 这个公司如果使用这个网段就会造成资源上的极大浪费. 所以在这样的情况下, 我们就需要应用子网划分的技术对这种情况进行资源的充分利用.
总结一下子网划分的原因:
满足不同网络对 IP 地址的需求
实现网络的层次性
节省 IP 地址
子网划分的原理
实际就是通过改变子网掩码对 IP 地址进行网段的重新划分
VLSM 可变长子网掩码
VLSM(Variable Length Subnet Mask, 可变长子网掩码) 是为了有效的使用无类别域间路由 (CIDR) 和路由汇聚 (route summary) 来控制路由表的大小, 网络管理员使用先进的 IP 寻址技术, VLSM 就是其中的常用方式, 可以对子网进行层次化编址, 以便最有效的利用现有的地址空间.
VLSM 规定了如何在一个进行了子网划分的网络中的不同部分使用不同的子网掩码. 这对于网络内部不同网段需要不同大小子网的情形来说很有效.
VLSM 的作用就是在类的 IP 地址的基础上, 从它们的主机号部分借出相应的位数来做网络号, 也就是增加网络号的位数. 各类网络可以用来再划分子网的位数为: A 类有二十四位可以借, B 类有十六位可以借, C 类有八位可以借.
子网划分
这里继续用上面的 140.0.0.0/8, 该网段下可用主机数为 16777214 台, 假设这个网段现在被中国买下使用, 但是中国那么多的省份, 每个省份都有着大量的 IP 需求, 我应该怎么去分配这个资源呢? 例如:
140.0.0.1/8 - 140.0.0.255/8 北京
140.0.1.0/8 - 140.0.1.255/8 上海
140.0.2.0/8 - 140.0.2.255/8 广州
140.0.3.0/8 - 140.0.3.255/8 深圳
现在我们使用 VLSM 技术的话, 可以将其划分出一些子网网段进行资源的一个合理分配, 让我们看下面两个网段:
- 140.1.0.0/16
- 140.2.0.0/16
这个和上面的网段看似不同, 实际就是我们使用 VLSM 进行子网划分以后的结果, 我们通过对主机位借位的方式, 将前 16 位作为新 IP 的网段(网络号), 通过这种方式, 我们可以从之前的网段中分出 140.0.0.0/16 到 140.255.0.0/16 等 256 个新网段, 这些网段就是上一个网段的子网段, 通过这种形式, 我们就可以对之前的网络进行重新划分, 如下:
140.0.0.0/16 北京
140.1.0.0/16 上海
140.2.0.0/16 广州
140.3.0.0/16 深圳
......
以上, 我们就可以将之前的网段进行一个更好的划分, 满足了不同的地区对于网络的需求 那现在, 北京地区已经拿到了属于自己的 IP 网段 140.0.0.0/16, 其中可用主机数为 65534, 那么北京地区的网络应该如何规划呢? 这里我们可以继续使用 VLSM 对北京的网段进一步子网划分
140.0.0.0/24 朝阳区
140.0.1.0/24 海淀区
140.0.2.0/24 西城区
140.0.3.0/24 东城区
......
可以看出来, 这里我们再次对主机位借了 8 位用作网络位, 把北京的网段也划分为了 256 个子网, 实现了北京不同城区的网络需求.
这里我们通过两次的主机借位, 实现了一个 A 类网段的子网划分, 这样的划分方式, 不仅满足了不同地区对网络的需求, 还可以让我们的子网划分具有很好的层次性.
理想条件下, 如果全世界的 IP 地址按照 VLSM 进行重新划分, 在国际层次上, 可以极大的提高国际带宽. 例如一个上面的规划, 中国使用通过划分, 很好的利用好 140.0.0.0/16 网段, 别的国家也如此, 相互之间的路由规则就会简单的多. 但是由于 ipv4 的发布时间过早, 全世界的网络分配相对杂乱, 导致核心路由书写时非常的复杂.
接下来我们再进一步要求, 当朝阳区拿到自己的网段后, 朝阳区也需要分配 IP 地址给自己城区的不同街道或者社区, 我们看看上面的网段 140.0.0.0/24, 前面的三个位置成网络位了, 接下来怎么借位呢? 这里我们不能将思维局限在 IP 地址的十进制表示方式上, 实际 IP 地址为一个 32 位的二进制数 |IP|01001100.00000000.00000000.0000000| |-|-| | 子网掩码 | 11111111.11111111.11111111.00000000| 所以这里朝阳区的 IP 网段地址实际是这样: 01001100.00000000.00000000.0000000 (红色 -->网络位 蓝色 -->主机位)
前面我们一直用十进制表示 IP, 每借一次就借用了八个二进制位, 所以到了这里我们若还要进行子网划分的话, 就需要将这个网段拆分为二进制来进行借位划分.
但需要注意的是, 当以十进制表示 IP 地址时, 我们借一个数字位相当于借了 8 个二进制位, 可划分出的子网段数为 2^8=256 个, 但是当我们换成二进制数表达的时候, 我们借一个二进制位只能划分出两个子网段. 如此一来, 朝阳区的 IP 中还有最后 8 个位置属于主机位, 接着我们再借 4 个位来进行子网划分:
A 社区: 01001100.00000000.00000000.0000 0000 /11111111.11111111.11111111.1111 0000
B 社区: 01001100.00000000.00000000.0001 0000 /11111111.11111111.11111111.1111 0000
C 社区: 01001100.00000000.00000000.0010 0000 /11111111.11111111.11111111.1111 0000
D 社区: 01001100.00000000.00000000.0011 0000 /11111111.11111111.11111111.1111 0000
.......
转为十进制表示:
A 社区: 140.0.0.0/28
B 社区: 140.0.0.16/28
C 社区: 140.0.0.32/28
D 社区: 140.0.0.48/28
这样一来就可以进一步对朝阳区的网段进行子网划分. 但是需要注意的是, 划分以后每个社区的网段只有 4 位主机位, 所以每个社区的可用主机数量为: 2^4-2=14 台 可以看出, 每次对网段的子网划分, 划分出的子网中有两个地址是无法使用的(网段地址和广播地址), 所以使用子网划分的话, 会减少一个网段中的可用主机数量.
这里对上面内容总结一下:
在进行子网划分时候, 我们只能动主机位
对十进制的子网进行划分时, 每借一个数字位就等于借了 8 个二进制位
每个子网中需要注意, 网段地址和广播地址是不可用的地址
一个网段的可划分子网段数: 2^n(n = 划分时借的主机位数)
子网可用主机数的计算方式: 2^n-2(n = 子网主机位数)
开发可变长度子网掩码的想法就是在每个子网上保留足够的主机数的同时, 把一个网分成多个子网时有更大的灵活性. 如果没有 VLSM, 一个子网掩码只能提供给一个网络. 这样就限制了要求的子网数上的主机数.
一个子网划分习题
问: 将 20.1.1.0/24 划分为四个子网, 每个子网网段, 广播地址, 可用 ip 数量
这里为了简写, 我们将前 24 位以十进制位形式书写
- 20.1.1.00 000000
- 20.1.1.00 111111
子网网段: 20.1.1.0/26 广播地址: 20.1.1.63/26
- 20.1.1. 01 000000
- 20.1.1. 01 111111 //64-127
网段: 20.1.1.64/26 广播地址: 20.1.1.127/26
- 20.1.1. 10 000000
- 20.1.1. 10 111111 //128-191
网段: 20.1.1.128/26 广播地址: 20.1.1.191/26
- 20.1.1. 11 000000
- 20.1.1. 11 111111 //192-255
网段: 20.1.1.192/26 广播地址: 20.1.1.255/26
每个子网可用的 ip 数量都为 62(2^6 - 2)
/* 主机位全置 0 为网段, 主机位全置 1 为广播地址, 除了网段和广播地址, 其他皆为可用 IP 地址 */
来源: https://www.cnblogs.com/laoxiajiadeyun/p/9595394.html