(参考华为官网资料)
IPv6简介
-
随着Internet规模的扩大,IPv4地址空间已经消耗殆尽。
-
CIDR和NAT是临时性解决方案,并都有各自的弊端。
-
IPv6支持几乎无限的地址空间
-
IPv6使用了全新的地址配置方式,使得配置更加简单
-
IPv6采用全新的报文格式,提高了报文处理的效率、安全性、更好支持QoS
IPv4地址采用32bit标识
IPv6地址采用128bit标识
IPv6格式
fe80:0000:0000:0000:2e9d:1eff:fe4a:3e71
- IPv6地址长度为128bit
- 每16bit分一段
- 每段由4个十六进制数表示,并用冒号隔开
- 一个IPv6地址由IPv6地址前缀和接口ID组成
- IPv6地址前缀用来标识IPv6网络
- 接口ID用来标识接口
IPv6地址压缩格式
fe80:0000:0000:0000:2e9d:1eff:fe4a:3e71 fe80:0:0:0:2e9d:1eff:fe4a:3e71 fe80:0:2e9d:1eff:fe4a:3e71
- 每一组中的前导‘0’都可以省略
- 地址中包含的连续全为0的组,可以用双冒号‘::’ 来代替
IPv6基本报头
面在IPv4报头的基础上,增加了流标签域,去除了一些冗余字段,使报文头的处理更为简单、高效。
- version:版本号,长度4bit
- traffic class:流类别,长度8bit。
- 表示IPv6数据报文的类或优先级,主要应用于QoS。
- flow label:流标签,长度20bit。
- 用于区分实时流量。
- 可以理解为特定应用或进程的,来自某一源地址发往一个或多个目的地址的连续单播、组播或任播报文。
- payload length:有效载荷长度,长度16bit。
- 紧跟IPv6报头的数据报文的其他部分。
- next header:下一个报头,长度8bit。
- 紧跟在IPv6报头后面的第一个扩展头(如果存在)的类型。
- hop limit:跳数限制,长度8bit。
- 每经过一个路由,改数值减去1;
- 当该字段的值为0时,数据报文将被丢弃。
- source address:源地址,长度128bit。
- destination address:目的地址,长度128bit。
IPv6扩展报头
是跟在IPv6基本报头后面的可选报头,可以有一个或多个。
IPv6支持多个扩展报头,这些报头必须按照以下顺序出现:
- IPv6基本报头
- 逐跳选项扩展报头
- 目的选项扩展报头
- 路由扩展报头
- 分片扩展报头
- 认证扩展报头
- 封装安全有效载荷扩展报头
- 目的选项扩展报头
- 上层协议数据报头
每个扩展报头在一个报文中最多只能出现一次(除了目的选项扩展报头)。
目的扩展报头在一个报文中最多也只能出现两次。
- 一次在路由扩展报头之前
- 一次在上层协议数据报头之前
IPv6地址分类
2000::/3 全球单播地址(相当于公网地址)
2001:0DB8::/32 保留地址
FE80::/10 链路本地地址
FF00::/8 组播地址
::/128 未指定地址(相当于0.0.0.0)
::1/128 换回地址(相当于127.0.0.1)
单播地址
- 全球单播地址:2000::/3
- 前三位固定值为001,(2000-3fff)
- 全球路由前缀(48bit) + 子网标识(16bit) + 接口标识(64bit)
- 链路本地地址
- 前十位固定值1111111010
- 1111111010(10bit) + 0(54bit) + 接口标识(64bit)
组播地址
- 所有IPv6组播地址都是以FF开始
- IPv6为需要使用组播发送数据的协议预留了一些组播组
- 前8位固定值为11111111
- 前缀(8bit) + 标志字段(4bit) + 范围字段(4bit) + 组播组ID(112bit)
- FF02::1 链路本地范围所有节点
- FF02::2 链路本地范围所有路由器
任播地址
- 任播地址用来标识一组网络接口,在给多个主机或者节点提供相同服务时提供冗余和负载分担。
- 目的地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
- 一台设备可以给多台具有相同地址的设备发送报文。