基础常识
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出规定的时候,一定想不到现在计算机的发展程度会成什么样

这一块,我们并不需要记得很死,因为目前的互联网上公网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地址了呢

可以看到我的IP地址就是在上文所述的B类私网的地址空间,那该如何获得公网IP,也就是世界上正在路由且可见的IP地址是多少呢,我们就需要借助公网API的能力
------
我们这里使用ip.sb的API服务作为例子,感谢这些前辈们为我们编写的API,让世界变得更好
你需要打开CMD(Windows按键+R)输入(需要使用Windows 10及以上系统自带的curl)
curl ip.sb
或者BASH(Linux)输入
curl ip.sb

结果如图,你就成功获得了你的公网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。