IPv6概述
IPv6过渡技术
IPv4网络演变为IPv6网络主要有一下三种技术
- 双栈技术:在一台设备上同时启用IPv4协议栈和IPv6 协议栈的技术
- 隧道技术:将一种协议的数据封装在另一种协议中的技术
- 转换技术:将IPv6地址和IPv4地址进行转换的一种技术
IPv6地址介绍
IPv6地址
IPv6地址的长度为128位,一般用冒号分隔为8段,每一段16位,每一段内用十六进制表示
与IPv4地址类似,IPv6也用"IPv6地址/掩码长度"的方式来表示IPv6地址
IPv6地址格式
IPv6地址结构
一个IPv6地址可以分为如下两部分:
- 网络前缀:nbit,相当于IPv4地址中的网络ID
- 接口标识:(128 - n)bit,相当于IPv4地址中的主机ID
示例:
2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64
IPv6地址前缀
鉴于IPv4地址在规划和分配上的局限性,IETF对IPv6地址类型进行了精细划分,不同类型的IPv6地址被赋予了不同的前缀,且受地址分配机构的严格管理
现阶段常用的IPv6地址或前缀
IPv6地址或前缀 | 含义 |
2001::/16 | 用于IPv6 Internet,类似于IPv4公网地址 |
2002::/16 | 用于6to4隧道 |
FE80::/10 | 链路本地地址前缀,用于本地链路范围内的通信 |
FF00::/8 | 组播地址前缀,用于IPv6组播 |
::/128 | 未指定地址,类似于IPv4中的0.0.0.0 |
::1/128 | 环回地址,类似于IPv4中的127.0.0.1 |
IPv6地址接口标识
接口ID可以通过三种方式生成:
- 手工配置
- 系统自动生成
- 基于IEEE EUI-64规范生成
基于IEEE EUI-64的规范生成IPv6接口标识
具体的转换算法:将上述的第7位0转换位1,在MAC地址的中间(24bit处)插入两个字节:FFFE
IPv6地址类型
全球单播地址GUA
GUA(Global Unicast Address,全球单播地址),也被成为可聚合全球单播地址。该类地址全球唯一,用于需要又互联网访问需求的主机,相当于IPv4的公网地址。
注:由于前3bit固定为001,因此全球单播地址以2000开头和3000开头
唯一本地地址ULA
ULA(Unique Local Address,唯一本地地址)是IPv6私网地址,只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此不能直接访问公网
注:由于前7bit固定为1111 110,因此唯一本地地址以FC开头和FD开头
链路本地地址LLA
LLA(Link-Local Address,链路本地地址)是IPv6中另一种应用范围受限制的地址类型。LLA的有效范围是本地链路,相当于IPv4中的同一广播域下
注:用于前10bit固定为1111 1110 10,因此本地链路地址以FE8开头、FE9开头、FEA开头和FEB开头
IPv6组播地址
IPv6组播地址标识某个组,目的为组播地址的报文会被送到该组播组内的成员
组播地址由前缀(FF::/8),标志(Flag)字段、范围(Scope)字段以及组播组ID(Group ID)4个部分组成
注:FF02::1:链路本地所有终端和路由器;FF02::2:链路本地所有路由器
IPv6组播MAC
组播IPv6报文的目的IP为组播IPv6地址,同样,目的MAC为组播MAC地址
组播MAC的前16bit为"33:33",是专门为IPv6组播预留的MAC地址前缀。后32bit从组播IPv6地址的后32bit直接映射而来
被请求节点组播地址
当一个节点具有了单播和任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围
示例:
PC1发送数据至PC2前,首先需要获取其MAC地址。PC1将发起类似IPv4中ARP的解析流程,IPv6使用ICMPv6的NS和NA报文来实现地址解析过程,NS报文的目的IPv6地址为目标IPv6单播地址对应的被请求节点组播地址。
IPv6任播地址
任播地址标识一组网络接口(通常属于不同的节点)。任播地址可以作为IPv6报文的源地址,也可以作为目标地址
IPv6地址和IPv4地址比较
IPv6报文结构
IPv6报文一般由三个部分组成:
- 基本报头:提供报文转发的基本消息,路由器通过解析基本报头就能完成绝大多数额报文转发任务(长度固定为40字节)
- 扩展报头:提供一些扩展的报文转发信息,如分段、加密等,该部分不是必需的,也不是每个路由器都需要处理,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头
- 上层协议数据单元:一般由上层协议报头和它的有效载荷构成,该部分与IPv4上层协议数据单元相似
IPv6基本报头
- 版本(Version):该字段规定了IP协议的版本,其值为6,长度为4bit
- 流类别(Traffic Class):该字段功能和IPv4中的服务类型功能类似,标识IPv6数据报文的类或优先级。长度为8bit
- 流标签(Flow Label):用来标识这个数据报属于源节点和目标节点之间的一个特定数据报序列,它需要由中间IPv6路由器进行特殊处理。该字段长度为20bit。一般来说一个流可以通过源/目的IPv6地址和流标签来确定
- 有效载荷长度(Payload Length):该字段标识IPv6数据报有效载荷的长度。有效载荷是指紧跟IPv6报头的数据报的其他部分(即扩展报头和上层协议数据单元)。该字段长度为16bit,能表示最大长度为65545Byte的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示
- Next Header:下一报头,长度为8bit。与基本报头的Next Header的作用相同,指明下一个扩展报头(如果存在)或上层协议的类型
IPv6扩展报头
- Extension Header Length:扩展报头长度,长度为8bit。表示扩展报头的长度(不包含Next Header字段)
- Extension Header Data:扩展报头数据,长度可变。扩展报头的内容,为一系列选项字段和填充字段的组合
- 逐跳选项报头:该扩展报头被每一条处理,可包含多种选项,如路由器告警选项
- 目的选项报头:目的地处理,可包含多种选项,如Mobile IPv6的家乡地址选项
- 路由报头:指定源路由,类似IPv4 源路由选项,IPv6源节点用来指定信息报到达目的地的路径上所必须经过的中间节点。IPv6基本报头的目的地址不是分组的最终目的地址,而是路由扩展头中所列的第一个地址
- 分段报头:IP报文分片信息,只由目的地处理
- 认证报头:IPsec用扩展头,只由目的地处理
- 封装安全净载报头:IPsec用扩展头,只由目的地处理