Iv地址结构.docx
- 文档编号:6295940
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:13
- 大小:52.08KB
Iv地址结构.docx
《Iv地址结构.docx》由会员分享,可在线阅读,更多相关《Iv地址结构.docx(13页珍藏版)》请在冰豆网上搜索。
Iv地址结构
IPv6地址结构
RFC3513
1.前言
本文描述了ipv6的地址结构,ipv6地址的文本表示,IPv6的单播地址、任播地址,多播地址以及IPv6结点所必须的地址的定义。
IPv6的不同的地址的基本格式(单播,任播,以及多播)。
2.IPv6选址
IPv6地址是对接口或接口集合的128-bit的标识符。
有三种类型的地址:
单播(Unicast):
针对一个接口的标识符。
一个发向单播地址的数据包被送往该地址所确定的接口。
任播(Anycast):
接口的一个集合的标识符(代表性的属于不同结点)。
一个发向任播地址的数据包被发送到为该地址所标识的一集接口之一(即,按照路由协议的测量距离的“最近的”接口)。
多播(Multcast):
接口的一个集合的标识符。
一个发向多播地址的数据包被发往所有以该地址做标识的接口。
在IPv6中,没有广播地址,广播地址的功能被多播地址的能力所取代。
本文中,给地址字段一个种名,如“子网(subnet)”。
当一个做标识符用的“ID”跟在种名后面一起使用(如“subsetID”),则表示种名字段的内容。
当它和一个“prefix”的术语一起使用时(如“subsetprefix”),它指所有的从左一直到并包含本字段的所有地址。
在IPv6中,除非明确声明排除,则所有全0或全1的字段值是合法的。
特定的,前缀可能包含,或以全0字段值结束。
2.1地址模型
所有类型的IPv6地址分配给接口,而不是分配给结点。
一个IPv6单播地址与单个接口相关。
由于每个接口只属于一个结点,故任何一个结点的单播地址可用来做为结点的标识。
所有接口必须至少有一个单播link-local地址(见2.8结点必需的地址)。
一个接口也可能有多个任意类型的或任意范围的IPv6地址(单播,任播和多播)。
不做为来自或发送到非邻居的IPv6包的源或目的的接口不需要用超出链路范围的单播地址。
这对于点到点的连接的接口有时是非常方便的。
这个地址模型有一个例外:
在执行中,如果将多个物理接口视为一个接口,当它出现在网络层时,一个单播地址或一个单播地址集可能被分配到多个物理接口上。
这有利于在多个物理接口上进行负载分担。
当前,IPv6沿用IPv4模型中的子网前缀关联一条链路。
多个子网前缀可分配到同一条链路上。
2.2地址的文本表示
有三种惯用方式用文本字符串表示IPv6地址:
1.首选方式x:
x:
x:
x:
x:
x:
x:
x,x是16进制数组成的一块,用以表示一个16bit的二进制数。
8个块组成一个地址。
例如:
FEDC:
BA98:
7654:
3210:
FEDC:
BA98:
7654:
3210
1080:
0:
0:
0:
8:
800:
200C:
417A
注意:
在每个单独的字段,没有必要写前面的0,但是每个字段至少有一个数值。
2.由于分配某些风格的IPv6地址的方法不同,地址中包含一长串0是很平常的。
为了易于书写包含多个0bit的地址,可用一种简单语法来压缩这些0。
用“:
:
”来表示一组或多组0。
“:
:
”只可在地址中出现一次。
“:
:
”也可用来压缩地址中打头和末尾的0。
例如:
1080:
0:
0:
0:
8:
800:
200C:
417A一个单播地址
FF01:
0:
0:
0:
0:
0:
0:
101一个多播地址
0:
0:
0:
0:
0:
0:
0:
1loopback地址
0:
0:
0:
0:
0:
0:
0:
0未指明地址
可表示如下:
1080:
:
8:
800:
200C:
417A一个单播地址
FF01:
:
101一个多播地址
:
:
1loopback地址
:
:
未指明地址
3.当处理IPv4和IPv6结点都存在的混合环境时,使用一种可替代的形式有时要更方便些。
X表示处于6个地址高位的16-bit的16进制数;d表示处于地址低4位的8-bit的10进制数(标准IPv4表示式)。
例如:
0
或者为压缩表达式:
2.3地址前缀的文本表达式
IPv6的地址前缀表达式与IPv4的地址前缀CIDR记法【CIDR】相仿。
IPv6的地址前缀记法:
Ipv6-address/prefix-length
其中:
IPv6-address是2.2所列出的任何一种IPv6的地址记法。
Prefix-length一个十进制数值,指出地址包含前缀的最左连续bit数。
例如:
下面是的60-bit的12AB00000000CD3(16进制)前缀的合法表示:
12AB:
0000:
0000:
CD30:
0000:
0000:
0000:
0000/60
12AB:
:
CD30:
0:
0:
0:
0/60
12AB:
0:
0:
CD30:
:
/60
下面是该前缀不合法的表示:
12AB:
0:
0:
CD3/60可以丢掉地址中16-bit块中打头的0,但是末尾的0不可省
12AB:
:
CD30:
/60/左侧的地址展开后为:
12AB:
0000:
0000:
0000:
0000:
0000:
0000:
CD30
12AB:
:
CD3/60/左侧的地址展开后为:
12AB:
0000:
0000:
0000:
0000:
0000:
0000:
0CD3
当同时写结点的地址和它的地址前缀(如结点的子网前缀)时,可以组合的写为:
结点地址:
12AB:
0:
0:
CD30:
123:
4567:
89AB:
CDEF
它的子网号:
12AB:
0:
0:
CD30:
:
/60
简写为:
12AB:
0:
0:
CD30:
123:
4567:
89AB:
CDEF/60
2.4地址类型的标识
IPv6的地址类型的是由地址字段的高位比特来标识。
如下所示:
地址类型
二进制前缀
IPv6记法
章节
未指明的
环回地址
多播地址
链路本地单播地址
站点本地单播地址
全球单播地址
00…0(128bits)
00…1(128bits)
(其余所有地址)
:
:
/128
:
:
1/128
FF00:
:
/8
FE80:
:
/10
FEC0:
:
/10
2.5.2
2.5.3
2.7
2.5.6
2.5.6
任播地址从单播地址空间(任何范围的)获得,并且不在语法上与单播地址进行区分。
全球单播地址的通用格式在2.5.4节中有述。
全球单播地址的某些特殊用途的子类型,包含了一个内嵌的IPv4地址
未来的规范可能会为其他用途而重新定义一个或多个“子域”的全球单播空间,但是除非直到发生,实践中必须将所有的不以上表所列前缀为开头的地址视为全球单播地址。
2.5单播地址
IPv6单播地址可以以前缀的任意bit长度做聚合,这一点与IPv4的无类域间路由(CIDR)相似。
有几种类型的IPv6单播地址,详细地,有全球单播(globalunicast),站点本地单播(site-localunicast)和链路本地单播(link-localunicast)。
也有一些全球单播特殊之用的子类型,如内嵌IPv4的IPv6地址,或者是编了码的NSAP(网络服务接入点)的IPv6地址。
另外的地址类型或子类型在将来会有所定义。
IPv6结点可能会对IPv6地址的内部结构知道的很多或很少,这要看结点所充当的角色(例如,路由器还是主机)。
最小的情况,结点认为单播地址(包括结点自身的)没有内部结构:
一个稍稍复杂的主机(但仍是相当简单)可能又会知道它所连接链路的子网前缀,此时,不同的地址可能有不同的n值:
尽管一个非常简单的路由器可能不清楚IPv6单播地址的内部结构,但是路由器通常更熟知一级或多级路由协议的操作的层次边界。
了解的边界因路由器而异,主要是取决于路由器所处的路由层次的位置。
2.5.1接口标识符
IPv6单播地址的接口标识被用于标识一个链路上的接口。
要求在子网前缀中唯一。
建议不要将同一个标识符分配给同一链路上的不同接口。
它们也可能在更广范围内唯一。
在某些情况下,接口标识符源于接口链路层地址。
同一个接口标识符可以用于同一个结点的不同接口上,只要这些接口与不同的子网相连。
注意到接口标识符的唯一性不依赖IPv6地址的唯一性。
例如:
以一个非全球范围的接口标识符可以生成一个全球单播地址,而一个站点本地地址可由一个全球范围的接口标识符生成。
对于所有的单播地址,除了那些以二进制数000开始的地址,要求接口ID必须是64bit长并以改进EUI-64的格式创建。
基于接口标识符的改进EUI-64格式当源于一个全球令牌(如:
IEEE80248-bitMAC或IEEEEUI-64标识符[EUI64])时,可能有全球范围;或是当获得不到(例如,串行链路,隧道末端等等)全球令牌时,或是全球令牌不合需要(如,私用[PRIV]临时令牌)时,有本地范围。
改进EUI-64格式接口标识符是当从IEEEEUI-64标识符形成接口标识符时通过颠倒“u”比特(在IEEEEUI-64术语中称universal/local比特)形成的。
在做为结果的改进EUI-64格式中,“u”比特设值为1表示全球范围,设置成0表示本地范围。
IEEEEUI-64标识符最前面的3个字节的二进制表示如下:
以因特网标准比特顺序书写,“u”表示universal/local位,“g”表示个人/团体位,“c”是表示company-id的比特位。
附录A:
“生成改进EUT-64格式的接口标识符”提供了例子,说明如何生成基于接口标识符的改进EUI-64格式。
将“u”比特翻转的动机是更易于系统管理员在硬件令牌不可用的情况下手工配置非全球标识符。
可以想象用在在像串口链路,隧道末端等这样的情形。
该替代方式的格式是0200:
0:
0:
1,0200:
0:
0:
2,等,并不是更简单的1,2等。
在改进EUI-64格式标识符中的universal/local比特的使用允许未来技术的发展能够以全球范围利用接口标识符。
形成接口标识符的细节在适当的“IPv6over”规范中有定义。
如“IPv6overEthernet”[ETHER],“IPv6overFDDI”[FDDI]。
2.5.2未指明地址
地址:
0:
0:
0:
0:
0:
0:
0:
0被称作未指明地址。
这一地址不能分派给任何结点。
它指示一个地址的缺乏。
一个使用的例子就是一个初始化主机不知道自身的地址之前,发送IPv6数据包中包含的源地址字段值。
未指明地址不能用于IPv6数据包及IPv6路由包头的目的地址字段。
一个源地址为未指明地址的IPv6数据包不允许被IPv6路由器转发。
2.5.3环回地址
单播地址0:
0:
0:
0:
0:
0:
0:
1被称作环回地址。
用于结点可能向自己发送IPv6报文。
它也许从不分配给一个物理接口。
被认为具有一个本地链路范围的地址,也可被认为是一个不到任何地方的虚链路上的虚接口的链路本地单播地址。
(代表性的称为“环回接口”)。
环回地址不允许用于从单一结点发出去的IPv6数据报的源地址字段。
一个目的地为环回地址的IPv6数据包不允许发送到本结点之外,也绝不能被IPv6路由器转发。
丢弃从一个接口上收到的目的地为环回地址的报文。
2.5.4全球单播地址
IPv6全球单播地址的通用格式如下:
其中:
全球路由前缀(Globalroutingprefix)分配给一个站点(子网或链路的一个集群)的(典型地,为分级结构的)值;子网ID(subsetID)是站点内部的一个链路的标识符;接口ID(InterfaceID)同2.5.1中定义。
除了以000二进制数开头的全球单播地址,都有一个64-bit的接口ID字段(也就是说n+m=64),如2.5.1节所述安排格式。
以二进制000开头的全球单播地址没有这样对接口ID字段的尺寸和结构做限制。
以二进制000开头的全球单播地址的例子如2.5.5节所述的内嵌IPv4地址的IPv6地址,和包含编码NSAP地址的IPv6地址,后者在[NSAP]有所详述。
一个以非000二进制数开头的全球单播地址(因此,有一个64-bit的接口ID字段)的例子可在[AGGR]中找到。
2.5.5内嵌IPv4的IPv6地址
IPv6过渡机制[TRAN]包括了一种技术,使得主机和路由器能自动地将IPv6数据报文封装,并穿越IPv4的基础网络。
使用这一技术的IPv6结点分配到了一个特殊的IPv6单播地址,该地址在低32比特位承载了全球IPv4地址。
这个地址类型称为“ipv4兼容IPv6地址”,并有格式:
注意,用在“IPv4兼容IPv6地址”中的IPv4地址必须是全球唯一的IPv4单播地址。
第二种类型的IPv6地址含有一个嵌入的IPv4地址,这一地址类型以IPv6地址代表IPv4结点地址,称为“IPv4映射的IPv6地址”,并有格式:
2.5.6本地使用的IPv6单播地址
已定义了两种本地使用的单播地址:
链路本地(link-local)和站点本地(site-local)地址。
链路本地用在单一链路上,站点本地用在单一站点中。
链路本地地址有如下格式:
链路本地地址被设计用来在单一链路上的寻址,用在诸如自动地址配置,邻居发现,或是没有路由器在场的情况下。
路由器不允许转发任何以链路本地地址为源地址的数据包,也不允许转发目的地为到其他链路的链路本地地址的数据包。
站点本地地址有如下格式:
站点本地地址被设计用来当不需要用全球地址前缀时,在一个站点内部寻址。
虽然子网ID长度可达54bit,但是希望与全球地址相连的站点在站点本地前缀和全球前缀上的子网ID值相同。
路由器不允许转发源地址为站点本地的数据包,也不允许将目的地为站点本地的数据包转发出本地站点。
2.6任播地址
任播地址是分配给多个(大于1个)接口(典型情况下,属于不同结点)的一个地址,发送到任播地址的具有任播属性的数据包被路由到具有该地址的按照路由协议测量距离“最近的”接口。
任播地址是从单播地址空间分配的,使用任何已定义了的单播地址格式。
因此,任播地址从语法上与单播地址无法进行区分。
当一个单播地址被配置到多于一个的接口上,就转变成一个任播地址,分配了该地址的结点必须做明确地配置,以知道该地址是一个任播地址。
对于任何一个已分配的任播地址,有一个最长前缀P,指出分配了该任播地址的其他接口所属的拓扑区域。
在P所标识的区域,任播地址必须做为路由系统维护的个别的表项(即通常所说的“主机路由”);在P未标识的区域,可以按P前缀聚合任播地址成为路由表项。
注意最差的情况就是一个任播地址集合的P前缀可能是空前缀,即集合中的成员可能没有拓扑位置。
这种情况下,任播地址必须做为单独的路由表项在整个Internet网络中进行维护,这样又引发了一个严重的比例限制,即可以支持多少个这样的“全球”任播集合因此,不希望对这种全球任播地址做支持或严格限制这种支持。
任播地址是打算用来识别属于某个组织的路由器集合,该组织提供因特网服务。
这些地址可用于IPv6路由包头的中间地址,使一个包通过某个特定的服务供应商或一系列服务供应商进行传递。
其他可能的用法是用于识别与一个特殊子网相连的路由器的集合,或是识别提供一个表项的路由器集合,该表项通往某个特殊路由域。
广泛并自由的使用任播地址的经验非常少,当以完全一般性的方式[ANYCST]使用任播地址时,存在一些已知的复杂性和危险性。
直到获得更多的经验和指明的解决方案,对IPv6任播地址实施以下的限制:
任播地址不允许用于IPv6数据包的源地址字段;
任播地址不允许分派给IPv6主机,即只能分派给IPv6路由器。
注:
主机路由是一种针对特定IPv6地址的路由。
主机路由允许以IPv6地址为基础进行路由操作。
对于主机路由,路由前缀是一个具有128位前缀的特定IPv6地址。
2.6.1必需的任播地址
子网路由器(Subset-Router)任播地址是预定义的。
格式如下:
任播地址中的子网前缀,标识了一个特殊链路的前缀。
链路上接口标识符为0的接口的任播地址和单播地址在符完全相同。
发向子网路由器任播地址的数据包将被送到该子网中的一台路由器。
所有在某一子网上有接口存在的路由器都必须支持该子网路由器任播地址。
2.7多播地址
一个IPv6多播地址是一组接口(典型的属于不同结点)的标识符。
一个接口可属于任意数目的多播组。
多播地址的格式如下:
flgs是一个4个标志位的集合:
+-+-+-+-+
|0|0|0|T|
+-+-+-+-+
高三位标志位做为保留位,且必须初始化为0;
T=0表示一个永久指派(“知名(well-known)”)组播地址,由IANA(互联网地址分派机构)指派的。
T=1表示一个非永久指派(“临时(transient)”)组播地址。
scop是一个多播范围值,用于限制多播组的范围。
值是:
0:
保留(reserved)
1:
接口本地范围(interface-localscope)
2:
链路本地范围(link-localscope)
3:
保留(reserved)
4:
管理本地范围(admi-localscope)
5:
站点本地范围(site-localscope)
6:
(未指派的)(unassigned)
7:
(未指派的)(unassigned)
8:
组织机构本地范围(organization-localscope)
9:
(未指派的)(unassigned)
A:
(未指派的)(unassigned)
B:
(未指派的)(unassigned)
D:
(未指派的)(unassigned)
E:
全球范围(globalscope)
F:
(未指派的)(unassigned)
接口本地范围的跨度为一个结点的单一接口,只对多播的环回传送有用。
链路本地和站点本地范围的跨度与相应单播范围的拓扑区域相同。
管理本地范围是必须管理配置的最小区域,即不能从其他物理连通性或其他非多播关联的配置中自动得到的。
组织机构本地范围意欲跨越属于单个组织的多个站点。
标识为“(未指派的)”的范围为管理者使用,用以定义额外的多播区域。
组ID标识了多播组,在给定的范围内,永久的或临时的。
永久指派的多播地址的“含义”是指独立于范围值。
例如,如果“NTP服务器组”被分配了一个永久的多播地址,其中组ID为101(Hex),那么:
FF01:
0:
0:
0:
0:
0:
0:
101意思是在与发送者处于相同的接口(即,同一个结点)上的所有NTP服务器。
FF02:
0:
0:
0:
0:
0:
0:
101意思是在与发送者处于相同链路上的所有NTP服务器。
FF05:
0:
0:
0:
0:
0:
0:
101意思是在与发送者处于同一站点的所有NTP服务器。
FF0E:
0:
0:
0:
0:
0:
0:
101意思是Internet网上所有的NTP服务器。
非永久分配的多播地址只有在给定的范围下才有意义。
例如,在站点中一个标识为非永久的,站点本地的多播地址FF05:
0:
0:
0:
0:
0:
0:
101,与另外的一站点中使用相同的组播地址的组没有任何关系,也和在不同范围的使用的相同组ID的非永久组无关系,也和有着相同组ID的永久组没有关系。
多播地址不允许用做IPv6数据包源地址,也不允许在任何路由报头中出现。
路由器转发多播数据包,不允许超出目的多播地址中的scop字段指示的范围。
不允许结点产生一个scop字段的保留值为0的组播数据包;若是收到这样的数据包,则丢弃。
结点也不应该产生这样的数据包,该数据包发向scop字段含有保留值为F的多播地址;如果发送出去或接收到这样的包,必须视它与去往全球(scop值为E)组播地址的数据包等同。
2.7.1预定义的多播地址
下面的知名多播地址是预定义的。
本节为明确的范围值定义了相应的组ID。
不允许这些组ID用于任何其他范围值且T标志为0。
保留多播地址:
FF00:
0:
0:
0:
0:
0:
0:
0
FF01:
0:
0:
0:
0:
0:
0:
0
FF02:
0:
0:
0:
0:
0:
0:
0
FF03:
0:
0:
0:
0:
0:
0:
0
FF04:
0:
0:
0:
0:
0:
0:
0
FF05:
0:
0:
0:
0:
0:
0:
0
FF06:
0:
0:
0:
0:
0:
0:
0
FF07:
0:
0:
0:
0:
0:
0:
0
FF08:
0:
0:
0:
0:
0:
0:
0
FF09:
0:
0:
0:
0:
0:
0:
0
FF0A:
0:
0:
0:
0:
0:
0:
0
FF0B:
0:
0:
0:
0:
0:
0:
0
FF0C:
0:
0:
0:
0:
0:
0:
0
FF0D:
0:
0:
0:
0:
0:
0:
0
FF0E:
0:
0:
0:
0:
0:
0:
0
FF0F:
0:
0:
0:
0:
0:
0:
0
以上的多播地址是保留的,不应分配个任何多播组。
所有结点地址:
FF01:
0:
0:
0:
0:
0:
0:
1
FF02:
0:
0:
0:
0:
0:
0:
1
以上的多播地址标识了全部IPv6结点的组,其中范围值1(接口本地)或2(链路本地)。
所有路由器地址:
FF01:
0:
0:
0:
0:
0:
0:
2
FF02:
0:
0:
0:
0:
0:
0:
2
FF05:
0:
0:
0:
0:
0:
0:
2
以上多播地址标识了全部IPv6路由器的组,其中范围值1(接口本地),2(链路本地),或5(站点本地)。
请求结点地址(Solicited-nodeaddress)
FF02:
0:
0:
0:
0:
1:
FFXX:
XXXX
请求结点多播地址做为一个结点的单播和任播地址的一个功能计算的。
请求结点地址按如下方式形成:
以一个(单播或任播)地址的低24位,与前缀FF02:
0:
0:
0:
1:
FF/104相拼接,结果产生一个
处于
FF02:
0:
0:
0:
0:
1:
FF00:
0000
到
FF02:
0:
0:
0:
0:
1:
FFFF:
FFFF
范围的一个多播地址。
例如:
对应于IPv6地址为4037:
:
01:
800:
200E:
8C6C的请求结点的多播地址为FF02:
:
1:
FF0E:
8C6C。
由于多个高位前缀与不同聚合相关,只是高位不同的IPv6地址,将映射到相同的请求节点地址,从而减少了一个结点必须加入的多播地址数目。
结点必须为每个已分配的单播和任播地址,计算并加入(在正确的接口上)相关的请求结点多播地址。
2.8一个结点必须有的地址
主机必须识别以下标识自己的地址:
o每个接口上的链路本地地址
o给该结点接口上(自动或手工)配置的任何额外的单播和任播地址。
o环回地址。
o2.7.1节定义的所有结点多播地址。
o每个单播或任播地址的请求结点多播地址。
o结点所属的所有其他组的多播地址
路由器必须识别所有主机必须识别的地址,再加上下面的地址来标识自己:
o所有配置为路由器的接口上的子网路由器任播地址
o路由器上被配置的全部其他的任播地址
o2.7.1节定义的所有路由器多播地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Iv 地址 结构