IPv6地址

将IPv6地址分解为 二进制 形式。

一个因特网协议第6版地址IPv6地址)是用于标识所涉及的数字标签的网络接口的计算机的一个或网络节点参与一个IPv6的 计算机网络

一个IP地址用于识别的单个网络接口的目的主机,定位在网络上,并且因此允许的路由IP包的主机之间。对于路由,IP地址出现在数据包标题的字段中,表示数据包的来源和目的地。

IPv6是继任者的第一寻址的基础设施网络互联网协议第4版(IPv4)的。与将IP地址定义为32位值的IPv4不同,IPv6地址的大小为128位。因此,与IPv4相比,IPv6的地址空间大大扩展

寻址方法编辑]

IPv6地址通过网络中常见的主要寻址和路由方法进行分类:单播寻址,选播寻址和多播寻址。[1]

单播地址标识单个网络接口。Internet协议将发送到单播地址的数据包发送到该特定接口。

一个选播地址被分配给一组接口,通常属于不同的节点。根据路由协议的距离定义,发送到任播地址的数据包仅发送到其中一个成员接口,通常是最近的主机。任播地址不易被识别,它们具有与单播地址相同的格式,并且不同点仅在于它们在多个点上存在于网络中。几乎任何单播地址都可以用作任播地址。

多播地址也使用多个主机,其通过参与网络路由器之间组播分发协议获取组播地址的目的地。发送到多播地址的数据包将被传送到已加入相应多播组的所有接口。IPv6不执行广播寻址。Broadcast的传统角色被多播寻址包含到全节点链路本地多播组ff02 :: 1中但是,不推荐使用全节点组,并且大多数IPv6协议都使用专用链路本地多播组,以避免干扰网络中的每个接口。

地址格式编辑]

IPv6地址由128位组成。[1]对于每种主要寻址和路由方法,各种地址格式通过将128个地址位逻辑地划分为位组,并建立将这些位组的值与特殊寻址特征相关联的规则来识别。

单播和任播地址格式编辑]

单播任播地址通常由两个逻辑部分组成:用于路由的64位网络前缀和用于识别主机网络接口的64位接口标识符。

通用单播地址格式(路由前缀大小各不相同)
48(或更多) 16(或更少) 64
领域 路由前缀 子网ID 接口标识符

网络前缀(与路由前缀与组合的子网ID)被包含在该地址的最显著64位。路由前缀的大小可能会有所不同; 较大的前缀大小意味着较小的子网ID大小。网络管理员可以使用子网id(entifier)字段的位来定义给定网络内的子网。64位接口标识符可以使用修改的EUI-64格式从接口的MAC地址自动生成,从DHCPv6服务器获取,随机自动建立或手动分配。

链路本地地址也基于接口标识符,但使用不同的网络前缀格式。

链接本地地址格式
10 54 64
领域 字首 接口标识符

前缀字段包含54个零随后使总网络前缀相同的所有链路本地地址(二进制值1111111010. FE80 :: 64 链路本地地址前缀),使它们不可路由。

多播地址格式编辑]

根据应用程序,多播地址根据几种特定的格式规则形成。

一般多播地址格式
8 4 4 112
领域 字首 FLG SC 组ID

前缀适用于任何多播地址的二进制值11111111。

目前,flg字段中的4个标志位中有3个被定义; [1]最重要的标志位保留供将来使用。

多播地址标志 [2]
意思是0 意思当1
8 保留的 保留的 保留的
9 R(Rendezvous)[3] 聚合点没有嵌入 嵌入的集合点
10 P(前缀)[4] 没有前缀信息 基于网络前缀的地址
11 T(瞬态)[1] 众所周知的多播地址 动态分配的多播地址

4位字段范围SC)用于指示在其中地址是有效的和独特的。

有特殊的组播地址,如Solicited Node。

请求节点多播地址 格式
8 4 4 79 9 24
领域 字首 FLG SC 那些 单播地址

SC(OPE)字段保存的二进制值0010(链路本地)。被请求节点多播地址是作为节点的单播或任播地址的函数计算的。通过将单播或任播地址的最后24位复制到多播地址的最后24位来创建请求节点多播地址。

基于单播前缀的多播地址格式 [3]  [4]
8 4 4 4 4 8 64 32
领域 字首 FLG SC 水库 RIID PLEN 网络前缀 组ID

链接范围的多播地址使用类似的格式。[5]

表示形式编辑]

一个IPv6地址被表示为八组四个十六进制数字,每组代表16 (两个八位组,有时也称为六进制[6] [7])。这些组由冒号(:)分隔。一个IPv6地址的例子是:

2001年:将0db8:85±3:0000:0000:8a2e:0370:7334

十六进制数字不区分大小写,但IETF建议使用小写字母。通过几种技术可以简化八个4位数组的完整表示,消除部分表示。

组中的前导零可以省略,但每个组必须保留至少一个十六进制数字。[1]因此,示例地址可写为:

2001:DB8:85±3:0:0:8a2e:370:7334

一个或多个连续的只包含零的组可以用一个空的组替换,使用两个连续的冒号(::)。[1]然而,替换只能在地址中应用一次,因为多次出现会造成模糊表示。因此,示例地址可以进一步简化:

2001:DB8:85±3 :: 8a2e:370:7334

本地主机(环回)地址0:0:0:0:0:0:0:1和IPv6未指定地址0:0:0:0:0:0:0:0被缩减为:: 1::

在将互联网从IPv4过渡到IPv6时,通常在混合寻址环境中运行。对于这种使用情况,引入了一种特殊符号,它通过以熟悉的IPv4 点十进制表示法写入地址的最低有效32位来表示IPv4映射和IPv4兼容的IPv6地址,而其他96个(最重要的)位以IPv6格式写入。例如,IPv4映射的IPv6地址:: ffff:c000:0280被写为:: ffff:192.0.2.128,因此清楚地表示映射到IPv6的原始IPv4地址。

作为文本推荐的代表性编辑]

为了简化IPv6地址,标准提供了灵活性。但是,这也会使一些常见操作变得复杂:在文本文件或流中搜索特定地址,并比较两个地址以确定其等同性。为了缓解这些问题,定义了规范格式[8],用于在文本中呈现IPv6地址:

  • 每个16位字段中的前导零被抑制。例如,2001:0db8 :: 0001被呈现为2001:db8 :: 1,但显式呈现的任何全零字段都呈现为0
  • “::”不用于缩短只有一个0字段。例如,2001:db8:0:0:0:0:2:1被缩短为2001:db8 :: 2:1,但2001:db8:0000:1:1:1:1:1被渲染为2001 :db8:0:1:1:1:1:1
  • 代表尽可能缩短。连续的全零字段的最长序列被双冒号代替。如果所有零字段有多个最长的运行,则它是最左边的被压缩的。例如,2001:db8:0:0:1:0:0:1被呈现为2001:db8 :: 1:0:0:1,而不是2001:db8:0:0:1 :: 1
  • 十六进制数字表示为小写字母。例如,2001:db8 :: 1优于2001:DB8 :: 1

网络编辑]

IPv6网络使用地址块,该地址块是大小为2的幂的连续的一组IPv6地址对于给定网络中的所有主机,地址的前一组比特是相同的,称为网络地址或路由前缀

网络地址范围以CIDR表示法写入网络由块中的第一个地址(以全零结尾),斜杠(/)和与前缀的位大小相等十进制值表示。例如,编写为2001:db8:1234 :: 48的网络从地址2001:db8:1234:0000:0000:0000:0000:0000开始,并在2001年结束:db8:1234:ffff:ffff:ffff:ffff :ffff

接口地址的路由前缀可以用CIDR表示法的地址直接指示。例如,一个接口与地址配置2001:DB8:一个:: 123连接到子网DB8:一个:: 2001 64写为2001:DB8:一个:: 123 64

地址块大小编辑]

一个地址块的大小是通过写一个斜杠(/)后跟一个十进制数字来指定的,其值是网络前缀的长度(以位为单位),而不是通过明确指定块中的哪些地址。例如,前缀中有48位的地址块用48表示这样的块包含2个128 - 48 = 2 80个地址。网络前缀的值越小,块越大:a 21块的长度是24块的8倍

网络资源标识符中的文字IPv6地址编辑]

IPv6地址中的冒号(:)字符可能与资源标识符(如URIURL)的已建立语法冲突传统上使用冒号在端口号之前终止主机路径[9]为了减轻这种冲突,文本IPv6地址被包含在方括号中以这样的资源标识符,例如:

HTTP:// [2001:DB8:85±3:8D3:1319:8a2e:370:7348] /

当该URL还包含端口号时,符号为:

HTTPS:// [2001:DB8:85±3:8D3:1319:8a2e:370:7348]:443 /

尾部443是示例的端口号。

作用域文字IPv6地址编辑]

对于具有比全局范围的其他(如所描述的地址以下),并且特别是用于链路本地地址,用于发送数据包的网络接口的选择可以依赖于地址所属区:相同的地址可以是在不同的有效区域,并由每个区域中的不同主机使用。即使单个地址未在不同区域使用,这些区域中地址的地址前缀仍然可能相同,这使操作系统无法根据路由表中的信息选择出接口(这是前缀 - 基于)。

为了解决文本地址中的不明确性,区域索引必须附加到地址上,这两个地方用百分号(%)分隔[10]区域索引的语法是依赖于实现的字符串,但数字区域索引也必须得到普遍支持。以下链接本地地址:

FE80 :: 1FF:FE23:4567:890A

可能会成为例如:

FE80 :: 1FF:FE23:4567:890A%ETH2

要么:

FE80 :: 1FF:FE23:4567:890A 3%

前者(使用接口名称)在大多数类Unix操作系统(例如BSDLinuxOS X上习惯使用后者(使用接口号)是Microsoft Windows上的标准语法,但作为对此语法的支持是强制性的,它在其他操作系统上也可用。

基于BSD的操作系统(包括OS X)也支持另一种非标准语法,其中数字区域索引编码在地址的第二个16位字中。例如:

FE80:3 :: 1FF:FE23:4567:890A

在上面提到的所有操作系统中,链路本地地址的区域索引实际上是指一个接口,而不是一个区域。由于多个接口可能属于同一个区域(例如,当连接到同一个交换机时),实际上,具有不同zone-id的两个地址实际上可能是等效的,并且指向相同链路上的相同主机。

在URI中使用区域索引编辑]

当所用的统一资源标识符(URI),使用百分号的导致语法冲突,因此它必须通过转义编码%的[11]例如:

http:// [fe80 :: 1ff:fe23:4567:890a  %25  eth0] /

UNC路径名中的文字IPv6地址编辑]

Microsoft Windows操作系统中,IPv4地址是统一命名约定(UNC)路径名中的有效位置标识符但是,冒号是UNC路径名称中的非法字符。因此,在UNC名称中使用IPv6地址也是非法的。为此,Microsoft实施了一种转录算法来表示可以在UNC路径中使用的域名形式的IPv6地址。为此,微软互联网注册并保留了第二级域名 ipv6-literal.net(尽管他们在2014年1月放弃了域名[12])。IPv6地址在此名称空间内以以下方式转录为主机名或子域名:

2001:DB8:85±3:8D3:1319:8a2e:370:7348

写成

2001-db8-85a3-8d3-1319-8a2e-370-7348.ipv6-literal.net

此标记由Microsoft软件在本地自动解析,不需要任何对DNS名称服务器的查询。

如果IPv6地址包含区域索引,则它会附加到“s”字符后面的地址部分:

FE80 :: 1FF:FE23:4567:890A 3%

写成

fe80--1ff-fe23-4567-890a  s3  .ipv6-literal.net

地址范围编辑]

每个IPv6地址,除了未指定的地址(: :)外,都有一个“范围”,[10]指定网络的哪一部分有效。

单播编辑]

对于单播地址,定义了两个范围:本地链路和全局。

链路本地地址和环回地址具有链路本地范围,这意味着它们只能在单个直接连接的网络(链路)上使用。所有其他地址(包括唯一本地地址)都具有全局(或通用)范围,这意味着它们是(或可能)是全局可路由的,并且可用于连接到全球范围的地址或具有本地链接范围的地址在直接连接的网络上。[注1]

即使唯一本地地址具有全局范围,但它们并不是全局管理的。因此,只有同一管理域内的其他主机(例如组织)或协作管理域内的其他主机才能够访问这些地址(即有路由到它们)。由于它们的范围是全局性的,即使可能无法将数据包从目的地路由回源,这些地址在与任何其他全局范围地址进行通信时作为源地址也是有效的。

任播编辑]

任播地址在语法上与单播地址相同且无法区分。他们唯一的区别是行政。因此,任播地址的范围与单播地址相同。

多播编辑]

对于多播地址,该第二地址八位组的4个最低显著位(FF0 )识别地址小号应对,即其中所述多播分组应当被传播的域。预定义和保留范围[1]是:

范围值
范围名称 笔记
为0x0 保留的  
为0x1 接口本地 接口本地范围只跨越节点上的单个接口,并且仅用于多播的环回传输。
0X2 链路本地 链路本地范围跨越与相应的单播范围相同的拓扑区域。
0x3 境界本地 领域本地范围被定义为大于本地链接,由网络拓扑自动确定,并且不能大于以下范围。[13]
为0x4 管理员本地 管理本地范围是必须进行管理配置的最小范围,即不能自动从物理连接或其他非多播相关配置中派生。
0x5的 站点本地 站点本地范围旨在跨越属于组织的单个站点。
0x8中 组织本地 组织本地范围旨在跨越属于单个组织的所有网站。
0xe 全球 全球范围跨越互联网上所有可到达的节点 - 它是无限的。
0xf 保留的  

所有其他范围未分配,供管理员用于定义其他区域。

地址空间编辑]

一般分配编辑]

IPv6地址分配过程的管理委托给互联网编号分配机构(IANA)[14]通过互联网架构委员会互联网工程指导组其主要功能是将大地址块分配给地区互联网注册管理机构(RIR),地区互联网注册管理机构(RIR)的任务是分配给网络服务提供商和其他当地注册管理机构。IANA自1995年12月以来一直保留IPv6地址空间的正式分配清单。[15]

仅是总地址空间的八分之一当前被分配为使用上因特网2000 :: 3,为了提供高效路由聚合,从而减少了因特网路由表的大小; IPv6地址空间的其余部分留作将来使用或用于特殊目的。地址空间以2312的大块分配给RIR [16]

RIR将较小的块分配给本地互联网注册局,将其分发给用户。这些通常尺寸从1932[17] [18] [19]地址通常分配给最终用户的4856大小的块。[20]

全球单播指配记录可以在各个RIR或其他网站上找到。[21]

与IPv4地址分配相比,IPv6地址被分配给更大的块中的组织 - 推荐的分配是包含2 80个地址48块,比整个IPv4地址空间2个大48或大约2.8 × 10 1432个地址,大约是IPv4地址的最大分配8个地址块的7.2 × 10 16但是,在可预见的将来,总池就足够了,因为有2 128个(恰好为340,282,366,920,938,463,463,374,607,431,768,211,456)或约3.4 × 10 38(340 万亿兆亿兆)独特的IPv6地址。

每个RIR可以将它的每一个的多个的23块为512 32块,通常一个为每个ISP; 一个ISP可以将其32块划分成65 536 48块,通常一个为每一个客户; [22]客户可以创建65 536 64从它们分配的网络48块,每一个都具有2 64(18,446,744,073,709,551,616)地址。相比之下,整个IPv4地址空间只有2 32个(正好是4,294,967,296或约4.3 × 10 9)地址。

按照设计,实际上只使用地址空间的一小部分。大地址空间确保地址几乎总是可用的,这使得为了地址保护而使用网络地址转换(NAT)完全不必要。NAT越来越多地用于IPv4网络,以帮助缓解IPv4地址耗尽

特殊分配编辑]

为了在不重新编号的情况下允许提供者更改,独立于提供者的地址空间 - 由RIR直接分配给最终用户 - 取自特殊范围2001:678 :: 29

互联网交换点(IXP)被分配了2001:7f8 :: 29范围内的特殊地址,用于与其连接的ISP进行通信[23] 根名称服务器已被分配相同范围的地址。

保留任播地址编辑]

每个子网前缀中的最低地址(接口标识符设置为全零)被保留为“子网路由器”任播地址。[1]与任何一个可用路由器通话时,应用程序可以使用此地址,因为发送到此地址的数据包仅发送给一个路由器。

每个64子网前缀内的128个最高地址保留用作任播地址。[24]这些地址通常将接口标识符的57个第一位设置为1,然后是7位选播标识。网络的前缀(包括子网)要求长度为64位,在这种情况下,必须将通用/本地位设置为0以指示地址不是全局唯一的。7个最低有效位中的值为0x7e的地址被定义为移动IPv6归属代理任播地址。值为0x7f(所有位1)的地址被保留,可能不会被使用。此范围内不再有任何分配,因此也保留0x00至0x7d的值。

特殊地址编辑]

在IPv6中有许多具有特殊含义的地址。[25]它们占整个地址空间的不到2%:

特殊的地址块
地址块(CIDR) 第一个地址 最后的地址 地址数量 用法 目的
:: 0 :: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 128 路由 默认路由。
:: 128 ::   1 软件 未指定的地址。
:: 1 128个 :: 1   1 主办 环回地址到本地主机。
:: FFFF:0:0 96 :: FFFF:0.0.0.0 :: FFFF:255.255.255.255 128-96 = 2 32 = 294 967 296 软件 IPv4映射地址。
:: FFFF:0:0:0 96 :: FFFF:0:0.0.0.0 :: FFFF:0:255.255.255.255 32 软件 IPv4转换地址。
64:ff9b :: 96 64:ff9b :: 0.0.0.0 64:ff9b :: 255.255.255.255 32 全球互联网 IPv4 / IPv6翻译。[26]
100 :: 64 100 :: 100 :: FFFF:FFFF:FFFF:FFFF 64 路由 丢弃前缀。[27]
2001 :: 32 2001 :: 2001 :: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 96 全球互联网 Teredo隧道
2001:20 :: 28 2001年:20 :: 2001:2F:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 100 软件 ORCHIDv2[28]
2001:db8 :: 32 2001:DB8 :: 2001:DB8:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 96 文档 文档和示例源代码中使用的地址。
2002 :: 16 2002 :: 2002:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 112 全球互联网 的6to4寻址方案(现在已废弃)。[29]
fc00 :: 7 FC00 :: FDFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 121 专用网络 独特的本地地址[30]
fe80 :: 10 FE80 :: febf:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 118 链接 链路本地地址
ff00 :: 8 FF00 :: FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF 120 全球互联网 多播地址

单播地址编辑]

默认路线编辑]

  • :: 0 - 默认路由地址(对应于IPv4中的 0.0.0.0 0)。
    这涵盖了路由表中其他地方未指定的所有目标地址(单播,多播等)。

未指定地址编辑]

  • :: 128 - 所有零位的地址称为未指定地址(对应于IPv4中的 0.0.0.0 32)。
    绝不能将该地址分配给接口,并且只能在应用程序获知适用于未决连接的主机源地址之前用于软件。路由器不能转发具有未指定地址的数据包。
    应用程序可能正在一个或多个特定接口上监听传入连接,这些接口通过特定IP地址(以及由冒号分隔的端口号)显示在活动的Internet连接列表中。当显示未指定的地址时,这意味着应用程序正在侦听所有可用接口上的传入连接。

本地地址编辑]

  • :: 1 128个 -的环回地址为单播本地主机地址(对应于 127.0.0.1 / 8中的IPv4)。
    如果主机中的应用程序将数据包发送到此地址,则IPv6堆栈会将这些数据包循环回到同一虚拟接口上。
  • FE80 :: 10 -在链路本地地址前缀只有有效且唯一的一个链接(相当于自动配置地址的 169.254.0.0 16的IPv4)。
    在这个前缀中,只分配一个子网(54个零位),产生 fe80 :: 64的有效格式通常选择最不重要的64位作为以修改的EUI-64格式构建的接口硬件地址一个链路本地地址,需要支持IPv6的每一个接口,换句话说,应用程序可以依靠链路本地地址的存在,即使没有IPv6路由。

唯一的本地地址编辑]

  • FC00 :: 7 -唯一本地地址(Ulas公寓)旨在用于本地通信 [30] IPv4专用地址 10.0.0.0 8 172.16.0.0 12 192.168.0.0 16)。
    它们只能在一组合作站点内路由。该块被分成两半。块的下半部分( fc00 :: 8)用于全局分配的前缀,但分配方法尚未定义。上半部分( fd00 :: 8)用于“概率独特”地址,其中8前缀与40位本地生成的伪随机数字组合以获得48私人前缀。选择fd00 :: 8中的地址方式,使得两个希望彼此合并或通信的站点只会有一个可忽略的机会,它们将具有冲突的ULA地址。

从IPv4转换编辑]

  • :: FFFF:0:0 96 -此前缀用于IPv6转换机制和指定为IPv4映射的IPv6地址
    除了少数例外,该地址类型允许透明使用的传输层通过IPv6网络在IPv4协议的应用编程接口服务器应用程序只需要打开一个监听套接字处理来自使用IPv6或IPv4协议的客户端的连接。默认情况下,IPv6客户端将以本机方式处理,并且IPv4客户端在IPv4映射的IPv6地址处显示为IPv6客户端。传输的处理方式相似; 已建立的套接字可用于基于绑定到IPv6地址或IPv4映射地址来传输IPv4或IPv6数据报。
  • :: FFFF:0:0:0 96 -用于前缀IPv4的转换的地址
    这些由无状态IP / ICMP转换(SIIT)协议使用。
  • 64:ff9b :: 96 - “众所周知的”前缀。
    具有此前缀的地址用于自动IPv4 / IPv6翻译。[26]
  • 2002 :: 16 - 此前缀用于6to4寻址(也使用来自IPv4网络 192.88.99.0 24的地址)。
    6to4寻址方案现在已弃用。[29]

特殊用途地址编辑]

IANA为特殊分配 [25]  [31] 保留了一个所谓的“Sub-TLA ID”地址块,该地址块 2001:0000 :: 29 2001:01f8 :: 29 范围内的64个网络前缀组成这个区块的三项任务已经完成:
  • 2001 :: 32 - 用于Teredo隧道
  • 2001:2 :: 48 - 用于基准测试IPv6(对应于基准IPv4的 198.18.0.0 15)。
    分配给基准测试方法工作组(BMWG)。[32]
  • 2001:20 :: 28 - ORCHIDv2(Overlay Routable Cryptographic Hash Identifiers)。[28]
    这些是用于加密哈希标识符的非路由IPv6地址。

文件编辑]

  • 2001:DB8 :: 32 -此前缀在文档中使用 [33] 对应于 192.0.2.0 24 198.51.100.0 24,和 203.0.113.0 24。在IPv4)的 [34]
    应该使用的地址在任何地方给出示例IPv6地址或描述模型联网场景。

放弃编辑]

  • 0100 :: 64 - 此前缀用于丢弃流量。[27]

弃用和过时的地址编辑]

多播地址编辑]

多播地址ff0x ::其中x是任何十六进制值,保留[1],不应将其分配给任何多播组。互联网编号分配机构(IANA)管理地址保留。[35]

一些常见的IPv6多播地址如下:

地址 描述 可用范围
ff0x :: 1 所有节点地址,标识所有IPv6节点的组 可用范围1(本地接口)和2(本地链接):
  • ff01 :: 1 →接口本地的所有节点
  • ff02 :: 1 →链路本地的所有节点
ff0x :: 2 所有路由器 可用范围1(本地接口),2(本地链接)和5(本地本地):
  • ff01 :: 2 →接口本地的所有路由器
  • ff02 :: 2 →链路本地的所有路由器
  • ff05 :: 2 →站点本地的所有路由器
FF02 :: 5 OSPFIGP 2(链接本地)
FF02 :: 6 OSPFIGP指定的路由器 2(链接本地)
FF02 :: 9 RIP路由器 2(链接本地)
FF02 ::一 EIGRP路由器 2(链接本地)
FF02 :: d 所有PIM路由器 2(链接本地)
FF02 :: 1A 所有RPL路由器 2(链接本地)
ff0x :: FB mDNSv6 适用于所有范围
ff0x :: 101 所有网络时间协议(NTP)服务器 适用于所有范围
FF02 :: 1:1 链接名称 2(链接本地)
FF02 :: 1:2 所有的DHCP代理 2(链接本地)
FF02 :: 1:3 链路本地多播名称解析 2(链接本地)
FF05 :: 1:3 所有的DHCP的服务器 5(场地本地)
FF02 :: 1:FF00:0 104 被请求节点组播地址见下文 2(链接本地)
FF02 :: 2:FF00:0 104 节点信息查询 2(链接本地)

被请求节点多播地址编辑]

请求节点多播地址组ID的最低有效24位填充接口的单播或任播地址的最低有效24位。这些地址允许通过链路上的邻居发现协议(NDP)解析链路层地址,而不会干扰本地网络上的所有节点。主机需要为其配置的每个单播或任播地址加入一个请求节点多播组。

无状态地址自动配置编辑]

在系统启动时,即使通过“配置协议”(见下文)手动配置或获取全局可路由地址,节点也会在每个启用IPv6的接口上自动创建链路本地地址它是独立完成的,没有任何先前的无状态地址自动配置(SLAAC)配置,[36]使用邻居发现协议的组件该地址的前缀为fe80 :: /64

在IPv4中,典型的“配置协议”包括DHCP或PPP。虽然存在DHCPv6,但IPv6主机通常使用邻居发现协议来创建全球可路由的单播地址:主机发送路由器请求请求,IPv6 路由器响应前缀分配。[37]

这些地址的低64位用修改的EUI-64格式的64位接口标识符填充该标识符通常由该接口的所有自动配置的地址共享,其优点是只有一个多播组需要加入以进行邻居发现。为此,一个多播地址被使用,从网络形成前缀FF02 :: 1:FF00:0 104和地址的24个最低位显著。

修改的EUI-64 编辑]

64位接口标识符通常是从其48位MAC地址派生而来的MAC地址00-0C-29-0C-47-D5变成64位的EUI-64通过插入FF-FE:在中间00-0C-29- 当这个EUI-64被用来形成一个IPv6地址时,它被修改:[1]通用/本地位(EUI-64的第7个最高有效位,从1开始)的含义被反转,所以1现在意味着通用要使用网络前缀2001:db8:1:2 :: 64创建IPv6地址,它会生成地址2001:db8:1:2:0 在这种情况下,带下划线的U / L(=通用/本地)位反转为1,因为MAC地址通用唯一)。

重复地址检测编辑]

单播 IPv6地址分配给接口涉及使用邻居请求邻居通告ICMPv6类型135和136)消息对该地址的唯一性进行内部测试在建立唯一性的过程中,地址具有暂定状态。

节点加入临时地址的请求节点多播地址(如果还没有这样做),并发送邻居请求,临时地址作为目标地址,未指定地址(:: 128)作为源地址。该节点还加入全主机多播地址ff02 :: 1,因此它将能够接收邻居通告

如果一个节点收到一个以其自己的暂定地址作为目标地址的邻居请求,那么该地址不是唯一的。如果节点接收到临时地址作为广告来源的邻居广告,情况也是如此。只有在成功确定地址是唯一的之后,才可以由接口分配和使用该地址。

地址使用期限编辑]

绑定到接口的每个IPv6地址具有固定的生命周期。生命时间是无限的,除非被配置为更短的时期。有两种生命周期管理地址状态:首选生命周期有效生命周期[38]可以在提供用于自动配置的值的路由器配置生命周期,或者在手动配置接口上的地址时指定生命周期

当一个地址被分配给一个接口时,它会得到状态“首选”,它在首选生命周期中保持不变。在该生命周期过期后,状态变为“不推荐”,并且不应使用此地址建立新的连接。该地址在其有效期限也到期后变为“无效”; 该地址将从接口中删除,并可能在互联网上的其他地方分配

注意:在大多数情况下,由于新的路由器通告(RA)会刷新定时器,因此寿命不会过期。但是,如果没有更多的RA,最终会延长首选生命周期,并且地址会变成“已弃用”。

临时地址编辑]

无状态地址自动配置用于创建接口标识符的全局唯一静态MAC地址提供了跟踪用户设备的机会 - 跨时间和IPv6网络前缀更改 - 以及用户。[39]为了降低用户身份的前景被永久与IPv6地址部分,节点可以创建基于随时间变化的随机的比特串与接口标识符临时地址[40]和相对短的寿命(数小时至数天),之后他们被替换为新地址。

临时地址可以用作发起连接的源地址,而外部主机通过查询域名系统来使用公共地址。

为IPv6配置的网络接口在OS X Lion及更高版本的Apple系统以及Windows VistaWindows 2008 Server和更高版本的Microsoft系统中默认使用临时地址

默认地址选择编辑]

启用IPv6的网络接口通常具有多个IPv6地址,例如链接本地地址和全局地址,永久地址与临时地址。IPv6引入了地址范围和选择偏好的概念,为与另一主机通信时的源地址和目标地址选择产生了多种选择。

偏好选择算法[41]选择用于与特定目的地进行通信中使用的最合适的地址(包括在双栈实现中使用IPv4映射地址),该算法基于用户可定制的偏好表,该偏好表将每个具有优先级的路由前缀。默认表如下:[41]

字首 优先权 标签 用法
:: 1 128个 50 0 本地主机
:: 0 40 1 默认单播
:: FFFF:0:0 96 35 4 IPv4映射的IPv6地址
2002 :: 16 三十 2 的6to4
2001 :: 32 Teredo隧道
fc00 :: 7 3 13 独特的本地地址
:: 96 1 3 与IPv4兼容的地址(不建议使用)
fec0 :: 10 1 11 站点本地地址(不建议使用)
3ffe :: 16 1 12 6bone(返回)

缺省配置将优先选择放在IPv6上,而不是IPv4上,并将优先级放在最小可能范围内的目标地址上,以便本地链路本地通信优于全局路由路径,否则同样适用。前缀策略表类似于路由表,其中优先级值用作链路成本的角色,其中较高优先级表示为较大值。源地址最好具有与目标地址相同的标签值。根据最长匹配的最高有效位序列将地址匹配到前缀。候选源地址从操作系统获得,候选目标地址可以通过域名系统(DNS)查询。

域名系统编辑]

域名系统中主机名AAAA资源记录映射到IPv6地址,即所谓的quad-A记录。[42]对于反向查找的IETF保留域ip6.arpa,其中名称空间被分层由1位分割十六进制的表示半字节的IPv6地址的单元(4位)。

与在IPv4中一样,每台主机在DNS中由两个DNS记录表示:地址记录和反向映射指针记录。例如,zone example.com中名为derrick主机具有唯一本地地址 fdda:5cc1:23:4 :: 1f它的quad-A地址记录是

derrick.example.com。在AAAA fda:5cc1:23:4 :: 1f

其IPv6指针记录是

f.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0.3.2.0.0.1.cc5.addfip6.arpa。IN PTR derrick.example.com。

该指针记录可以在多个区域中定义,具体取决于区域dfip6.arpa中的授权链。

DNS协议是独立于它的传输层协议。查询和回复可以通过IPv6或IPv4传输进行传输,无论请求的数据的地址族如何。

AAAA记录字段
名称 域名
类型 AAAA(28)
互联网(1)
TTL 时间在几秒钟内
RDLENGTH RDATA字段的长度
RDATA 128位IPv6地址,网络字节顺序

转型挑战编辑]

截至2009年,家庭网络NAT设备和路由器中的许多DNS解析器仍不正确地处理AAAA记录。[43]其中的一些简单地丢弃,而不是正确地返回适当的负DNS响应了这种记录的DNS请求。由于请求被删除,发送请求的主机必须等待超时才能触发。当连接到双栈IPv6 / IPv4主机时,这通常会导致速度变慢,因为在尝试使用IPv4之前,客户端软件将等待IPv6连接失败。客户端软件使用Happy Eyeballs算法可以通过同时尝试IPv6和IPv4连接来缓解此问题,然后使用先连接的任何一个。

历史笔记编辑]

弃用和过时的地址编辑]

  • 站点本地前缀fec0 :: 10指定地址仅在组织的站点网络中有效。它是1995年12月原始编址体系结构[44]的一部分,但其使用在2004年9月被弃用[45],因为术语站点的定义是不明确的,导致了混淆路由规则。新网络不得支持这种特殊类型的地址。在2005年10月,一个新的规范[30]唯一的本地地址替换了这个地址类型
  • 地址块0200 :: 7是在1996年8月定义为OSI NSAP映射前缀集,[46] [47] 但在2004年12月被废弃[48]
  • 最初称为IPv4兼容地址的96位零值前缀:: 96在1995年被提及[44],但在1998年首次被描述。[49]这个地址范围用于表示IPv6内的IPv4地址过渡技术。这样一个IPv6地址的第一个(最重要的)96位设置为零,而最后的32位是表示的IPv4地址。在2006年2月,互联网工程任务组(IETF)不赞成使用IPv4兼容地址。[1] 该地址格式的唯一剩余使用是表示具有固定大小成员的表或数据库中的IPv4地址,该地址必须能够存储IPv6地址。
  • 地址块3ffe :: 16在1998年12月被分配用于6bone网络的测试目的[49]在此之前,地址块5f00 :: 8被用于此目的。两个地址块都在2006年6月返回到地址池。[50]
  • 由于6to4操作问题,地址块2002 :: 16的使用正在减少,因为自2015年5月起不推荐使用6to4机制。[29]虽然不推荐使用IPv4地址块192.88.99.0 24,但2002 :: 16是不。
  • 2007年4月,地址块2001:10 :: 28被分配给覆盖可路由加密哈希标识符(ORCHID)。[51]它用于实验用途。2014年9月指定了第二版ORCHID [28],并且在引入了2001年版块:20 :: 28之后,原始块返回给了IANA

杂项编辑]

  • 对于反向DNS查找,IPv6地址最初在DNS区域ip6.int中注册,因为预计顶级域名arpa将被撤销2000年,互联网架构委员会(IAB)恢复了这一意图,并于2001年决定,ARPA应该保留其原有功能。ip6.int中的域名被移到ip6.arpa [52],并且域名ip6.int在2006年6月6日被正式删除。
  • 2011年3月,IETF完善了将地址块分配给终端站点的建议。[20]而不是指定的任一4864,或128(根据IAB的和IESG的观点的2001),[53]的互联网服务提供商应该考虑分配更小的块(例如,56)给最终用户。ARINRIPEAPNIC区域注册的政策鼓励56的分配在适当情况下。[20]
  • 本来,存在把域名转换为IPv6地址两点建议:使用一个AAAA记录,[54]另一个使用A6记录。[55] AAAA记录是主流的方法,与IPv4的A记录相当,提供了从主机名到IPv6地址的简单映射。使用A6记录的方法使用分层方案,其中后续组的地址位映射由额外的A6记录指定,从而通过更改单个A6记录为网络中的所有主机提供重新编号的可能性。由于A6格式的预期收益并没有认为比感知成本,[56] [57] [58] [59]的方法被转移到实验的状态在2002年,[57]并最终在2012年达到历史地位[59]

猜你喜欢

转载自blog.csdn.net/neo233/article/details/80444006