IPv6


IPv6 (正體)

跳过字词转换说明

网络协议
应用层
DHCP · DNS · FTP · Gopher · HTTP · IMAP4 · IRC · NNTP · XMPP · POP3 · SIP · SMTP · SNMP · SSH · TELNET · RPC · RTCP · RTP ·RTSP · SDP · SOAP · GTP · STUN · NTP · SSDP · 更多
传输层
TCP · UDP · TLS · DCCP · SCTP · RSVP · PPTP · 更多
网络层
IP (IPv4 · IPv6) ·

ICMP · ICMPv6 · IGMP · RIP ·

OSPF · BGP · IS-IS · IPsec · 更多
数据链路层
Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) · ARP · RARP · ATM · DTM · 令牌环 · 以太网 · FDDI · 帧中继 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN · 更多
物理层
以太网 · 调制解调器 · PLC(Power Line Communication) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线 · 更多
本模板:查看  讨论  编辑  历史

IPv6是互联网协议第四版(IPv4)的更新版;最初它在IETF的 IPng选取过程中胜出时称为互联网下一代网际协议(IPng),IPv6是被正式广泛使用的第二版互联网协议。

现有标准IPv4只支持大概40亿(232)个网络地址,而IPv6支持2128(约3.4 ×1038)个,这等价于在地球上每平方英寸有4.3×1020地址(6.7×1017地址/mm2)。(IPv5不是IPv4的继承,而是实验性的面向流的数据流协议,用来对声音,图像等提供支持。)

目录

背景与目标

促使IPv6形成的主要原因是网络空间的匮乏。从1990年开始,互联网工程任务小组Internet Engineering Task Force,简称IETF)开始规划IPv4的下一代协议,除要解决即将遇到的IP地址短缺问题外,还要发展更多的扩充功能,为此IETF小组创建IPng,以让后续工作顺利进行。1994年,各IPng领域的代表们于多伦多举办的IETF会议中正式提议IPv6发展计划,该提议直到同年的11月17日才被认可,并于1998年8月10日成为IETF的草案标准。

IPv6的计划是建立未来互联网扩充的基础,其目标是取代IPv4,预计在2025年以前IPv4仍会被支持,以便给新协议的修正留下足够的时间。

虽然IPv6在1994年就已被IETF指定作为IPv4的下一代标准,然而在世界范围内使用IPv6部署的公众网[1]与IPv4相比还非常的少[2]

IPv6能解决的内核问题与互联网目前所面临的关键问题之间出现了明显的偏差,难以给互联网的发展带来革命性的影响。与IPv4的各种地址复用解决方案相比,IPv6能够降低复杂性和成本,然而目前却只有制造商较能够感受到这个优势,用户和运营商无法直接感受到,导致产业链缺乏推动IPv6的动力。 [3]

IPv6 编址

从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373RFC 2374定义的IPv6地址,就像下面章节所描述的,有128位长;IPv6地址的表达形式一般采用32个十六进制数。

IPv6中可能的地址有2128 ≈ 3.4×1038个。也可以想象为1632个因为32位地址每位可以取16个不同的值(参考组合数学)。

在很多场合,IPv6地址由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)

IPv6地址表示

IPv6地址为128位长度,但通常写做8组每组四个十六进制的形式。例如:

2001:0db8:85a3:08d3:1319:8a2e:0370:7344

是一个合法的IPv6地址。

如果四个数字都是零,可以被省略。例如:

2001:0db8:85a3:0000:1319:8a2e:0370:7344

等同于

2001:0db8:85a3::1319:8a2e:0370:7344

遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:

2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab

都是合法的地址,并且他们是等价的。但

2001::25de::cade

是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)

同时前导的零可以省略,因此:

2001:0DB8:02de::0e13

等于

2001:DB8:2de::e13

如果这个地址实际上是IPv4的地址,后32位可以用10进制数表示;因此:

ffff:192.168.89.9 等价于::ffff:c0a8:5909,但不等价于::192.168.89.9 和::c0a8:5909。
ffff:1.2.3.4格式叫做IPv4映射地址,是不建议使用的。而::1.2.3.4格式叫做IPv4一致地址

IPv4 地址可以很容易的转化为IPv6格式。举例来说,如果IPv4的一个地址为135.75.43.52(十六进制为0x874B2B34),它可以被转化为0000:0000:0000:0000:0000:0000:874B:2B34或者::874B:2B34。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为::135.75.43.52。

IPv6 地址的分类

IPv6 地址可分为三种:[1]

  • 单播(unicast)地址
单播地址标示一个网络接口。协议会把送往地址的封包投送给其接口。 IPv6 的单播地址可以有一个代表特殊地址名字的范畴,如 link-local 地址和唯一区域地址(ULA,unique local address)。
  • 任播(anycast)地址
任播地址用于指定给一群接口,通常这些接口属于不同的节点。若封包被送到一个任播地址时,则会被转送到成员中的其中之一。通常会根据路由协议,选择 "最近" 的成员。任播地址通常无法轻易分别:它们拥有和正常单播地址一样的结构,只是会在路由协议中将多个节点加入网络中。
  • 多播(multicast)地址
多播地址也被指定到一群不同的接口,送到多播地址的封包会被传送到所有的地址。多播地址由皆为一的字节起始,亦即:它们的前置为 FF00::/8 。其第二个字节的最后四个位用以标明 "范畴" 。
一般有 node-local(0x1)、link-local(0x2)、site-local(0x5)、organization-local(0x8)和 global(0xE)。多播地址中的最低 112 位会组成多播组群识别码,不过因为传统方法是从MAC 地址产生,故只有组群识别码中的最低 32 位有使用。定义过的组群识别码有用于所有节点的多播地址 0x1 和用于所有路由器的 0x2。
另一个多播组群的地址为 "solicited-node 多播地址",是由前置 FF02::1:FF00:0/104 和剩余的组群识别码(最低 24 位)所组成。这些地址允许经由邻居发现协议(NDP,Neighbor Discovery Protocol)来解译链接层地址,因而不用干扰到在区网内的所有节点。

特殊地址

IANA 维护官方的(英文)IPv6 地址空间列表。全局的单播地址的指定可在 RIR's 或 中找到(英文)GRH DFP pages

IPv6 中有些地址是有特殊意涵的:

未指定地址
  • ::/128 - 所有位皆为零的地址称作未指定地址。这个地址不可指定给某个网络接口,并且只有在主机尚未知道其来源 IP 时,才会用于软件中。路由器不可转送包含未指定地址的封包。
Link local 地址
  • ::1/128 - 是一种单播绕回地址。如果一个应用程序将封包送到此地址, IPv6 堆栈会转送这些封包绕回到同样的虚拟接口(相当于 IPv4 中的 127.0.0.1)。
  • fe80::/10 - 这些 link-local 地址指明,这些地址只在区域连接中是合法的,这有点类似于 IPv4 中的 169.254.0.0/16
唯一区域位域
  • fc00::/7 - 唯一区域地址(ULA,unique local address)只可在一群网站中绕送。这定义在 RFC 4193 中,是用来取代 site-local 位域。这地址包含一个 40 位的伪随机数,以减少当网站合并或封包误传到网络时碰撞的风险。这些地址除了只能用于区域外,还具备全局性的范畴,这点违反了唯一区域位域所取代的 site-local 地址的定义。
多播地址
  • ff00::/8 -这个前置表明定义在 "IP Version 6 Addressing Architecture"(RFC 4291)中的多播地址[2]。其中,有些地址已用于指定特殊协议,如ff0X::101 将到达所有区域的 NTP 服务器(RFC 2375)。
Solicited-node 多播地址
  • ff02::1:FFXX:XXXX - XX:XXXX 为相对应的单播或任播地址中的三个最低的字节。
IPv4 转译地址
  • ::ffff:0:0/96 - 用于IPv4映射地址(参见以下的 Transition mechanisms)。
  • 2001::/32 - 用于 Teredo tunneling 。
  • 2002::/16 - 用于 6to4 。
ORCHID
  • 2001:10::/28 - ORCHID (Overlay Routable Cryptographic Hash Identifiers) (RFC 4843)。这些是不可绕送的 IPv6 地址,用于加密杂凑识别。
文件
  • 2001:db8::/32 - 这前置用于文件(RFC 3849)。这些地址应用于 IPV6 地址的示例中,或描述网络架构。
遭舍弃或删除的用法
  • ::/96 - 这个前置曾用于IPv4 兼容地址,现已删除。
  • fec0::/10 - 这个 site-local 前置指明这地址只在组织内合法。它已在 2004 年九月的 RFC3879 中拾,并且新系统不应该支持这类型的地址。

IPv6 封包

IPv6封包的架构说明。

IPv6封包由两个主要部分组成:头部和负载。

包头是包的前40字节并且包含有源和目的地址,协议版本,通信类别(8位,包优先级),流标记(20位,QoS服务质量控制),负载长度(16位),下一个头部(用于向后兼容性),和跳段数限制(8位,生存时间,相当于IPv4中的TTL)。后面是负载,至少1280字节长,或者在可变MTU(最大传输单元)大小环境中这个值为1500字节。负载在标准模式下最大可为65535字节,或者在扩展包头的"jumbo payload"选项进行设置。

IPv6曾有两个有着细微差别的版本;在RFC 1883中定义的原始版本(现在废弃)和RFC 2460中描述的现在提议的标准版本。两者主要在通信类别这个选项上有所不同,它的位数由4位变为了8位。其他的区别都是微不足道的。

分段(Fragmentation)只在IPv6的主机中被处理。在IPv6中,可选项都被从标准头部中移出并在协议字段中指定,类似于IPv4的协议字段功能。

IPv6和域名系统

IPv6地址在域名系统中为执行正向解析表示为AAAA记录(所谓4A记录)(类似的IPv4表示为A记录A records);反向解析在ip6.arpa(原先ip6.int)下进行,在这里地址空间为半字节16进制数字格式。这种模式在RFC 3596给与了定义。

AAAA模式是IPv6结构设计时的两种提议之一。另外一种正向解析为A6记录并且有一些其他的创新像二进制串标签和DNAME记录等。RFC 2874和它的一些引用中定义了这种模式。

AAAA模式只是IPv6域名系统的简单概括,A6模式使域名系统中检查更全面,也因此更复杂:

  • A6记录允许一个IPv6地址在分散于多个记录中,或许在不同的区域;举例来说,这就在原则上允许网络的快速重编号。
  • 使用域名系统记录委派地址被DNAME记录(类似于现有的CNAME,不过是重命名整棵树)所取代。
  • 一种新的叫做比特标签的类型被引入,主要用于反向解析。

2002年8月RFC 3363中对AAAA模式给与了有效的标准化(在RFC 3364有着对于两种模式优缺点的更深入的讨论)。

IPv6部署与应用

2004年7月ICANN声称互联网的根域名服务器已经经过改进同时支持IPv6和IPv4[4]

缺点:

  • 需要在整个互联网和它所连接到的设备上建立对IPv6的支持
  • 从IPv4访问时的转换过程中,在网关路由器(IPv6<-->IPv4)还是需要一个IPv4地址和一些NAT(=共享的IP地址),增加了它的复杂性,还意味着IPv6许诺的巨大的空间地址不能够立刻被有效的使用。
  • 遗留的结构问题,例如在对IPv6 multihoming支持上一致性的匮乏。

工作:

  • 6bone
  • ICMPv6
  • IPv6 multihoming

转换机制

在 IPv6 完全取代 IPv4 前,需要一些转换机制[3]使得只支持 IPv6 的主机可以连络 IPv4 服务,并且允许孤立的 IPv6 主机及网络可以借由 IPv4 设施连络 IPv6 互联网。

在 IPv6 主机和路由器与 IPv4 系统共存的时期时,RFC2893RFC2185 定义了转换机制。这些技术,有时一起称作简单互联网转换(SIT,Simple Internet Transition)。[4] 包含:

  • 运作于主机和路由器之间的双堆栈 IP 实现
  • 将 IPv4 嵌入 IPv6 地址
  • IPv6 立于 IPv4 之上的隧道机制
  • IPv4/IPv6 报头转换

双堆栈

将 IPv6 视为一种 IPv4 的延伸,以共享代码的方式去实现网络堆栈,其可以同时支持 IPv4 和 IPv6 ,如此是相对较为容易的。如此的实现称为双堆栈,并且,一个实现双堆栈的主机称为双堆栈主机。这步骤描述于 RFC 4213

目前大部分 IPv6 的实现使用双堆栈。一些早期实验性实现使用独立的 IPv4 和 IPv6 堆栈。

穿隧

为了连通 IPv6 互联网,一个孤立主机或网络需要使用现存 IPv4 的基础设施来携带 IPv6 封包。这可由将 IPv6 封包装入 IPv4 封包的穿隧协议来完成,实际上就是将 IPv4 当成 IPv6 的链接层。

IP 协议号码的 41 号用来标示将 IPv6 数据讯幀直接装入 IPv4 封包。IPv6 亦能将入 UDP 封包,如为了跨过一些会阻挡协议 41 交通的路由器或 NAT 设备。其它流行的封装机制则有AYIYA和GRE。

自动穿隧

自动穿隧指路由设施自动决定隧道端点的技术。RFC 3056 建议使用6to4穿隧技术来自动穿隧,其会使用 41 协议来封装。[5] 隧道端点是由远程知名的 IPv4 任播地址所决定,并在本地端嵌入 IPv4 地址信息到 IPv6 中。现今 6to4 是广泛布署的。

Teredo 是使用 UDP 封装的穿隧技术,据称可跨越多个 NAT 设备。 [6] Teredo 并非广泛用于布署的,但一个实验性版本的 Teredo 已安装于 Windows XP SP2 IPv6 堆栈中。IPv6,包含 6to4 穿隧和 Teredo 穿隧,在 Windows Vista 中默认是激活的。[7]许多 Unix 系统只支持本地的 6to4,但 Teredo 可由如 Miredoo 的第三方软件来提供。

ISATAP[8] 借由将 IPv4 地址对应到 IPv6 的 link-local 地址,从而将 IPv4 网络视为一种虚拟的 IPv6 区域连接。不像 6to4 和 Teredo 是站点间的穿隧机制, ISATAP 是一种站点内机制,意味着它是用来设计提供在一个组织内节点之间的 IPv6 连接性。

组态穿隧 (6in4)

组态穿隧中,如6in4穿隧,隧道端点是要明确组态过的,可以是借由管理员手动或操作系统的组态机制,或者借由如 tunnel broker 等的自动服务。[9]组态穿隧通常比自动穿隧更容易去除错,故建议用于大型且良好管理的网络。

组态穿隧在 IPv4 隧道上,使用网际协议中号码的 41 号。

用于只支持 IPv6 主机的代理和转译

在局域网际网络注册管理机构耗尽所有可使用的 IPv4 地址后,非常有可能新加入互联网的主机只具有 IPv6 连接能力。对这些须要向后兼容以能访问 IPv4 资源的客户端,须要布署合适的转换机制。

一种转换技术是使用双堆栈的应用层代理,如网页代理服务器。

一些对于应用程序无法得知但在其低层使用类 NAT 转换技术也曾被提出。但因为一般应用层协议所要求的能力其应用太广,其中大部分都被认定在实际上太不可靠,并且被认为应删除。

主要的IPv6公告

  • 2003年日本经济新闻(在2003年被CNET亚洲机构引用)报告中说日本、中国和韩国声称已经决定要在网络技术中寻求领先,将部分参与IPv6的开发并在2005年开始全面采用IPv6。
  • ICANN在2004年7月20日发表声明,称DNS根服务器已经建立了对应日本(.jp)和韩国(.kr)的顶级域名服务器的AAAA记录,序列号为2004072000。对应法国的(.fr)IPv6记录会再晚一点时间加入。这就开放了IPv6的运作。

参看

相关的IETF工作组

  • 6bone:IPv6 Backbone
  • ipng:IP Next Generation(concluded)
  • ipv6:IP Version 6
  • ipv6mib:IPv6 MIB(concluded)
  • multi6:Site Multihoming in IPv6
  • v6ops:IPv6 Operations

参考资料

  1. ^ RFC 2373 - IP Version 6 Addressing Architecture
  2. ^ (英文) IPv6 多播地址
  3. ^ IPv6 Transition Mechanism / Tunneling Comparison
  4. ^ Rodriguez, Adolfo,John Gatrell; John Karas; Roland Peschke(2001年8月6日).Internet transition - Migrating from IPv4 to IPv6.TCP/IP Tutorial and Technical Overview.IBM.于2008年8月15日查阅.原文:“These techniques are sometimes collectively termed Simple Internet Transition (SIT).”
  5. ^ RFC 3056: Connection of IPv6 Domains via IPv4 Clouds
  6. ^ RFC 4380: Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)
  7. ^ The Windows Vista Developer Story: Application Compatibility Cookbook
  8. ^ RFC 4214: Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)
  9. ^ RFC 3053: IPv6 Tunnel Broker
  • RFC 2460 - Internet Protocol, Version 6 - 现在版本
  • RFC 1883 - Internet Protocol, Version 6 - 旧版本

外部链接

xxx





stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History