目录
一、前言
二、IPv6报文
(1)基本报头
(2)扩展报头
三、IPv6地址类型
(1)单播地址
① 全球单播地址
② 链路本地地址
③ 唯一本地地址
④ 未指定地址
⑤ 环回地址
⑥ 接口ID生成(EUI-64是重点)
(2)组播地址
① 常用的组播地址
② MAC地址映射
③ 被请求节点组播地址
(3)任播地址
一、前言
IPv6技术是为缓解IPv4的资源紧张问题而出现的技术。此外,IPv6技术除缓解了IPv4的地址资源紧张的问题外,还具有地址空间巨大、精简了报文结构、实现了自动配置和重新编址、支持层次化网络编制、支持端对端安全、更好的支持Qos、支持移动特性等技术特点,由于这些新的技术特点,IPv6对新行业发展与新互联网技术的发展具有更好地适应性。
IPv6协议将分为两篇介绍,该篇将介绍IPv6报文及其地址类型。在阅读前,建议了解一下IPv4协议。
二、IPv6报文
IPv6报文分为基本报头和扩展报头两部分,其中IPv6的必要属性在基本报头中,其他支持扩展功能的属性以扩展报头的形式存在于报文中。
(1)基本报头
基本报头是IPv6报文中必须存在的,它包含了IPv6的必要基本属性。与IPv4的可变长报头不同,IPv6的报头是定长的40字节,分为8个字段,IPv6基本报头字段位置及其长度如图所示:
对基本报头中的部分字段的说明:
字段 | 说明 |
流标签 | IPv6的新增字段,用于表示同一数据流,具有相同流标签的数据包属于同一数据流。 |
数据长度 | 表示该数据包的有效荷载,指IPv6基本报头后的长度(数据内容长度)。 |
下一报头 | 用于标识基本报头后面是哪种扩展报头或上层协议中的协议类型。 |
跳限制 | 类似于IPv4中的TTL字段,表示数据包最多可以传输的跳数。 |
(2)扩展报头
IPv6的扩展报头是IPv6报文中可选的,它定长(8字节)且可以无限扩展,位于IPv6报头和上层协议数据单元之间。此外,每个扩展报头都具有NextHeader(下一报头)字段,它标识了下一个扩展报头的类型,用于扩展报头之间的连接。
扩展报头种类包括逐跳选项扩展报头、目的选项扩展报头、路由扩展报头、分片扩展报头、认证扩展报头、封装安全有效载荷扩展报头。需要注意的是,当一个报文中使用多个扩展报头时,扩展报头的出现顺序必须与上述顺序一致。
注:各扩展报头的NextHeader字段及其作用可以自己搜索一下,这里不再叙述。
三、IPv6地址类型
IPv6地址分为了单播地址、组播地址和任播地址,需要注意的是,与IPv4不同,IPv6没有定义广播地址。
(1)单播地址
IPv6的单播地址用于表示一个接口,目的地址为单播地址的报文将被发送到该地址所标识的接口中。在IPv6中,一个接口常常拥有多个IPv6地址。IPv6的单播地址分为全球单播地址、链路本地地址、唯一本地地址与未指定地址、环回地址、IPv4兼容地址。
① 全球单播地址
类似于IPv4中的公网地址,由前缀、子网ID和接口标识组成,其允许路由前缀聚合,是全局唯一和全局可路由的。
② 链路本地地址
当节点使用IPv6协议栈时,会自动分配链路本地地址(每个IPv6接口必须有一个链路本地地址)。该地址专门用于和相同链路上的其它主机通信,只能在连接到同一本地链路的节点间使用(用于邻居发现和无状态地址),其链路前缀为FE80::/10,接口ID在其后作为地址的低64位。
③ 唯一本地地址
唯一本地地址是IPv6网络中可以自己使用的私有网络地址,相当于IPv4网络中的私有地址。
④ 未指定地址
指::/128或0:0:0:0:0:0:0:0/128,标识某节点没有配置IP地址,作为某些报文的源地址。
⑤ 环回地址
指::1/128或0:0:0:0:0:0:0:1/128,与IPv4中的127.0.0.1作用相同,用于本地的回环测试。
⑥ 接口ID生成(EUI-64是重点)
接口ID为64bit,用于标识链路上的接口,在每条链路上接口ID必须唯一。其可通过手工配置、系统通过软件自动生成或通过EUI-64规范自动生成。EUI-64规范生成接口ID包括了"将FFFE出入MAC地址的公司标识和扩展标识之间"和"将从高位数起位于第7位的0改为1标识该接口标识全球唯一"两个步骤。
(2)组播地址
IPv6组播地址用于标识一组接口,发往组播地址的数据将被转发给侦听该地址的多个设备,其使用FF00::/8前缀。
① 常用的组播地址
地址作用 | IPv6地址 |
所有节点的组播地址 | FF02:0:0:0:0:0:0:1 |
所有路由器的组播地址 | FF02:0:0:0:0:0:0:2 |
Solicited-Node组播地址 | FF02:0:0:0:0:1:FFXX:XXXX |
所有OSPF路由器组播地址 | FF02:0:0:0:0:0:0:5 |
所有OSPF的DR路由器组播地址 | FF02:0:0:0:0:0:0:6 |
所有RIP路由器组播地址 | FF02:0:0:0:0:0:0:9 |
所有PIM路由器组播地址 | FF02:0:0:0:0:0:0:D |
② MAC地址映射
在以太网中,一个组播IPv6报文必须执行以太网封装。在IPv6中,组播的目的IP地址为组播IPv6格式,因此其目的MAC地址也应为组播格式且与目的IPv6地址对应。IPv6地址的MAC地址映射前缀为33-33,后32bit从对应的组播IPv6地址的后32bit复制而来。
③ 被请求节点组播地址
被请求节点的组播地址通过节点的单播或任播地址形成。当一个节点有了单播或任播地址,就会生成一个被请求节点组播地址并加入其中。
该地址由固定前缀FF02::1:FF00:0/104和最后的24bit组成,有限范围是本地链路范围,主要用于地址解析和重复地址检测。
(3)任播地址
任播地址为IPv6特有的地址类型,任播地址主要为DNS和HTTP提供服务。由于任播地址与单播地址使用相同的地址空间,因此任播与单播地址表示没有任何区别,因此,在配置时须表明是任播地址以区别单播和任播地址。
IPv6任播地址可以同时被分配给多台设备,即多台设备可以共用一个任播地址,发送设备发送的任播报文只会发送到具有该任播地址且离其最近的接口,由于该性质,任播地址可以在为多个主机或节点提供相同服务的前提条件下提供冗余和负载分担。
需要注意的是,任播地址不能作为数据包的源地址并且不能配置在主机上。