IPv6地址系统深入学习指南
📊 IPv6地址核心概念
1. IPv6与IPv4的根本区别
| 特征 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位(4字节) | 128位(16字节) |
| 地址数量 | 约42.9亿 | 3.4×10³⁸(天文数字) |
| 地址表示 | 点分十进制 | 冒号分隔十六进制 |
| 地址空间 | 耗尽 | 近乎无限 |
| 子网掩码 | 必需 | 通常用前缀长度表示 |
2. IPv6地址表示法
十六进制冒号表示法
2001:0db8:85a3:0000:0000:8a2e:0370:7334
压缩规则
-
前导零压缩:每个字段的前导零可以省略
2001:0db8:85a3:0:0:8a2e:0370:7334 -
连续零压缩 :连续的全零字段可用
::表示(只能使用一次)2001:0db8:85a3::8a2e:0370:7334
特殊地址表示
-
全零地址 :
:: -
环回地址 :
::1(相当于IPv4的127.0.0.1)
📋 IPv6地址类型详解
1. 单播地址(Unicast)
全局单播地址(Global Unicast Address)
结构:2000::/3
格式:| 全球路由前缀 | 子网ID | 接口ID |
(48位) (16位) (64位)
示例 :2001:0db8:85a3:1234:5678:9abc:def0:1234
链路本地地址(Link-Local Address)
结构:fe80::/10
特征:只在同一链路上有效,自动生成
示例:fe80::d250:99ff:fe0c:9e2d
生成方式:EUI-64或随机生成
EUI-64生成算法:
-
取MAC地址:
00:11:22:33:44:55 -
中间插入
FF:FE:00:11:22:FF:FE:33:44:55 -
反转第7位:
02:11:22:FF:FE:33:44:55 -
加上前缀:
fe80::0211:22ff:fe33:4455
唯一本地地址(Unique Local Address)
结构:fc00::/7
特征:类似IPv4私有地址,但全球唯一
示例:fd12:3456:789a::1
2. 多播地址(Multicast)
多播地址格式
格式:ffxy::/8
ff:固定前缀
x:标志位(0永久,1临时)
y:范围(1接口,2链路,5站点,8组织,e全局)
重要多播地址
ff02::1 所有节点(链路本地)
ff02::2 所有路由器
ff02::1:ffxx:xxxx 请求节点多播地址
ff05::2 所有路由器(站点本地)
请求节点多播地址
-
由最后24位接口ID生成
-
用于地址解析代替ARP
-
格式:
ff02::1:ffXX:XXXX
3. 任播地址(Anycast)
-
多个设备共享同一地址
-
数据包发送到最近的一个
-
从单播地址池中分配
-
通常用于DNS根服务器、CDN等
🔧 IPv6寻址机制
1. 无状态地址自动配置(SLAAC)
过程:
-
生成链路本地地址
-
发送路由器请求(RS)
-
接收路由器通告(RA)
-
生成全局地址
RA报文关键标志:
-
A位:使用SLAAC
-
O位:使用DHCPv6获取其他配置
-
M位:使用有状态DHCPv6
2. 有状态地址配置(DHCPv6)
过程:
1. 客户端 → DHCPv6服务器:Solicit
2. DHCPv6服务器 → 客户端:Advertise
3. 客户端 → DHCPv6服务器:Request
4. DHCPv6服务器 → 客户端:Reply
3. 重复地址检测(DAD)
过程:
-
接口生成临时地址
-
发送NS消息到对应请求节点多播地址
-
等待响应
-
无响应则地址可用
📁 IPv6子网划分
1. 子网划分原理
IPv6通常使用/64子网:
2001:0db8:85a3:1234::/64
├── 前48位:全球路由前缀
├── 中间16位:子网ID
└── 后64位:接口ID
2. 子网划分实例
原始网络 :2001:db8:1000::/48
| 子网 | 用途 | 地址范围 |
|---|---|---|
| 2001:db8:1000:0000::/64 | 服务器 | 2001:db8:1000:0::1 - 2001:db8:1000:0:ffff:ffff:ffff:ffff |
| 2001:db8:1000:0001::/64 | 用户 | 2001:db8:1000:1::1 - 2001:db8:1000:1:ffff:ffff:ffff:ffff |
| 2001:db8:1000:0002::/64 | 管理 | 2001:db8:1000:2::1 - 2001:db8:1000:2:ffff:ffff:ffff:ffff |
| 2001:db8:1000:ffff::/64 | 预留 | 2001:db8:1000:ffff::1 - 2001:db8:1000:ffff:ffff:ffff:ffff |
计算:16位子网ID = 65536个子网
🌐 IPv6特殊地址详解
1. 未指定地址
::/128
用途:初始化时使用,不能作为目标地址
2. 环回地址
::1/128
用途:本地环回测试
3. IPv4兼容地址
IPv4映射IPv6地址
::ffff:192.168.1.1
格式:::ffff:a.b.c.d
用途:表示IPv4节点
IPv4兼容IPv6地址(已废弃)
::192.168.1.1
4. 6to4地址
2002:V4ADDR::/48
V4ADDR:IPv4地址的十六进制
用途:6to4隧道
示例:2002:c0a8:0101::1(对应192.168.1.1)
5. Teredo地址
2001:0000::/32
用途:NAT穿越
6. 文档地址
2001:db8::/32
用途:文档和示例
7. 丢弃地址
100::/64
用途:黑洞路由
🔄 IPv6地址解析
1. 邻居发现协议(NDP)
取代ARP,包含:
-
路由器发现
-
前缀发现
-
参数发现
-
地址自动配置
-
地址解析
-
下一跳确定
-
邻居不可达检测
-
重复地址检测
-
重定向
2. 地址解析过程
主机A → 多播:NS(目标=ff02::1:ffxx:xxxx)
主机B → 单播:NA(包含自己的MAC地址)
3. ICMPv6消息类型
-
类型133:路由器请求(RS)
-
类型134:路由器通告(RA)
-
类型135:邻居请求(NS)
-
类型136:邻居通告(NA)
-
类型137:重定向
📊 IPv6地址规划示例
企业网络规划
机构前缀:2001:db8:acad::/48
分配方案:
2001:db8:acad:0000::/64 - 基础设施
2001:db8:acad:0001::/64 - 服务器
2001:db8:acad:0002::/64 - 用户VLAN 10
2001:db8:acad:0003::/64 - 用户VLAN 20
2001:db8:acad:0004::/64 - 无线网络
2001:db8:acad:0005::/64 - 访客网络
2001:db8:acad:0006::/64 - 网络设备
2001:db8:acad:0007::/64 - 管理网络
2001:db8:acad:ff00::/56 - 预留
家庭网络规划
ISP分配:2001:db8:1234:abcd::/60
内部分配:
2001:db8:1234:abcd:0000::/64 - 路由器
2001:db8:1234:abcd:0001::/64 - 有线设备
2001:db8:1234:abcd:0002::/64 - 无线设备
2001:db8:1234:abcd:0003::/64 - IoT设备
🎯 学习要点总结
必须掌握的内容
-
地址表示法
-
压缩规则
-
十六进制转换
-
特殊地址记忆
-
-
地址类型
-
单播、多播、任播的区别
-
全局、链路本地、唯一本地地址
-
重要多播地址
-
-
寻址机制
-
SLAAC过程
-
DAD原理
-
EUI-64生成
-
-
子网划分
-
/64子网标准
-
子网ID计算
-
地址空间规划
-
常见考点
-
地址压缩与展开
-
地址类型判断
-
子网划分计算
-
寻址过程描述
-
特殊地址应用场景
实践建议
-
使用在线IPv6计算器练习
-
在虚拟机中配置IPv6网络
-
分析Wireshark抓包中的IPv6流量
-
练习地址规划方案设计
❓ 自测题目
题目1:地址压缩
将以下地址压缩到最短形式:
2001:0db8:0000:0000:0000:ff00:0042:8329
答案 :2001:db8::ff00:42:8329
题目2:地址类型判断
判断以下地址类型:
-
fe80::1 -
ff02::1 -
2001:db8::1 -
fc00::1 -
::1
答案:
-
链路本地单播地址
-
链路本地所有节点多播地址
-
全局单播地址
-
唯一本地地址
-
环回地址
题目3:子网计算
给定网络2001:db8:1000::/48,要划分16个子网:
-
每个子网的前缀长度是多少?
-
第5个子网的地址范围是什么?
答案:
-
/52(48+4=52)
-
2001:db8:1000:4000::/52-2001:db8:1000:4fff:ffff:ffff:ffff:ffff
题目4:EUI-64生成
MAC地址为00:50:56:ab:cd:ef,生成链路本地地址。
答案:
-
插入FF:FE:
00:50:56:ff:fe:ab:cd:ef -
反转第7位:
02:50:56:ff:fe:ab:cd:ef -
加前缀:
fe80::250:56ff:feab:cdef