0. 课件来源
1. IPv4 地址回顾
1.1 有类地址分类
| 类别 | 二进制前缀 | 地址范围 | 默认掩码 | 用途 |
|---|---|---|---|---|
| A类 | 0xxxxxxx | 1.0.0.0 - 126.255.255.255 | /8 | 大型网络 |
| B类 | 10xxxxxx | 128.0.0.0 - 191.255.255.255 | /16 | 中型网络 |
| C类 | 110xxxxx | 192.0.0.0 - 223.255.255.255 | /24 | 小型网络 |
| D类 | 1110xxxx | 224.0.0.0 - 239.255.255.255 | — | 组播 |
| E类 | 1111xxxx | 240.0.0.0 - 255.255.255.255 | — | 保留 |
1.2 特殊地址
| 地址 | 用途 |
|---|---|
0.0.0.0/8 | 本网络(未分配) |
127.0.0.0/8 | 本地回环 |
169.254.0.0/16 | 链路本地(APIPA) |
255.255.255.255 | 有限广播 |
224.0.0.0/4 | 组播地址 |
1.3 CIDR 与地址聚合
VLSM(可变长子网掩码):网络不断分割,变小,提高地址利用率。 Supernet(超网):子网不断聚合,变大,减少路由表条目。
/24 → /25 → /26 VLSM:子网划分
/24 ← /25 ← /26 Supernet:路由聚合1.4 地址的拓扑含义
IPv4 地址是网络与拓扑的融合:
interface g0/0/0
ip address 1.1.1.1 255.255.255.01.1.1.0/24= 目的网段1.1.1.1= 标识该网段上的本节点
Destination/Mask Proto Pre Cost Flags NextHop Interface
3.3.3.0/24 Direct 0 0 D 1.1.1.1 g0/0/02. IPv6 地址详解
2.1 表示与简化
IPv6 地址 128 位,分 8 段,每段 16 位(4 个十六进制):
完整:2001:0001:0000:0000:f000:0000:0000:0000
省略首部0:2001:1:0:0:f000:0:0:0
:: 压缩连续0:2001:1:0:0:f000::规则:
- 每段首部的
0可省略,尾部不可省 - 连续多段
0可用::代替,只能出现一次
2.2 特殊地址
| 地址/前缀 | 含义 |
|---|---|
::/128 | 未指定地址 |
::1/128 | 本地回环 |
fe80::/10 | 链路本地(Link-Local) |
fc00::/7 | 唯一本地地址(ULA,类似 IPv4 私网) |
2000::/3 | 全球可聚合单播地址(AGUA) |
ff00::/8 | 组播地址 |
2.3 地址分类
2000::/3Link-Local
fe80::/10ULA
fc00::/7ff00::/8ff02::1 本链路所有主机ff02::2 本链路所有路由器ff02::5 OSPFv3 设备 就近原则路由
不能作为源地址
不进行 DAD
请求节点组播地址(Solicited-Node):
ff02::1:ffxx:xxxx (后24位 copy 自单播地址后24位)
2001:10:1:12::2 → ff02::1:ff00:2
2011:172:16:1::2 → ff02::1:ff00:2 (两个地址可能加入同一组播组)2.4 EUI-64 地址生成
MAC 地址(48位)中间插入 FFFE,并翻转 U/L 位(第7位):
MAC: 00e0-fcc5-6be9
插入 FFFE: 00e0-fcff-fec5-6be9
翻转U/L位: 02e0-fcff-fec5-6be9
EUI-64: 02E0:FCFF:FEC5:6BE92.5 配置方式汇总
ipv6
#
interface g0/0/0
ipv6 enable
ipv6 address 2001:10:1:12::1/64 # 手工指定 global
ipv6 address 2003::/64 eui-64 # EUI-64 生成 global
ipv6 address fe80::1 link-local # 手工指定 link-local
ipv6 address auto link-local # 自动生成 link-local
ipv6 address 2001:172:16:12::1/64 anycast # 任播地址3. NDP 邻居发现协议
NDP(Neighbor Discovery Protocol)借助 ICMPv6 报文实现 IPv6 中 ARP 的功能。
3.1 报文类型
| Type | 名称 | 功能 |
|---|---|---|
| 133 | RS(Router Solicitation) | 路由器请求 |
| 134 | RA(Router Advertisement) | 路由器通告 |
| 135 | NS(Neighbor Solicitation) | 邻居请求 |
| 136 | NA(Neighbor Advertisement) | 邻居通告 |
| 137 | Redirect | 重定向 |
NDP 五大功能:DAD 重复地址检测、ND 邻居发现、自动配置、MTU 路径发现、Redirect 重定向。
3.2 DAD 重复地址检测
接口配置任何 IPv6 单播地址都要执行 DAD。
Link-Local 地址 DAD:
接口 up 后,link-local 地址标记为 [tentative](试验地址)
发送 NS Type 135:
sip = ::(未指定地址)
dip = 自己的请求节点组播地址(ff02::1:ff00:1)
target = fe80::1- 无冲突:无回应,去掉 tentative 标记,正常转发
- 有冲突:对端回复 NA Type 136
NA Type 136:
sip = 冲突的 link-local 地址
dip = ff02::1(本链路所有主机)本端收到后,接口标记从 [tentative] → [duplicate]。
Global 地址 DAD:Link-Local DAD 完成后,逐个对 global 地址执行 DAD。
3.3 邻居发现(替代 ARP)
IPv4 ARP 过程:
ARP Request 广播:
smac=AR1 dmac=FF:FF:FF:FF:FF:FF
sender ip=10.1.12.1 target ip=10.1.12.2
ARP Reply 单播:
smac=AR2 dmac=AR1
sender ip=10.1.12.2 target ip=10.1.12.1IPv6 NDP 过程:
ping ipv6 fe80::2
1. 查路由表,有路由则转发
2. 封装:sip=fe80::1 dip=fe80::2 smac=AR1 dmac=?
3. 查 NDP 表无记录,发送 NS Type 135:
sip=fe80::1
dip=ff02::1:ff00:2(对方请求节点组播)
target=fe80::2
option: source mac=AR1
4. AR2 收到:检查 DMAC 是否在侦听列表 → 检查 target 是否为本接口地址
→ 更新 NDP 表 → 回复 NA Type 136:
sip=fe80::2 dip=fe80::1 smac=AR2 dmac=AR1
target=fe80::2
option: target mac=AR2
5. AR1 收到:检查 DMAC → 更新 NDP 表3.4 邻居不可达检测状态机
| 状态 | 说明 |
|---|---|
| Empty | 无缓存条目 |
| Incomplete | 已发 NS,等待 NA |
| Reachable | 邻居可达,确认生效 |
| Stale | 可达时间超时,未知是否仍可达 |
| Delay | Stale 状态下需向该邻居发数据,等待 5 秒 |
| Probe | Delay 超时未收到数据,发送单播 NS 探测 |
4. IPv6 自动配置
4.1 无状态自动配置(SLAAC)
路由器周期性(200~600 秒)发送 RA 报文,主机根据 RA 中的 prefix + EUI-64 自动生成地址。
RA 报文关键字段:
sip = 路由器 link-local 地址
dip = ff02::1(本链路所有主机)
prefix = 2001:10:1:12::/64
preferred lifetime = 7天(可用于收发)
valid lifetime = 30天(仅可用于接收)触发更新(RS/RA):主机刚启动时不等待周期 RA,主动发送 RS,路由器立即回复 RA。
# 主机配置
interface g0/0/0
ipv6 enable
ipv6 address auto global # 无状态自动生成 global 地址
ipv6 address auto link-local # 自动生成 link-local# 路由器配置
interface g0/0/0
undo ipv6 nd ra halt # 使能 RA 功能4.2 有状态自动配置(DHCPv6)
DHCPv6 可提供地址、DNS、SIP、NIS 等额外信息,但默认不分配网关。
# DHCPv6 Server
ipv6
dhcp enable
#
dhcpv6 pool A
address prefix 3FFF::/64
dns-server 3FFF::1
#
interface g0/0/0
dhcpv6 server A# DHCPv6 Client
interface g0/0/0
ipv6 address auto dhcp4.3 无状态 + 有状态组合(最佳实践)
通过 RA 中 M/O flag 控制地址获取方式:
等价于"有状态地址分配"
DNS、SIP、NIS 等通过 DHCPv6 获取
等价于"无状态地址 + 有状态其他信息"
最佳实践:M=0, O=1(地址无状态,其他信息有状态)
# Server 配置
interface g0/0/0
dhcpv6 server A
ipv6 nd autoconfig other-flag # O 置位 = 1,其他信息走 DHCPv6
ipv6 nd autoconfig managed-address-flag # M 置位 = 0,地址走 SLAAC# Client 配置
interface g0/0/0
dhcpv6 client information-request # 使能 DHCPv6 无状态
ipv6 address auto global default # SLAAC 生成地址,同时生成默认路由注意:默认
M=0, O=0,全部无状态。若M=1, O=1,全部走有状态 DHCPv6。
4.4 DHCPv6 4-way 与 2-way
4-way(Server 多台时默认,用于选择 Server):
Client Server
| Solicit →|
|← Advertise |
| Request →|
|← Reply |2-way(Server 只有一台时,降低开销):
Client Server
| Solicit →|
|← Reply |# Server 侧启用 rapid-commit
interface g0/0/0
dhcpv6 server A rapid-commit
# Client 侧启用 rapid-commit
interface g0/0/0
ipv6 address auto dhcp rapid-commit5. IPv4 与 IPv6 核心对比
表示方式:点分十进制
地址空间:2³² ≈ 43 亿
广播:支持
地址解析:ARP Request/Reply
重复地址检测:免费 ARP
自动配置:DHCPv4
地址与拓扑:融合
最小 MTU:68 字节
报头大小:20 字节
表示方式:冒号分十六进制
地址空间:2¹²⁸ ≈ 3.4×10³⁸
广播:不支持(用组播代替)
地址解析:NDP(NS/NA)
重复地址检测:ICMPv6 NS/NA
自动配置:SLAAC + DHCPv6
地址与拓扑:分离
最小 MTU:1280 字节
报头大小:40 字节
6. 报文结构
6.1 IPv4 Header(20~60 字节)
6.2 IPv6 Header(固定 40 字节)
6.3 ICMPv6 报文结构
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Message Body +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+常见 Type 值:
| Type | 含义 |
|---|---|
| 128 | Echo Request |
| 129 | Echo Reply |
| 133 | Router Solicitation (RS) |
| 134 | Router Advertisement (RA) |
| 135 | Neighbor Solicitation (NS) |
| 136 | Neighbor Advertisement (NA) |
| 137 | Redirect |
