IPv6 地址的表示与分类

2,305 阅读7分钟

1. IPv6 地址的表示

  • 128位 2001:0410:0000:0001:0000:0000:0000:45ff
  • 压缩表示
    • 可以用双冒号 : : 表示一组0或多组连续的0,但只能出现一次。2001:0410:0000:0001::45ff
    • 每组数字代表的独立16进制数可以省略前导0。2001:410:0:1:0:0:0:45ff
    • 以上两条规则课同时使用 2001:410:0:1::45ff
  • 地址前缀:或者有固定的值,或者是路由或子网的标识。

2. IPv6 地址的分类

A类,B类,C类,D类,E类

  • 单播地址:A、B、C类地址
  • 多播地址:D类
  • 保留地址:E类
  • 广播地址:255.255.255.255等

2.1 单播地址

  • 可聚合全球单播地址:IPv6的公网地址,类似于IPv4网络的公网单播地址。注意:可聚合全球单播地址的前缀前3位固定是001

  • 链路本地地址:前缀固定 FE80::/64,接口ID在后64位,只能在连接到同一本地链路的节点之间使用。

    • 接口 ID:IEEE EUI-64 地址代表网络接口寻址的新标准。要从 IEEE 802 地址(MAC 地址)获取 IPv6 接口标识,必须先将 IEEE 802 地址映射到 EUI-64 地址,然后对 U/L 位求反。

    IEEE 802 地址转换示例

    主机A 的 以太网MAC 地址是 00-AA-00-3F-2A-1C。首先,通过在第三个和第四个字节之间插入 FF-FE 将其转换为 EUI-64 格式,其结果是 00-AA-00-FF-FE-3F-2A-1C。然后,对 U/L 位(第一个字节中的第七位)求反。第一个字节的 二进制形式为 00000000。将第七位求反后,变为 00000010 (0x02)。最后的结果是 02-AA-00-FF-FE-3F-2A-1C,当转换为 冒号 十六进制符号时,成为接口标识 2AA:FF:FE3F:2A1C。结果是,对应于 MAC 地址 00-AA-00-3F-2A-1C 的 网络适配器的链接本地地址是 FE80::2AA:FF:FE3F:2A1C。

  • 站点本地地址:应用范围局限在一个站点内使用,类似于IPv4中的私有地址。前缀 Fec0::/48

  • 其他地址

    地址类型二进制前缀IPv6标识
    未指定00...0 (128 bits)::/128
    环回地址00...1 (128 bits)::1/127
    链路本地地址1111111010FE80::/48
    站点本地地址1111111011FEC0::/48
    全局单播(其他)

2.2 组播地址

IPv6中,组播地址有特定的前缀,但是和IPv4中的D类地址前缀不同。

844112
11111111标志范围组 ID
  • 最高位全置为1

  • 标志:前3位为0,第4位为0表示当前组播地址是由IANA分配的一个永久分配地址,第4位为1表示当前组播地址是一个临时组播地址

  • 范围:

    • 0,预留
    • 1,节点本地范围
    • 2,链路本地范围
    • 5,站点本地范围
    • 8,组织本地地址
    • E:全球范围
    • F:预留
  • 目前只定义最低的32位ID,将剩余的80都置0。每个组ID都映射到一个唯一的以太网组播地址。

特殊的组播地址

  • FF01::1(节点本地范围所有节点组播地址)
  • FF01::2(节点本地范围所有路由器组播地址)
  • FF02::1(链路本地范围所有节点组播地址)
  • FF02::2(链路本地范围所有路由器组播地址)
  • FF05::2(站点本地范围所有路由器组播地址)

节点所需要的地址 TODO

主机节点需要如下地址来标识自己 Link-Local地址 手工或自动配置的单播地址 loopback地址 “All-Nodes”和“Solicited-Node”及其它所属于的组播地址 路由器节点除了以上地址,还要有 “Subnet-Router”及路由器上配置的任播地址 “All-Routers”组播地址

请求节点组播地址(Solicited-Node Address)是IPv6中特有的组播地址。

  • 每个节点必须为分配给它的每个单播和任意播地址加入的一个组播地址,用于DAD地址重复检测(RFC2373)和地址解析。

请求节点组播地址(Solicited-Node Address)

因为IPv6的请求节点组播地址提高了数据链路层地址解析的效率,在IPv4的环境中,通信需要同时获得目标主机 的IP地址与MAC地址,当知道目标IP地址时会使用ARP协议去解析数据链路层的MAC地址。

IPv6 的环境中放弃了 IPv4 中使用 ARP 协议进行 广播的寻找 MAC 地址的方式,而是采用组播方式将 MAC地址的解析请求。以提高效率。

点请求主机能够以一种点对点的形式将MAC地址请求消息发送到目标主机,是因为主机的请求节点组播地址在整个链路上是唯一的,所以源主机可以直接将节点请求信息发到目标主机节点请求组播地址上。

(本部分只讨论了IPv6的节点请求从网络层上的优化与改进,在数据链路层是如何改进的?)

  • 请求节点组播地址(Solicited-Node Address)生成过程:

    • IPv6地址的后24位:xx:xxxx
    • 再加上前缀地址:FF02:0:0:0:0:1:FF
    • 就得到了请求节点组播地址:FF02:0:0:0:0:1:FFxx:xxxx
  • 举个栗子(例子):

    • 主机的MAC地址为:00-02-B3-1E-83-29
    • 通过EUI-64自动生成的link-local地址为:FE80::0202:B3FF:FE1E:8329
    • 请求节点组播地址为:FF02:0:0:0:0:1:FF1E:8329

2.3 任播地址

  • 用来标识一组网络接口,路由器会将目标地址是任播地址的数据包发送给最近的一个网络接口。
  • 从单播地址空间中进行分配,使用单播地址的任何格式。
  • 任播地址仅被用作目的地址,且仅被分配给路由器。

一台IPv6主机有多少地址?

通常一台IPv6主机有多个IPv6地址,即使该主机只有一个单接口。一台IPv6主机可同时拥有以下几种单点传送地址: 每个接口的链路本地地址;fe80::216:41ff:fe55:f570 每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址);2001::1 回环(loopback)接口的回环地址(::1)。 此外,每台主机还需要时刻保持收听以下多点传送地址上的信息: 节点本地范围内所有节点组播地址(FF01::1); 链路本地范围内所有节点组播地址(FF02::1); 请求节点(solicited-node)组播地址(如果主机的某个接口加入请求节点组);FF02::1:FF22:2222 组播组组播地址(如果主机的某个接口加入任何组播组)。

一台IPv6路由器有多少地址?

一台IPv6路由器可被分配以下几种单点传送地址: 每个接口的链路本地地址; 每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址); 子网-路由器任意播地址; 其他任意播地址(可选); 回环接口的回环地址(::1)。 同样,除以上这些地址外,路由器需要时刻保持收听以下多点传送地址上的信息流: 节点本地范围内的所有节点组播地址(FF01::1); 节点本地范围内的所有路由器组播地址(FF01::2); 链路本地范围内的所有节点组播地址(FF02::1); 链路本地范围内的所有路由器组播地址(FF02::2); 站点本地范围内的所有路由器组播地址(FF05::2); 请求节点(solicited-node)组播地址(如果路由器的某个接口加入请求节点组); 组播组组播地址(如果路由器的某个接口加入任何组播组)。

参考