1、IPv6 早期被称为 IPng (next generation)目前是 IP 协议的最新版本
IP 协议是一种网络层协议,采用 IP协议构建的数据通信网络可提供高效的数据、语音和图像的传输服务。目前,在 Internet 上广泛采用的 IP协议是 IPv4 版。随着 Internet 的迅猛发展,在充分享用了 IPv4 协议的简单高效的同时,人们也就意识到了IPv4 的 32 位地址空间是不够的;因此,必须建立新的 IP 标准。
2、海量 IPv6 地址空间
IPv6 最根本的改变是提供了未来对全球范围内可确定的地址空间的需求。基于移动设备的应用,如:个人数字设备(PDAs), 移动电话,汽车, 家庭网络和其他的移动数据通信设备都需要全球范围内可确定的地址。IPv6 将网络地址位数从 32 位扩展到 128 位, 这代表着可以为地球上的任何需要联网的设备提供唯一确定的地址。正是因为有了全球范围内可确定的地址,IPv6 提供了全球范围内的地址可达,端到端的安全通信,以及对所有对地址有要求的应用和服务的支持。 除此之外,丰富的 IPv6 地址空间消除了网络中的NAT(Network Address Translation)瓶颈,提高了网络效率。
二、IPv6地址
由于 IPv6 的地址有 128 位长,比 32 位的 IPv4 地址表示起来复杂的多。目前,IPv6 的地址由一串 16 进制的数字表示,每 16 位之间用分号(:)隔开,格式如下: x:x:x:x:x:x:x:x.下面是两个 IPv6 地址例子:
2001:0DB8:7654:3210:FEDC:BA98:7654:3210
1080:0:0:0:8:800:200C:417A
通常情况下 IPv6 地址会包含连续的 0。为避免 IPv6 地址表示的复杂性,连续的 0 可缩写为两个冒号表示(::)。 Table1 lists IPv6 地址的缩写格式。 两个冒号可以用在 IPv6 地址的一部分。你可以在一个接口上配置多个地址,但只能一个 link-local 地址。注意两个冒号(::) 只能在 IPv6 地址中出现一次,只能代表最长的连续的 0。IPv6 地址中的十六进制数的表示是大小写不敏感的。
loopback 地址可以是一个网络节点送一个 IPv6 的数据包给自己。 这个 loopback地址功能与 IPv4 的 loopback 地址 (127.0.0.1)一样.注意 IPv6 的 loopback 地址不能配置在物理接口。 一个不管是原地址还是目的地址是 IPv6loopback 地址的数据包必须停留在产生他的网络节点内,不能出现在网络链路上。IPv6 路由器不能转发代有 IPv6 loopback 地址的数据包,不管是原地址还是目的地址。
一个 IPv6 单播地址是用来标示一个网络节点的一个接口。一个数据包的目的地址是一个单播地址时,他将被送到以这个地址标示的网络接口。一个 IPv6 的路由器应支持下列单播地址类型:
Global aggregatable address:可汇聚的全球化地址。
Site-local address:区域内的地址 (proposal to remove by IETF)
Link-local address: 链路接口地址
IPv4-compatible IPv6 address: 兼容 IPv4 的地址
一个可汇聚的全球地址是一个带有全球化的可汇聚的 IPv6 前缀的地址。 这种结构化的全球化的
单播地址可以进行严格的路由前缀的汇聚,这样就可以大大减少整个路由表的路由条数,减少路由的
复杂度。 可汇聚的全球 地址用来标示链路地址,可以进行多级的路由汇聚,一直到顶级的 Internet
服务提供商(ISPs).全球化的可汇聚的 IPv6 地址被定义为全球化的路由前缀, 子网络号,和接口地址。除
了以二进制 000 开始的地址, 所有的全球化的 IPv6 单播地址都带有 64 位的接口地址。目前, 全球化
的单播地址的分配范围从以二进制的 001 (2000::/3)开始。 下图表示了全球化的可汇聚的单播地的格
式 。
带有前缀从 2000::/3 (001) 到 E000::/3 (111)的地址需要带有从(EUI)-64 格式的 64 位接口地址。
IANA (Internet Assigned Numbers Authority)将 2000::/16 IPv6 地址空间下发到各个区域的地址注册机构分发,如 APNIC 等。在通常情况下,全球化的可汇聚的 IPv6 地址包含一个 48 位的全球路由前缀和 16 位的子网络号或称为区域级的可汇聚前缀(Site-Level Aggregator-- SLA)。在 IPv6 的全球化的可汇聚单播地址格式文件(RFC 2374)中指出, 全球化的路由前缀包括两层的层次化结构:顶层汇聚(Top-Level Aggregator--TLA) 和第二层汇聚(Next-Level Aggregator -- NLA)。现在,IETF 决定从 RFCs 把 TLS 和 NLA 的区域规定删除,这样可以使路由汇聚有更多的灵活性。在一些已经采用了 RFC 2374 中的汇聚方式的网络可继续沿用原有的方式。 一个 16 位的子网络标示被称作子网号,他可以被不同的组织机构用来区分自己内部的地址分配。一个子网号与 IPv4 的子网非常类似, 知识他可以有多达 65,535 个子网。一个接口地址用来标示链路的接口。接口地址在一个链路上必须是唯一的 ,他们可以是 64 位接口地址中的任何一个,只要确保是唯一的。在多数情况下,接口地址可以是从链路层的地址中衍生而来。在全球化的可汇聚的 IPv6 地址中,接口地址必须是 64 位长,并且采用修改的 EUI-64 的格式.修改的 EUI-64 的格式的接口地址可从下列的产生方法之一产生:所有的 IEEE 802 的接口类型(如:以太网,FDDI 等), 前三个八进制数(24bits)从 mac 地址中的 OUI(Organizationally Unique Identifier)复制;第四和第五个八进制数为 FFFE, 最后的三个八进制数(24bits)复制 MAC 地址中的后 24 位。 最后,在构成的 64 位接口地址的第一个八进制数的第七位(U/L) bit 表示该接口地址是本地化的还是本地的:0 表示本地地址,1 表示全球唯一的接口地址。对其他的接口类型(如:串行接口, loopback, ATM, Frame Relay, 和 tunnel 接口—除 IPv6 overlaytunnel 的接口), 接口地址的构成采用 IEEE 802 接口类型相似的方法:MAC 地址来自于设备的 MAC 地址池中的第一个 MAC 地址。 当接口类型是 IPv6 overlay tunnels 时, 接口地址是低 32 位的 IPv4 地址加上高位的全 0。注意当接口类型是 PPP 时, 两端的不同接口可能具有相同的 MAC 地址;这时,两端设备需要重新协商,重新选择接口地址,直到他们是唯一的。网络设备的第一个 MAC 地址用来构建 PPP 接口地址。
当网络设备不具有 IEEE802 类型接口, link-local 的 IPv6 地址按以下方式产生:
1.路由器请求 MAC 地址 (从路由器本身的 MAC 地址池)。
2.如果没有 MAC 地址可用, 路由器的序列号可用做 link-local 地址。
3.如果序列号不可用,路由器将采用 MD5 算法结合自己的名字创建 MAC 地址。
一个 site-local 地址是一个带着前缀 FEC0::/10 和 16 位子网号加上 64 位的 EUI-64 格式的 IPv6 单播地址。Site-local 地址非常像 IPv4 中的私有地址空间 10.0.0.0/8;可以在一个区域内部进行路由的查找,而不需要全球化的唯一的地址前缀。 Site-local 地址可以被认为是私有地址,因为他只能在一个严格限制的区域内使用。 下图表示了 site-local 地址。IPv6 路由器不可以将带有 site-local 的源地址或目的地址的数据包转发到区域之外。
一个 link-local 地址是一个带有 link-local 前缀 FE80::/10(1111 1110 10)的 IPv6 单播地址,他采用修改
的 EUI-64 地址格式自动产生。 Link-local 地址可用于邻居发现协议(neighbor discovery protocol)和无状态自动配置进程。 在同一个链路上的节点可使用 link-local 地址来通信; 不需要 site-local 地址或全球化的单播地址。 下图表示 link-local 地址的结构。
IPv6 路由器不能将带有 link-local 的源地址或目的地址的数据包转发到其他网络或链路。
一个 IPv4 兼容的 IPv6 地址是一个高 96 位全 0 的,低 32 位为 IPv4 地址的 IPv6 单播地址。这种 IPv4兼容的 IPv6 地址可表示为 0:0:0:0:0:0:A.B.C.D 或::A.B.C.D. 整个 128 位的 IPv4 兼容的 IPv6 地址是将网络节点的 IPv4 地址直接植入 IPv6 地址的低 32 位。IPv4 兼容的 IPv6 地址用来在运行 IPv4 和 IPv6 双栈时使用自动的隧道技术(tunnels)。 下图表示了 IPv4 兼容的 IPv6 地址 格式。
一个 anycast 地址是一个属于多个网络节点的接口的 IPv6 的地址。一个以 anycast 地址为目的地址的数据包将被转发到最近的网络接口;接口的远近由路由的计算结果来确定。Anycast 地址从地址的结构上来说同单播地址是不可分的,因为 anycast 地址存在于单播地址的地址空间。但一个单播地址可以被超过一个网络接口接收时,他就是一个 anycast 地址。Anycast 地址需要在网络节点上明确定义:这个地址是一个 anycast 地址。
一个前缀 FF00::/8(1111 1111)的 IPv6 地址就代表它是一个 IPv6 组播地址。一个数据包的目的地址为组播地址时,他将被复制转发到多个网络的接收者。组播地址前缀的第二个八进制数代表组播地址的范围。这个八进制数被分为两部分:前四位为 0000 代表是一个永久性的组播地址,前四位为 0001代表是暂时的组播 地址;后四位代表组播范围,目前定义了 1, 2, 5, 8, or E,分别代表不同的组播范围。
IPv6 的设备(主机和路由器)必须加入下列组播组(必须接收的相应的组播数据包):
All-nodes 所有节点的组播组
FF02:0:0:0:0:0:0:1 (link-local 范围)
Solicited-node 节点请求组播组
FF02:0:0:0:0:1:FF00:0000/104 用来对应单播地址和 anycast 地址 。
IPv6 路由器必须加入所有路由器组播组
FF02:0:0:0:0:0:0:2 (link-local 范围).