IPV6相较于IPV4有如下几点优点
1、“无限”地址空间,地址长度为128比特、海量的地址空间,满足物联网等新兴业务,有利于业务演进及扩展。
2、层次化的地址结构 ,相较于IPV4地址,IPV6地址的分配更加规范,利于路由聚合、路由快速查询。
3、即插即用 IPv6支持无状态地址自动配置(SLAAC),终端接入更简单,、
4、简化的报文头部 简化报文头部,提高效率,通过扩展包头支持新应用,利于路由器等网络设备的转发处理,降低投资成本,
5、安全特性。IPSec、真实源地址认证等保证端到端安全;避免NAT破坏端到端通信的完整性。(NAT(地址转换技术)详解 - 南极山 - 博客园 (cnblogs.com)
6、移动性 对移动网络实时通信有较大改进,整个移动网络性能有比较大的提升。
7、增强的QOS特性, 额外定义了流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源。
8、可拓展性强,IPv6的扩展属性报文头部,并不是主数据包的一部分,但是在必要的时候、这些扩展头部会插在IPV6基本头部和有效载荷之间,能够协助IPV6完成加密功能、移动功能、最优路径选路、QOS等,并可提高报文转发效率。
IPV6包头由一个IPV6基本包头(必须存在)和多个扩展包头(可能不存在)组成。
基本包头提供报文转发分担基本信息,会被转发路径上的所有设备解析。
扩展包头
IPV6将这些options从IPV6基本包头中剥离,放到了扩展包头中,扩展包头被置于IPV6基本包头和上层协议数据单元之间。一个IPV6报文可以包含0个、1个或多个扩展包头,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展包头。与IPV4不同,IPV6扩展头长度任意,不受40byte限制,这样便于日后扩展新增选项。这一特征加上选项的处理方式使得IPV6选项能得以真正的利用。但是为了提高处理选项头和传输层协议的性能,扩展包头总是8 byte长度的整数倍。
当使用多个扩展包头时,前面包头的next header字段指明下一个扩展包头的类型,这样就形成了链状的包头列表。
当超过一种扩展包头被用在同一个IPV6报文里时,包头必须按照下列顺序出现:
1、逐跳选项包头:主要用于为在传送路径上的每跳转发在指定发送参数,传送路径上的每台中间节点都要读取并处理该字段。
2、目的选项包头:携带了一些只有目的节点才会处理的信息。
3、路由包头:IPV6源节点用来强制数据包经过特定的设备。
4、分段包头:当报文长度超过MTU(最大传输单元)时就需要将报文分段发送,而在IPV6中,分段发送使用的是分段包头。
5、认证包头(AH):该包头由IPsec使用,提供认证、数据完整性以及重放保护。
6、封装安全净载包头(ESP):该包头由IPsec使用,提供认证、数据完整性以及重放保护和IPV6数据包的保密。
IPV6报文处理机制
按需构造IPV6报文、处理基本包头和逐跳选项包头、处理所有包头。
IPV6地址缩写规范
为了书写方便,IPV6可采用以下规则进行缩写。
每组16bit的单元中的前导0可以省略,但是如果16bit单元的所有比特都为0,那么至少要保留一个“0”字符;拖尾的0不能被省略
一个或多个连续的16bit字符为0时,可用”::“表示,但整个IPV6地址缩写中只允许有一个::
若缩写后的IPV6地址出现两个“::”会导致无法还原为原始的IPV6地址
IPV6地址分类
根据IPV6地址前缀,可将IPV6地址分为单播地址、组播地址和任播地址。
单播地址标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPV6中,一个接口拥有多个IPV6地址是非常常见的现象。除了全球单播地址、唯一本地地址、链路本地地址这三种地址之外,IPV6还有一些特殊单播地址的存在:
未指定地址:0:0:0:0:0:0:0:0/128或者::/128 该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻接请求报文(NS)的源地址,或者DHCPV6初始化过程中客户端所发送的请求报文的源地址。
环回地址:0:0:0:0:0:0:0:1/128或者::1/128,与IPV4中的127.0.0.1作用相同,用于本地回环,发往::/1的数据包实际上就是发给本地,可用于本地协议栈环回测试。
组播地址 标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。
任播地址:任播地址标识一组网络接口。目标地址是任播地址的数据包将发送给其它路由意义上最近的一个网络接口。
IPV6没有定义广播地址,在IPV6中,所有广播的应用层场景将会被IPV6组播所取代。
IPV6单播地址结构
网络前缀 : n bit 相当于IPV4地址中的网络ID
接口标识 (128-n)bit 相当于IPV4地址中的主机ID
接口标识可通过三种方法生成
手工配置
系统自动生成
通过IEEE EUI-64规范生成
其中EUI-64规范最为常用,此规范将接口的MAC地址转换为IPV6接口标识。
1、第7bit取反 2 插入FFFE(11111111 11111110)
常见的IPV6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64bit
IPV6常见单播地址-GUA
GUA(全球单播地址),也被称为可聚合全球单播地址。该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPV4的公网地址。
001开头 (2000::/3)
ULA(唯一本地地址)是IPV6私网地址,只能够在内网中使用。该地址空间在IPV6公网中不可被路由,因此不能直接访问公网。
唯一本地地址使用FC00::/7地址块,目前仅使用了FD00::/8地址段。FC00::/8预留为以后拓展用。
ULA虽然只在有限范围内有效,但也具有全球唯一的前缀。随机产生,但是冲突概率很低。
LLA(链路本地地址)是IPV6中另一种应用范围受限制的地址类型,LLA的有效范围是本地链路,前缀为FE80::/10
IPV6组播地址
IPV6组播地址标识多个接口,一般用于“一对多”的通信场景。
IPV6组播地址只可以作为IPV6报文的目的地址。
前面字节为FF
由8bit + flags(用来表示0000永久或0001临时组播组)+scope(表示组播组的范围)+reserved(必须为0)+group id (组播组ID)
Scope
0:预留
1:节点本地范围;单个接口有效,仅用于loop back通讯
2:链路本地范围;例如FF02::1
5:站点本地范围
8:组织本地范围
E:全球范围
F:预留
被请求节点组播地址 主要用于邻居发现机制和地址重复检测功能。有效范围为本地链路范围。
104bit(固定前缀) FF02:0000:0000:0000:0000:0001:FF
IPV6任播地址
任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPV6报文的源地址
IPV6单播地址业务流程
一个接口在发送IPV6报文之前要经历地址配置、DAD、地址解析这三个阶段,NDP(邻居发现协议)扮演了重要角色
NDP
使用ICMPV6报文实现其功能
DAD重复地址检测
通过ICMPV6报文进行DAD
仅当DAD通过之后才会使用该单播地址
IPV6使用ICMPV6的NS和NA报文来取代ARP在IPV4中的地址解析功能