首页 > 其他 > 详细

IPv6学习笔记——RFC4291

时间:2019-05-22 17:12:42      阅读:78      评论:0      收藏:0      [点我收藏+]
IPv6 地址结构
 
1、简介
本标准定义了 IPv6 协议的寻址结构。包括各种类型 IPv6 (单播、任播和多播)地址的基本格式。
 
2、IPv6 地址
IPv6 地址是接口和接口组的 128 bit标识符。
有三种地址类型:
单播地址:是单一接口的标识符。发送到单播地址的分组被交付给由该地址标识的接口。
任播地址:一组接口(典型属于不同节点)的标识符。发送到任播地址的分组被交付给由该地址标识的一组接口之一(“最近的”一个,按照路由协议的测量距离)。
多播地址:一组接口的标识符(典型属于不同节点)。发送到多播地址的分组被交付给由该地址标识的所有接口。
IPv6 不使用广播地址,广播地址的功能由多播地址代替。
 
本文中,地址中的字段被给予了特定的名称,例如“子网(subnet)”。当这样的名称在前,表示标识符的术语“ID”紧随其后一起使用(例如,子网 ID(subnet ID))时,二者的组合指该名称字段的内容。当这样的名称与术语“前缀(prefix)”一起使用(例如,子网前缀(subnet prefix))时,二者的组合指从左边开始直到包括这个字段在内的全部地址。
在 IPv6 中,对于任何字段,全 0 和全 1 是合法的,除非特殊规定。更准确地说,前缀可以包括 0 值字段,或前缀可以以 0 值字段结束。
 
2.1、寻址模式
  所有类型 IPv6 地址都是分配给接口的,不是分配给节点的。IPv6 单播地址指单一接口。由于每个接口都属于单一节点,任何节点的接口单播地址都可以用作该节点的标识符。
要求所有接口至少有一个链路本地单播地址(参阅第 2-8 节,额外需要的地址)。单个接口也可以有多个任何类型(单播、任播和多播),或任何范围的 IPv6 地址。不用作任何 IPv6 分组(该分组是发送到或来自于非邻居)的源或目的地的接口,不需要范围大于链路范围的单播地址。这在某些情况对点对点接口较为方便。此寻址模式有一个例外:
  如果实现中将此多个物理接口当作在网络层上出现的一个接口,一个单播地址或一组单播地址可以分配给多个物理接口。这样做有利于多个物理接口上的负载均衡。
  目前,在子网前缀与一条链路关联上,IPv6 继承了 IPv4 模式。多个子网前缀可以分配给同一链路。
 
2.2、地址的文本表示
有三种将 IPv6 地址表示为文本串的约定格式:
1、优先选用格式为 x:x:x:x:x:x:x:x,这里“x”是地址的 8 个 16 位地址片中每个 16 位片的 1到 4 个 16 进制数字。例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
2001:DB8:0:0:8:800:200C:417A
注意,可以不写单个字段中开始的 0,但是每个字段中至少要有 1 个数字(除了下面 2、中介绍的情况以外。)。
2、由于需要分配特定类型 IPv6 地址,地址中会包括长 0 位串。为简化包含长 0 位地址的书写,采用特殊句法压缩 0 的个数。即用“::”表示 1 个或多个 0 值 16 位组。“::”在地址中仅可以出现一次。“::”也用于压缩地址中开始位置和结束位置的多个 0。
例如,下述地址
2001:DB8:0:0:8:800:200C:417 单播地址
FF01:0:0:0:0:0:0:101 多播地址
0:0:0:0:0:0:0:1 环回地址
0:0:0:0:0:0:0:0 未指定地址
可以表示为:
2001:DB8::8:800:200C:417 单播地址
FF01::101 多播地址
::1 环回地址
:: 未指定地址
3、在混用 IPv4 节点和 IPv6 节点环境,一种替代地址格式有时更为方便,这种地址格式是x:x:x:x:x:x:d.d.d.d。这里“x”是地址的 6 个高阶 16 位地址片的 16 进制值,“d”是地址的4 个低阶 8 位地址片的 10 进制值(标准的 IPv4 地址表示)。例如:
0:0:0:0:0:0:13.1.68.3
0:0:0:0:0:FFFF:129.144.52.38
或压缩形式:
::13.1.68.3
::FFFF:129.144.52.38

  

2.3、地址前缀的文本表示
IPv6 地址前缀的文本表示类似采用无分类域间路由(Classless Inter-Domain Routing,CIDR)斜线表示法[CIDR]书写的 IPv4 地址前缀。IPv6 地址前缀表示为:
ipv6 地址/前缀长度
这里
ipv6 地址 是用第 2.2 节列出的任何一种符号表示法表示的 IPv6 地址。
前缀长度 是十进制值,规定地址中最左边多少个连续位构成前缀。
例如,下述是 60 比特前缀 20010DB80000CD3(16 进制)的合法表示:
2001:0DB8:0000:CD30:0000:0000:0000:0000/60
2001:0DB8::CD30:0:0:0:0/60
2001:0DB8:0:CD30::/60
下述不是上述前缀的合法表示:
2001:0DB8:0:CD3/60   在任何 16 比特地址块中,可以抛弃起始的 0,但是不能抛弃尾部的 0。
2001:0DB8::CD30/60   “/”左边的地址扩展为2001:0DB8:0000:0000:0000:0000:0000:CD30
2001:0DB8::CD3/60   “/”左边的地址扩展为2001:0DB8:0000:0000:0000:0000:0000:0CD3
当书写节点地址和该节点地址的前缀(例如,节点的子网前缀)时,二者合并写法如下:
节点地址 2001:0DB8:0:CD30:123:4567:89AB:CDEF
和它的子网号 2001:0DB8:0:CD30::/60
二者能够缩写为 2001:0DB8:0:CD30:123:4567:89AB:CDEF/60
 
2.4、地址类型标识
IPv6 地址类型由地址的高阶位标识,即:
地址类型  二进制前缀      IPv6 符号表示法  所在章节
未指定   00...0 (128 bits)   ::/128     第 2.5.2 节
环回    00...1 (128 bits)   ::1/128    第 2.5.3 节
多播    11111111        FF00::/8     第 2.7 节
链路本地单播 1111111010     FE80::/10     第 2.5.6 节
全球单播 (别的每一种)
  任播地址取自(具有任何范围的)单播地址空间,在句法上任播地址与单播地址难以区分。全球单播地址一般格式如第 2.5.4 节所述。一些特定目的全球单播地址子类型,包含了嵌入的 IPv4 地址(出于 IPv4-IPv6 互操作目的),在第 2.5.5 节介绍。
  出于其他考虑,将来的标准可以为全球单播空间重新定义细分的一种或多种子空间,但是,除非出现这种重新定义和直到这种重新定义发生,实现中必须把没有以上述列出的任何一种前缀开始的所有地址,当作是全球单播地址。

2.5、单播地址
IPv6 单播地址是与任意比特长度的前缀聚合在一起的,类似 IPv4 的无分类域间路由(CIDR)地址。
在 IPv6 中有几类单播地址:全球单播、站点本地单播(已过时,参阅第 2-5-7 节)和链路本地单播。全球单播还有一些特定目的子类型,例如带有嵌入 IPv4 地址的 IPv6 地址。将来可以定义新增的地址类型或子类型。
IPv6 节点可能非常了解,也可能很少了解 IPv6地址内部结构,取决于节点担当的角色(例如,主机还是路由器)。最简单情况,节点或许认为单播地址(包括它自己的)没有内部结构,仅是图 1 所示的 128 位地址。
node address    ——128bit
图 1 节点眼中的最简单单播地址结构
稍微完善些的主机(仍然相当简单)或许多少意识到它附着的链路的子网前缀,在子网前缀中不同的地址有不同的 n 值(子网前缀比特值。译者),参见图 2。
子网前缀(subnet prefix)     ——n bits
接口ID(interface ID)    ——128-n bits
图2 稍微完善些主机眼中的单播地址格式
虽然非常简单的路由器或许不知道 IPv6 单播地址内部结构,通常情况下路由器有一种或多种路由协议运行分层边界知识。这些已知边界因路由器的不同而不同,取决于该路由器在路由等级结构中的位置。除了上一段讨论的子网边界知识以外,节点不会对 IPv6 地址结构做任何假设。
 
2.5.1 接口标识符
  IPv6 单播地址中的接口标识符(interface ID)用于标识链路上的接口。子网中接口标识符应该是唯一的。建议同一接口标识符不分配给链路上的不同节点。在更宽范围上接口标识符或许也是唯一的。有些情况,接口的标识符直接来源于该接口的链路层地址。同一接口标识符可用在单一节点的多个接口上,只要它们附着到不同子网。
  注意,接口标识符的唯一性独立于 IPv6 地址的唯一性。例如,全球单播地址可以用本地范围接口标识符生成,链路本地地址可以用全球范围接口标识符生成。
  对于所有单播地址,除了以二进制值 000 开始的以外,要求接口 IDs 为 64 比特长,由改进的 EUI-64 格式构建。
  当源自全球标记时(例如,IEEE 802 48-bit MAC 标识符或 IEEE EUI-64 标识符[EUI64]),基于改进的 EUI-64 格式的接口标识符可以有全球范围;当不能得到全球标记时(例如,串联链路,隧道端点)或者不希望使用全球标记时(例如,临时的私有标记[PRIV]),基于改进的EUI-64 格式的接口标识符可以有本地范围。
  当根据 IEEE EUI-64 标识符形成接口标识符时,通过插入“u”比特(universal/local 比特,IEEE EUI-64 术语),即可形成改进的 EUI-64 格式接口标识符。最终在改进的 EUI-64 格式中,“u”比特置 1 表示全球范围,“u”比特置 0 表示本地范围。二进制形式的 IEEE EUI-64 标识符的前 3 个字节如图 3 所示。
cccc ccug cccc cccc cccc cccc
图3 二进制形式IEEE EUI-64标识符的前3个字节格式
图 3 中用互联网标准比特顺序书写。“u”是 universal/local 位,“g”是 individual/group 位,“c”是公司 ID 位。附录 A“生成改进的 EUI-64 格式接口标识符”,举例说明了任何生成基于改进的 EUI-64 格式接口标识符。
形成接口标识符时插入“u”比特是为了便于系统管理者,使其在不能得到硬件标记时,也能配置非全球标识符。例如,针对串联链路和隧道端点情况。对这些情况的替代方案或许是 0200:0:0:1,0200:0:0:2 格式等,代替更简单的 0:0:0:1,0:0:0:2 等。
不要求 IPv6 节点证实由改进的 EUI-64 标记(该标记的“u”比特设置为全球范围)生成的接口标识符是唯一的。
在改进的 EUI-64 格式标识符中使用 universal/local 比特将引起新技术研发,这些新技术能够利用具有全球范围的接口标识符。
形成接口标识符的细节在相应的“相关链路的 IPv6”规范中定义,例如“以太网上的IPv6” [ETHER],和“FDDI 上的 IPv6” [FDDI]。
 
2.5.2 未指定地址
地址 0:0:0:0:0:0:0:0 称作未指定地址。它必须不分配给任何节点。它表示没有这个地址。
使用未指定地址的例子如:正在初始化的主机还没有学习到它自己的地址之前,它发送的任何 IPv6 分组中 Source Address 字段的内容。
未指定地址必须不用作 IPv6 分组的目的地地址,也必须不在 IPv6 的 Routing 首部中使用。IPv6 路由器必须不转发含未指定的源地址的 IPv6 分组。
 
2.5.3 环回地址
单播地址 0:0:0:0:0:0:0:1 称为环回地址。节点用其发送返回到自己的 IPv6 分组。它必须不分配给任何物理接口。它被看作属于链路本地范围,可以被当作是虚拟接口(典型称作“环回接口”)的链路本地单播地址,该虚拟接口通向一个假想的链路,该链路和谁也不连通。
环回地址必须不用作 IPv6 分组(这些分组是从单个节点发送到该节点外面的)中的源地址。以环回地址为目的地地址的 IPv6 分组决不能发送到单一节点以外,并且决不能经由 IPv6路由器转发。接口收到目的地为环回地址的分组必须将其抛弃。
 
2.5.4 全球单播地址
IPv6 全球单播地址一般格式如图 4 所示。
全球路由前缀(global routing prefix)    ——n bits
接口ID(interface ID)        ——m bits
子网ID(subnet ID)     ——128-n-m bits
图4 全球单播地址一般格式
图 4 中,全球路由前缀是一个(典型等级结构)值,该值分配给站点(一群子网/链路),子网 ID是该站点内链路的标识符,接口 ID 如第 2.5.1 节定义。
除了以二进制 000 开始的全球单播地址外,所有全球单播地址有一个 64 位的接口 ID字段(即,n + m = 64),格式如第 2.5.1 节所述。以二进制 000 开始的全球单播地址,在大小上或接口 ID 字段结构上没有这类限制。
以二进制 000 开始的全球单播地址的例子是具有嵌入的 IPv4 地址的 IPv6 地址,如第2.5.5 节所述。使用除了 000 外的二进制值开始的全球地址的例子(因此有一个 64 比特接口ID 字段)参阅[GLOBAL]。
 
2.5.5 带有嵌入的 IPv4 地址的 IPv6 地址
定义了两类携带 IPv4 地址的 IPv6 地址,它们均在地址的低阶 32 比特中携带 IPv4 地址。
它们是“IPv4 兼容的 IPv6 地址”和“IPv4 映射的 IPv6 地址”。
 
2.5.6 链路本地 IPv6 单播地址
2.5.7 站点本地 IPv6 单播地址(已废除)
 
2.6、 任播地址
2.7、多播地址
 
 

IPv6学习笔记——RFC4291

原文:https://www.cnblogs.com/lldxz/p/10906955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!