看懂IPv4+IPv6的子网掩码和子网划分

这段内容因为非常基础,所以会学的比较枯燥,但是,我会把这部分讲的很细,细到整个中文互联网上排名前列的地步,让你快速入门,本文共耗时三天完成,加油吧!

基础常识

IP,全称是 Internet Protocol,是互联网最基础的基础设施之一,OSI 七层模型中的第三层 - 网络层,是网络中设备的唯一标识,用于网络中的寻址和路由转发

IP协议分为 IPv4 和 IPv6,v也就是version(版本)的缩写,4和6则为代数,很直观的命名,简单介绍一下他们俩

IPv4:32 位,4 段十进制数字(例:198.18.231.7),总数约 43 亿个地址(2的32次方),用网络号 + 主机号构成

IPv6:128 位,8 组 4 位十六进制数字(例:fd01:0db8:85a3:057e:0114:0514:1919:0810),总数为 2 的128次方,移除了广播,引入组播和任播

IPv6 简化规则
1.省略前导零,比如:fd01:0db8:: → fd01:db8::
2.连续的零段用双冒号替代,只能出现一次,
比如 fd01:0db8:0000:0000:1234:5678:0000:0000 → fd01:db8::1234:5678:0000:0000
或者 fd01:0db8:0000:0000:1234:5678:0000:0000 → fd01:db8:0000:0000:1234:5678::
但绝对不能是fd01:0db8:0000:0000:1234:5678:0000:0000 → fd01:db8::1234:5678::

IP 地址分类

IPv4

说到IPv4地址,我们就不得不提到传统 A/B/C/D/E 类地址,这个你们肯定在各种地方见过,但事实上,我们不需要死记硬背,记得概念即可

  • A 类,二进制起始位 - 0,范围:1.0.0.0 - 126.255.255.255,大型网络
  • B 类,二进制起始位 - 10,范围:128.0.0.0 - 191.255.255.255,中型网络
  • C 类,二进制起始位 - 110,范围:192.0.0.0 - 223.255.255.255,小型网络
  • D 类,二进制起始位 - 1110,范围:224.0.0.0 - 239.255.255.255,多播
  • E 类,二进制起始位 - 1111,范围:240.0.0.0 - 255.255.255.255,保留

常见特殊地址

  • 10.0.0.0/8,A类地址的私有地址
  • 172.16.0.0/12,B类地址的私有地址
  • 192.168.0.0/16,C类地址的私有地址
  • 169.254.0.0/16,APIPA(当没有任何DHCP/手动配置IP的时候,电脑会自动配置)
  • 127.0.0.0/8,是本地回环地址,但应用程序通常更喜欢使用 127.0.0.1

纯文字还是比较吃力,我们看图就知道 A/B/C 类地址基本是是属于对半分再对半分的地步,因为在当时RFC出规定的时候,一定想不到现在计算机的发展程度会成什么样

ipaddr

这一块,我们并不需要记得很死,因为目前的互联网上公网IPv4接近枯竭(仅ARIN还有点实力),所以用途的划分基本上名存实亡,A类地址段内的ISP有很多也只能播一段/24出来,

因为 IPv4 最初是根据A/B/C 类地址进行固定的网络划分的,这叫 Classful Addressing(有类别地址)。例如:A 类地址默认子网掩码是 /8,B 类是 /16,C 类是 /24

但随着 IPv4 地址资源枯竭和网络复杂性上升,这种划分太粗糙且浪费严重,早在上世纪 90 年代中后期就被淘汰了。取而代之的是:无类别地址吗,也就是 CIDR(Classless Inter-Domain Routing)

有了CIDR,可以把一个 A 类地址 10.0.0.0/8 拆成:10.0.0.0/24、10.0.1.0/24、10.0.2.0/24,所以即使你非常有实力分到了一个 1.0.0.0/8 这样的"昔日 A 类大块",你也不会一次性通告整个块

A/B/C 类地址的概念现在主要用于教学与概览,实际网络运行全靠 CIDR,广播 /24 及更大的前缀才是现实规则。

IPv6

IPv6地址就相对很简单,毕竟是新的标准,不像IPv4,大手一挥,想当然地制定了规则,对于IPv6,你需要记得一下这些常见地址

  • 单播地址(Unicast):前缀多数以 2, 3 开头,是互联网上最常见的IPv6地址
  • 任播地址(Anycast):前缀与单播相同,理论来说会连接到最近拥有这个IP的通信节点
  • 多播地址(Multicast):前缀ff00::/8,一般是一对多通信,但日常基本用不到
  • 特殊地址:前缀::1, ::,为本地回环地址,类似于上文的127.0.0.1
  • 本地回环(Link-local address):前缀fe80::/10,是非常重要的地址,没它就没IPv6

常见特殊地址

  • fc00::/7(常用 fd00),唯一本地地址(ULA)
  • ::ffff:0:0/96, IPv4/IPv6 共存环境中用于兼容 IPv4,例如::ffff:192.0.2.128
  • 2001:db8::/32,文档示例地址,专用于文档、教材、示例中说明使用,不可路由
  • 64:ff9b::/96,NAT64 前缀地址,NAT64 机制中自动映射 IPv4 与 IPv6 的中介前缀
本地回环(Link-local address):前缀fe80::/10,非常重要,虽然他只能存在于本地链路,不会经过路由器,所以你隔了个路由器fe80就无法访问了,为什么如此重要呢,因为每个接口都必须有一个 Link-Local 地址,无论是否启用全局 IPv6 地址,他的作用有
------
  • 邻居发现协议(NDP),替代IPv4的 ARP,必须使用 fe80 地址通信
  • 路由器发现(Router Advertisement),也就是我们常说的RA,用 Link-Local 地址发送和接收
  • 自动地址配置(SLAAC), 设备用它与路由器通信,自主生成公网地址
  • OSPFv3 / RIPng / BGP4+ 等协议,多数动态路由协议使用链路本地地址作为邻居连接标识
  • 链路调试:比如 ping 一个设备的 fe80 地址,可以确认本地链路通不通

查询你的IP地址。

既然你已经知道了什么是IP地址,那你想不想知道你的IP属于哪一类IP地址呢

你需要打开CMD(Windows按键+R)输入

ipconfig

或者BASH(Linux)输入

ip addr

是不是就知道了你的IP地址了呢

ipaddr

可以看到我的IP地址就是在上文所述的B类私网的地址空间,那该如何获得公网IP,也就是世界上正在路由且可见的IP地址是多少呢,我们就需要借助公网API的能力

------

我们这里使用ip.sb的API服务作为例子,感谢这些前辈们为我们编写的API,让世界变得更好

你需要打开CMD(Windows按键+R)输入(需要使用Windows 10及以上系统自带的curl)

curl ip.sb

或者BASH(Linux)输入

curl ip.sb
ipaddr

结果如图,你就成功获得了你的公网IP,也就是你连接到的所有网站都认为这个IP地址是你

请注意你的个人隐私,你可以无数次泄露你的内网(私网)IP地址,但是公网IP地址通常带有一个GEO信息,可以大致找到你的城市,区县,村庄/街道,甚至你家大门口,所以请注意不要将你的公网IP泄露给任何人,这会泄露你的大量地理信息,除非你知道你在干什么。
------
如果你获得的地址是上文所述的IPv6地址中的单播地址(Unicast),那也请务必不要泄露,因为IPv6的数量很多,基本上ISP(网络服务提供商)都愿意给你发公网IPv6,IPv6地址的GEO虽然不如IPv4精准,但泄露也很危险,这会泄露你的大量地理信息,除非你知道你在干什么。

子网掩码

好了,休息结束,我们进入到最重要也是比较繁琐的一步了,子网掩码(subnet mask)用于将 IP 地址划分为"网络地址"和"主机地址"两部分,是掌握 IP 网络和子网划分的基础中的基础。下面我尽量会用通俗易懂但又技术准确的方式,给你详细讲清楚子网掩码的工作原理。

很多人看见二进制之类的,就没心思听下去了,但是你既然都看到这了,就看我继续演示吧,我讲的会非常基础,让你绝对能听懂

IPv4的子网掩码和计算

对于IPv4来说,子网掩码是一个 32 位的二进制数,用来标识 IP 地址中哪一部分是网络号,哪一部分是主机号。

但是要理解子网掩码,你必须将十进制数转换为二进制,比如192的二进制为11000000,但1的二进制就是1,这时候你就需要在前面补7个0,因为IP地址是由四个8位的二进制数组成的,中间用点分隔,下文会用到

举个例子:192.168.1.10/24(255.255.255.0),我们把它换算成二进制,你会理解一切

IP 地址(二进制):11000000.10101000.00000001.00001010
IP 地址(十进制):192     .168     .1       .10
------
子网掩码(二进制):11111111.11111111.11111111.00000000
子网掩码(十进制):255     .255     .255     .0
掩码中全是 1 的部分是网络号,0 的部分是主机号,而为什么255.255.255.0可以写成 /24 呢,你可以数上方255.255.255.0换算成的二进制数,你会发现里面有24个1,就是这么简单的原理

------

当我们需要知道一个 IP 地址属于哪个网络,就用它和子网掩码进行按位与运算(AND)。

我们先要知道什么叫与运算(AND)。

举个例子,我们设两个二进制数A和B,进行与运算(下文使用与的数学符号"&")
A	B	A&B
1       1       1
1       0       0
0       1       0
0       0       0
即:A和B两位同时为"1"时,结果才为"1",否则结果为0

------

当我们需要知道一个 IP 地址段的广播地址的时候,IP 与子网掩码相反部分做或运算(OR)。

我们先要知道什么叫或运算(OR)。

举个例子,我们设两个二进制数A和B,进行或运算(下文使用或的数学符号"|")
A	B	A|B
1       1       1
1       0       1
0       1       1
0       0       0
即:A和B两位只要有一个为"1",结果就为"1",否则结果为0

------

IPv4 例题讲解

我们进入例题讲解阶段

注意!你必须理解上文的10进制转2进制的基本守则(每一段都是8位),与(AND/"&")运算法则,或运算(OR/"|")法则,不然你无法理解下文

 

例题一(IP 地址属于哪个网络)

IP 地址:192.168.1.10,子网掩码:/24(255.255.255.0),目的:找出这个 IP 地址属于哪个网络

解:先将他们划算成二进制数,得
IP 地址(二进制):11000000.10101000.00000001.00001010
IP 地址(十进制):192     .168     .1       .10
------
子网掩码(二进制):11111111.11111111.11111111.00000000
子网掩码(十进制):255     .255     .255     .0
------
与运算结果(二进制):11000000.10101000.00000001.00000000
与运算结果(十进制):192     .168     .1       .0

答案已经呼之欲出了吧,没错,192.168.1.10/24 属于网络 192.168.1.0/24

一般来说,比如192.168.1.0/24是标识网络的,所以第一个ip,也就是192.168.1.0,无法使用,如果你敢试试,它就敢失联,同理还有最后一位,在这个例子里是192.168.1.255,至于怎么找到的,为什么,例题二会讲到

例题二(寻找广播地址)

IP 地址号:192.168.1.10,子网掩码:/24(255.255.255.0),目的:找出这个 IP 段的广播地址

解:先将他们划算成二进制数,得
IP 地址(二进制):11000000.10101000.00000001.00001010
IP 地址(十进制):192     .168     .1       .10
------
子网掩码(二进制):11111111.11111111.11111111.00000000
子网掩码(十进制):255     .255     .255     .0
-
!因为我们要求的是广播地址,所以需要把子网掩码变成相反部分,之和相反部分,也就是11111111进行或运算
-
子网掩码(相反二进制):00000000.00000000.00000000.11111111
子网掩码(相反十进制):0       .0       .0       .255
------
因为广播地址 = IP 地址 与 相反的子网掩码 做 或 运算,所以我们只需要
-
00001010 (IP 最后一段) OR(或运算) 11111111 (反掩码最后一段) = 11111111 → 十进制是 255

答案已经很明显了,是192.168.1.255,也就是这个IP段的末位,作为广播地址

为什么广播地址主机位是全 1?因为在网络中,主机位全 1 的地址被系统保留为广播地址,用于向该子网内所有主机发送广播数据包,基本上在任何掩码的网络都是如此

例题三(进阶 - 非典型子网掩码):

IP 地址:192.168.1.19,子网掩码:/28(255.255.255.240),目的:找出这个 IP 地址属于哪个网络

解:先将他们划算成二进制数,得
IP 地址(二进制):11000000.10101000.00000001.00010011
IP 地址(十进制):192     .168     .1       .19
------
子网掩码(二进制):11111111.11111111.11111111.11110000
子网掩码(十进制):255     .255     .255     .240
------
与运算结果(二进制):11000000.10101000.00000001.00010000
与运算结果(十进制):192     .168     .1       .16

你太棒了!没错,192.168.1.19/28 属于网络 192.168.1.16/28

IPv6的子网掩码和计算

对于IPv6来说,IPv6可有128位长,而且她仍然使用CIDR(比如/44, /48, /64),但这里和IPv4不同,因为IPv6数量巨大,所以有前缀这东西的存在

前缀(prefix)是什么呢,前缀就是一个 IPv6 地址中用来表示"网络部分"的那一段位数,用 CIDR 表示法标记。

CIDR 表示法形如:地址/位数(比如fd00::/8),这个 /位数 就是前缀长度,代表这前面多少位是网络地址,后面的部分是主机地址(可以分配给设备)。

对于形如这种/32, /48, /64,这种常见的掩码,我们可以直接从视觉分割,举个例子:fd01:db8::1234:5678:0000:0000/64这是一个含主机地址的完整 IPv6 地址

我们将其完整写出,即fd01:db8:0000:0000:1234:5678:0000:0000/64,
因为IPv6总和为128位,掩码为64,即网络地址和主机地址各占一半,可得
---
   前缀(网络部分)       主机部分
|      64 位       |       64 位       |
fd01:0db8:0000:0000:1234:5678:0000:0000
有时候,前缀也可以表示为地址块:比如fd01:0db8::/64就代表一个地址段
起始地址:fd01:0db8:0000:0000:0000:0000:0000:0000
结束地址:fd01:0db8:0000:0000:ffff:ffff:ffff:ffff
因为掩码是/64,所以后面 64 位是主机地址,可以变化

------

我会在这里列出最简单的,也就是一眼定真的IPv6地址段视觉分割掩码

我们都知道,IPv6有128位,每个冒号都分割16位,那我们可以很快的出如下结论
|16位|16位|16位|16位|16位|16位|16位|16位|
 0000:1111:2222:3333:4444:5555:6666:7777
|16位|                            112位| 即16位前缀(网络地址),112位主机地址,即/16
|   32位  |                        96位| 即32位前缀(网络地址),96位主机地址,即/32
|     48位     |                   80位| 即48位前缀(网络地址),80位主机地址,即/48
|        64位       |              64位| 即64位前缀(网络地址),64位主机地址,即/64
|           80位         |         48位| 即80位前缀(网络地址),48位主机地址,即/80
|             96位            |    32位| 即96位前缀(网络地址),32位主机地址,即/96
|               112位             |16位| 即112位前缀(网络地址),16位主机地址,即/112
此视觉分割掩码表仅辅助你进行简单快速的理解,实际使用中,掩码可能是/8,/40,/44,不太常见,而且可以在公网上路由最低前缀为/48,推荐分配给最终设备的最小分配前缀为/64,/80都不算太常见,因为IPv6真的很多很多

------

IPv6 例题讲解

我们进入例题讲解阶段

注意!你必须理解视觉分割表的含义,不然你很难进行题目计算!

 

例题一(计算IPv6的起始地址和结束地址)

IPv6 前缀:2001:db8:aa10::/44,目的:计算IPv6的起始地址和结束地址

解:把 IPv6 拆成(转换成)每段二进制,得
IPv6 地址(二进制):0010000000000001:0000110110111000:1010101000010000
IPv6 地址(十六进):2001            :0db8            :aa10
------
!我们回想一下上表的内容,每一段是16位,所以
-
IPv6 地址(二进制):0010000000000001:0000110110111000:1010101000010000
                  |       16位      |      16位      |      16位     | = 48位
------
!但我们只需要44位,舍去后面的8位,得
-
IPv6 地址(二进制):0010000000000001:0000110110111000:101010100001
                  |       16位      |      16位      |    12位   | = 44位
-
这就是此网络前缀的二进制部分。
------
!起始地址 = 网络前缀 + 后面全补 0,所以
-
IPv6 地址(二进制):0010000000000001:0000110110111000:1010101000010000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000000
                  |       16位      |      16位      |    12位   |                                          84 位                                          |
IPv6 地址(十六进):2001            :0db8            :aa10            :0000            :0000            :0000            :0000            :0000
-
所以,这段的起始地址为2001:db8:aa10:0000:0000:0000:0000:0000 = 2001:db8:aa10::
------
!结束地址 = 网络前缀 + 后面全补 1,所以
-
IPv6 地址(二进制):0010000000000001:0000110110111000:1010101000011111:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111
                  |       16位      |      16位      |    12位   |                                          84 位                                          |
IPv6 地址(十六进):2001            :0db8            :aa1f            :ffff            :ffff            :ffff            :ffff            :ffff
-
所以,这段的结束地址为2001:db8:aa1f:ffff:ffff:ffff:ffff:ffff

所以,这题的答案已经很明显了,2001:db8:aa10::/44的起始地址为2001:db8:aa10::,结束地址为2001:db8:aa1f:ffff:ffff:ffff:ffff:ffff

当然,这里也是讲的为什么"why"理论,生活中我们并不需要死板的去换算,网络上前辈们写了很多计算器,可以适当去用用,像我这样玩IPv6的,因为摸得次数太多了,我一眼就能看出熟悉的掩码的起始地址和结束地址了

例题一-方法二(用最简单的方法计算)

IPv6 前缀:2001:db8:aa10::/44,目的:计算IPv6的起始地址和结束地址

口诀:每 4 位砍一刀,F 就是最大,0 就是最小

因为当前缀长度不是 16 的倍数时,一定会卡在一个十六进制字符(4 位)中间,而你只需要判断前缀所在的字符,有几位是网络位,剩下的都是主机位,主机位全填 0 → 就是最小地址,主机位全填 1(= F、FF、FFF、FFFF)→ 最大地址

解:/44 = 16 + 16 + 12 位 = 2 个整段 + 第 3 段的前 3 个十六进制字符,而第三段有 1 个主机字符(最后一个)
第 3 段也就是 aa10 → 保留前 3 个字符 aa1
起始:aa10(末尾全写 0)
最大:aa1f(末尾全写 f)

得出起始地址为2001:db8:aa10::,结束地址为2001:db8:aa1f:ffff:ffff:ffff:ffff:ffff,是不是很简单

掌握了这串口诀技巧之后,你算IPv6的速度要比算二进制的要快上不知道多少倍,甚至可以像我一样口算

子网划分

这部分才是最折磨人的地方,很多人学了很久也学不明白,我也摸了很久才摸了个透彻

我们先要知道两个概念,VLSM(Variable Length Subnet Mask)也就是可变长子网划分

还有,SLSM(Same Length Subnet Mask)同长子网划分

字面意思,SLSM即所有子网使用相同的掩码,VLSM则是每个子网可以使用不同的掩码

前者不灵活,容易浪费地址,而且路由聚合困难,后者高度灵活,地址利用率高,但需要精细规划,好,概念部分就到这里,我们直接上题目

注意!你必须理解上文的子网掩码部分,不然你根本无法学会子网划分!

------

IPv4 子网划分例题

例题一(基础子网划分)

给定IP地址192.168.10.0/24,请将其划分为4个等大小的子网,并列出每个子网的:网络地址、子网掩码、可用IP范围、广播地址

解:将地址划分为4个等大小的子网,首先,我们需要从/24扩展他的前缀长度2位(2²=4),得到每个子网的掩码为/26。
子网A:网络地址:192.168.10.0/26,子网掩码:255.255.255.192,可用IP范围:192.168.10.1 - 192.168.10.62,广播地址:192.168.10.63
-
子网B:网络地址:192.168.10.64/26,子网掩码:255.255.255.192,可用IP范围:192.168.10.65 - 192.168.10.126,广播地址:192.168.10.127
-
子网C:网络地址:192.168.10.128/26,子网掩码:255.255.255.192,可用IP范围:192.168.10.129 - 192.168.10.190,广播地址:192.168.10.191
-
子网D:网络地址:192.168.10.192/26,子网掩码:255.255.255.192,可用IP范围:192.168.10.193 - 192.168.10.254,广播地址:192.168.10.255
-
计算过程:每个/26子网有2^(32-26)=2^6=64个地址,其中62个可用地址(排除网络地址和广播地址)。
有人看不懂为什么(2²=4),比如我们要划分成 2² = 4 个子网:那就要从剩下的 8 位主机位中借出 2 位 作为子网位。原来是 /24,借了 2 位主机位 → 变成 /26

例题二(不等子网划分)

给定IP地址172.16.0.0/16,请根据以下需求划分子网:

子网A:需要1000个IP地址,子网B:需要500个IP地址,子网C:需要250个IP地址,子网D:需要100个IP地址,请为每个子网确定合适的子网掩码并列出网络地址。

解:本题使用变长子网掩码(VLSM)来满足不同需求:
-
子网A(需要1000个IP):需要至少1000个IP,最接近的是2^10=1024个IP,因此需要/22子网掩码,
网络地址:172.16.0.0/22,子网掩码:255.255.252.0,可用IP地址:172.16.0.1 - 172.16.3.254(1022个可用IP)
-
子网B(需要500个IP):需要至少500个IP,最接近的是2^9=512个IP,因此需要/23子网掩码
网络地址:172.16.4.0/23,子网掩码:255.255.254.0,可用IP地址:172.16.4.1 - 172.16.5.254(510个可用IP)
-
子网C(需要250个IP):需要至少250个IP,最接近的是2^8=256个IP,因此需要/24子网掩码
网络地址:172.16.6.0/24,子网掩码:255.255.255.0,可用IP地址:172.16.6.1 - 172.16.6.254(254个可用IP)
-
子网D(需要100个IP):需要至少100个IP,最接近的是2^7=128个IP,因此需要/25子网掩码
网络地址:172.16.7.0/25,子网掩码:255.255.255.128,可用IP地址:172.16.7.1 - 172.16.7.126(126个可用IP)
一般来说,不等子网划分时候,简易按照从需求量最大排序,排到需求量最小,这样造成的浪费会很小很小

例题三(进阶:大型VLSM应用)

STE Network并不存在的数据中心大楼内有一个10.0.0.0/8的地址空间,需要按以下要求划分:

中心机房:5000个主机,分部机房1:2000个主机,分部机房2:800个主机,分部机房3:300个主机,点对点链路:2个主机(共需3个链路)请给出每个网络的地址分配方案。

解:本题照样使用VLSM方法进行分配,按主机数量从大到小排序:
-
中心机房(5000个主机):需要至少5000个IP,最接近的是2^13=8192个IP,因此需要/19子网掩码
网络地址:10.0.0.0/19,子网掩码:255.255.224.0,可用IP地址:10.0.0.1 - 10.0.31.254(8190个可用IP)
-
分部机房1(2000个主机):需要至少2000个IP,最接近的是2^11=2048个IP,因此需要/21子网掩码
网络地址:10.0.32.0/21,子网掩码:255.255.248.0,可用IP地址:10.0.32.1 - 10.0.39.254(2046个可用IP)
-
分部机房2(800个主机):需要至少800个IP,最接近的是2^10=1024个IP,因此需要/22子网掩码
网络地址:10.0.40.0/22,子网掩码:255.255.252.0,可用IP地址:10.0.40.1 - 10.0.43.254(1022个可用IP)
-
分部机房3(300个主机):需要至少300个IP,最接近的是2^9=512个IP,因此需要/23子网掩码
网络地址:10.0.44.0/23,子网掩码:255.255.254.0,可用IP地址:10.0.44.1 - 10.0.45.254(510个可用IP)
-
点对点链路(每个需要2个主机,共5个链路):
每个链路需要4个IP(包含网络地址和广播地址),因此使用/30子网掩码
链路1:10.0.46.0/30(可用IP:10.0.46.1 - 10.0.46.2)
链路2:10.0.46.4/30(可用IP:10.0.46.5 - 10.0.46.6)
链路3:10.0.46.8/30(可用IP:10.0.46.9 - 10.0.46.10)
至此,你已经知道了如何对IPv4进行子网划分,虽然很多时候会有很多损耗,但这是无法避免的,因为需求就是这样,除非你自己继续细分掩码,不过毕竟是内部地址,没必要太过于精打细算,而且我们这里仅仅讲解VLSM和SLSM,有很多内部路由协议可以把IP地址的利用率拉满,但我这里先不做讲解

------

IPv6 子网划分例题

例题一(基础子网划分)

给定IPv6前缀2001:db8::/48,请将其划分为16个等大小的子网,并列出前4个子网的:网络前缀,前缀长度

解:将2001:db8::/48划分为16个等大小的子网,需要新增4位子网位(2^4=16)
因此前缀从/48变为/52,所以得到前4个子网为:
-
子网1:2001:db8:0:1000::/52
子网2:2001:db8:0:2000::/52
子网3:2001:db8:0:3000::/52
子网4:2001:db8:0:4000::/52
......
你如果熟练掌握了上文,IPv6子网掩码部分的计算口诀的话,你应该能很快得出答案

例题二(进阶:层次化子网划分)

STE Network获得了RIPE分配的2001:db8:e57e::/48的IPv6地址空间,请按以下层次进行子网划分:

4个分部机房,每个分部机房有16栋大楼。每个大楼有4个楼层,每个楼层有256个终端设备,请给出分配方案及每个层次的前缀长度,具体前缀只写四个)。

解:分层子网划分2001:db8:e57e::/48:
4个分部机房需要2位(2^2=4),前缀从/48变为/50
每个分部机房16栋大楼需要4位(2^4=16),前缀从/50变为/54
每栋大楼4个楼层需要2位(2^2=4),前缀从/54变为/56
每个楼层256个终端需要8位(2^8=256),前缀从/56变为/64
-
因此:
-
分部机房:/50(例如:2001:db8:e57e::/50,2001:db8:e57e:4000::/50,2001:db8:e57e:8000::/50,2001:db8:e57e:c000::/50)
大楼层:/54(例如:2001:db8:e57e::/54,2001:db8:e57e:400::/54,2001:db8:e57e:800::/54,2001:db8:e57e:c00::/54......)
楼层层:/56(例如:2001:db8:e57e::/56,2001:db8:e57e:100::/56,2001:db8:e57e:200::/56,2001:db8:e57e:300::/56......)
终端层:/64(例如:2001:db8:e57e::/64,2001:db8:e57e:1::/64,2001:db8:e57e:2::/64,2001:db8:e57e:3::/64......)
虽然公网上约定俗成的最小路由前缀为/48,但请记住推荐给最终用户/设备的最小子网是/64。