1. IPv6 特征
- IPv6 地址空间大,由 IPv4 的 32 位扩展到 128位
- 支持分层结构,便于寻址和路由聚合,提高路由选路能力
- 不需要 NAT 协议,可以实现端到端的安全通信
- 扩展了组播和任意播地址
- 相比 IPv4,报头格式进行了简化
- 加强了扩展报头和 Option 的支持a
- 安全性更高,IPv6 报头支持认证(IPSec)
- 对移动网络更好的支持
- IPv6 没有定义广播地址,由组播地址代替
- 更好的支持流标签功能(Qos)。与 IPv4 定义一组流(五元组)相同
- 支持无状态地址配置(只需要分配 IPv6 地址前缀,主机号可以自动生成)
- 地址格式
- 每一段前的 0 可以被省略
- 多个段连续的 0 可以被 “ :: “ 省略,” :: “只能使用一次
- 冒号分 16 进制(一共 8 段,每段由 4 个 16 进制表示)
- 地址分类
如果地址的前三 bit 不是 000,则接口标识必须为 64 位。如果前三 bit 是 000,则没有限制
1)IPv6 地址结构
- 网络前缀:n 比特(相当于 IPv4 中网络部分)
- 接口标识:128 - n 比特(相当于 IPv4 中主机部分)
- 用来代表一个接口,目的地址为单播地址的报文会被送到被标识的接口
- IPv6 中一个接口可以拥有多个 IPv6 地址
特殊单播地址
用于自动生成接口地址(接口 ID 部分需要为 64位),用于无状态配置
接口标识部分为 48 位 MAC 地址+插入的
FFFE
全球唯一的和全球可路由的地址,可以作为业务网络(用于 IPv6 Internet),相当于 IPv4 的公网地址
- 全球路由前缀:「前缀至少 48bit」,目前已分配的前 3bit 均为 2xxx::/3(001)
- 子网:用子网来构建本地网络(64bit - 全球路由前缀),与 IPv4 中的子网号作用类似
- 接口标识:用来标识一个设备,与 IPv4 中的主机位作用类似
- /48 是 BGP 最小网段
- /56 是局部多子网网段
-
4)链路本地地址(Link-Local)
前10位固定为「
**FE80::/10**
(1111 1110 10)」- 只能存在于一个链路的两端,不能跨越,TTL = 1
- 每个 IPv6 接口都必须具备一个链路本地地址
- 一个链路上不能相同,一个设备上多个接口可以相同
- 在启动 IPv6 协议的节点上,专门用来和相同链路上的其他主机通信,不能作为业务网络
- 可以作为路由协议的源地址、发现邻居、无状态配置等
可以自动生成也可以手动配置,采用自动生成,后 64 位会采用 EUI-64 的算法
前7位固定为「
**FC00::/7**
(1111 110)、**FD00::/8**
(1111 1101)」- 代替了站点本地地址的功能,永远不会与全球 IPv6 的 Internet 进行通信的地址
- 类似于 IPv4 组播地址,用于标识多个接口,在 IPv6 中组播地址代替了 IPv4 的广播地址
- 目的地址为组播地址的报文会被送到被标识的所有接口
- 只有加入相应组播组的设备才会侦听发往该组播地址的报文
- 由固定位、前缀(Flag)、范围(Scope)字段以及保留位、组播ID组成
IPv6 预定义组播地址 | IPv4 预定义组播地址 | 组播组 |
---|---|---|
节点本地地址 | ||
FF01::1 | 224.0.0.1 | 所有节点地址 |
FF01::2 | 224.0.0.2 | 所有路由器地址 |
链路本地范围 | ||
FF02::1 | 224.0.0.1 | 所有节点地址 |
FF02::2 | 224.0.0.2 | 所有路由器地址 |
FF02::5 | 224.0.0.5 | 所有 OSPF 路由器 |
FF02::6 | 224.0.0.6 | 所有 OSPF DR/BDR 路由器 |
FF02::9 | 224.0.0.9 | 所有 RIPv2 路由器 |
FF02::D | 224.0.0.13 | 所有 PIM 路由器 |
站点本地范围 | ||
FF05::2 | 224.0.0.2 | 所有路由器 |
全局 | ||
FF0x::101 | 224.0.1.1 | NTP 协议 |
预留的组播地址
- Node-Loacl: 只能是本地生效
- Link-Loacl: 只能在一条链路上生效,不能跨越
- ::/0(0:0:0:0:0:0:0:0/0): 表示默认路由,与 IPv4 中 0.0.0.0 的作用相同
2)请求节点组播地址(Solicited-Node)
- 每个节点必须分配给单播和任播的一个组播地址(Link-Local 地址也会生成),是可以自动生成的
- 用于地址 DAD 重复检测和 NDP 协议(NDP 相当于 IPv4 的 ARP),可以冲突(不会受到影响)
- 前缀固定:「
**FF02::1:FF**``**/104**
,后 24 位是 IPv6 单播地址的后 24 位拷贝过来的」
子网路由器任播地址,由 n bit 子网前缀标识子网,其余用 0 填充
- 任播地址表示在不同节点标识一组网络接口,是一个特殊的单播地址,本质是服务,只能作为目的地址使用,并且不做冲突检测
- 互联网的设备可以给多台相同 IPv6 地址的设备发送报文,需要在配置时指明是任播地址(anycast)
- 目标地址是任播地址时,路由器会将数据包发送给最近的一个网络接口(最近的一台设备)
- 子网路由器任播地址是已经定义好的一种任播地址,用于节点需要和远端子网上所有设备中的一个通信时使用
每个适配器可以分配多个 IPv6 地址,IPv6 主机至少拥有两个可以接收数据包的地址[用于接收本地链路流量的地址和可路由的地址],此外还会侦听组播流量
1)主机的 IPv6 地址
- 链路本地地址
- 单播地址(可以是 1 个或多个唯一本地地址或全球单播地址)
- FF01::1
- FF02::1
- 每个单播地址的请求节点多播地址
- 已加入的多播地址
-
2)路由器的 IPv6 地址
链路本地地址
- 单播地址(可以是 1 个或多个唯一本地地址或全球单播地址)
- FF01::1
- FF01::2
- FF02::1
- FF02::2
- 每个单播地址的请求节点多播地址
- 已加入的多播地址
- Loopback 地址(::1)
6. IPv6 Header Message
1)基本 Header
- IPv6 的报头字段更少(比较简洁)
- 基本报头有 8 个字段,固定大小 「40 字节」,每个 IPv6 数据包都必须包含报头
- 基本报头提供报文转发的基 本信息,会被转发路径上的所有路由器解析
- IPv6 在标准头部没有分片字段,分片字段移到了扩展头部
IPv6 Header Message 格式解析
- Version:版本
- Traffic Class:流分类
- Flow Label:流标签
- Payload Length:荷载长度。上层的总长度(包含 IPv6 扩展 Header)
- Next Header:下一个报头。承载的什么协议类型
- Hop Limit:跳数限制
- Source Address:源 IPv6 地址
Destination Address:目的 IPv6 地址
2)扩展 Header
设备转发时是根据基本报头中 Next Header 值来决定是否处理扩展报头,并不是所有的扩展报头都需要被转发设备查看和处理
扩展报头是可选的,有需要扩展头部对应的功能才会进行添加
- 原 IPv4 Options 字段放入扩展报头
- IPv6 包含 0 个、1 个或多个扩展报头
- 固定为 8 字节长度的倍数
- Next Header:下一个报头(8bit),与基本报头的作用相同
- Extension Header Length:扩展报头长度(8bit),不包含 Next Header 长度
- Extension Header Data:扩展报头数据(可变长 bit),是扩展报头的内容(一系列 Options 和填充字段)
- 除了目的选项扩展报头可以出现 1-2 次,其他扩展报头只能出现一次
- 当超过一种扩展报头用在同一个分组时,必须按照以下顺序出现(并不一定所有都必须有):
- IPv6基本报头
- 逐条选项扩展报头
- 目的选项扩展报头
- 路由扩展报头
- 分段扩展报头
- 认证扩展报头
- 封装安全有效载荷扩展报头
- 目的选项扩展报头
- 上层协议数据报文
| 报头类型 | Next Header 字段值 | 描述 |
| —- | —- | —- |
| 逐跳选项报头 | 0 | 该选项主要用于为在传送路径上的每跳转发指定发送参数,传送路径上的每台中间节点都要读取并处理该字段,应用场景:
- 用于巨型载荷
- 用于路由器提示
- 用于资源预留
| | TCP | 6 | / | | UDP | 17 | / | | 封装 IPv6 头部 | 41 | / | | 路由报头 | 43 | 路由报头和 IPv4 的 Loose Source and Record Route 选项类似,该报头能够被 IPv6 源节点用来强制数据包经过特定的路由器 | | 分段报头 | 44 | 同 IPv4 一样,IPv6 报文发送也受到 MTU 的限制。当报文长度超过 MTU 时就需要将报文分段发送,而在 IPv6 中,分段发送使用的是分段报头 | | 封装安全净载报头 | 50 | 该报头由 IPSec 使用,提供认证、数据完整性以及重放保护和 IPv6 数据报的保密,类似于认证报头 | | 认证报头 | 51 | 该报头由 IPSec 使用,提供认证、数据完整性以及重放保护。它还对 IPv6 基本报头中的一些字段进行保护 | | ICMPv6 | 58 | / | | 没有下一个头部 | 59 | / | | 目的选项报头 | 60 | 目的选项报头携带了一些只有目的节点才会处理的信息。目前,目的选项报头主要应用于移动 IPv6 |
7. IPv6 和 IPv4 地址的对应关系
IPv4 | IPv6 |
---|---|
主类地址分类 | |
组播地址 224.0.0.0/4 | |
广播地址 | |
未知地址 0.0.0.0 | |
环回地址 127.0.0.1 | |
公网地址 | |
私有地址 10.0.0.0/8 172.16.0.0/16 192.168.1.0/24 |
|
自动专用IP寻址 |
类型 | IPv6 预定义地址 | IPv4 预定义地址 |
---|---|---|
主类地址 | √ | √ |
广播地址 | × | √ |
组播地址 | FF00::/8 | 224.0.0.0/4 |
未知地址 | :: | 0.0.0.0 |
环回地址 | ::1/128 | 127.0.0.1 |
私网地址 | FE00::/7 FD00::/7 |
10.0.0.0/8 172.16.0.0/16 192.168.1.0/24 |
公网地址 | 全球单播地址 | 除私网地址和保留地址外的所有地址 |
IP 寻址 | 链路本地地址 | 自动专用IP寻址 |