Chinaunix首页 | 论坛 | 博客
  • 博客访问: 533102
  • 博文数量: 102
  • 博客积分: 3165
  • 博客等级: 中校
  • 技术积分: 1232
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-09 16:38
文章存档

2016年(1)

2013年(14)

2012年(6)

2011年(22)

2010年(57)

2009年(2)

我的朋友

分类: 系统运维

2010-05-26 11:48:34

2.1.2 IPv6寻址

IPv4最重要的缺陷是有限的地址范围。IPv4使用32位的地址空间,能够提供理论上最多略超过40亿个以上的地址(正如第1章所讨论的,实际要少得多)。IPv6使用128位的地址空间,提供了大约3.4e38个(340 undecillion?,如果能数清的话)地址。尽管IPv6主机的实际数量要少得多,但仍有足够的IPv6地址可以分配上万亿个可路由地址给每个人,而不用诉诸于网络地址转换器(NAT)这样的替代方案。

1.IPv6地址结构

通常情况下,IPv6地址分为两个部分:64位网络部分和64位主机部分。网络部分标识惟一子网,而这些号码通过Internet号码分配机构(IANA)分配给ISP或者大型组织。虽然具有多种形式,但主机组成部分通常随机获得或基于网络适配器的惟一48位媒体访问控制(MAC)地址。例如,ISATAP(本章稍后将讨论)就使用了一种不同的地址结构。

注意使用MAC地址生成IP地址的一部分使得网站能够跟踪单个计算机,只要它一直使用相同的网络适配器。为了改善用户的隐私权,RFC 4941()描述了随时间修改IPv6地址的技术,使得无法对单个计算机轻易进行跟踪。

IPv6地址编写为使用8组4个十六进制数,例如:

2001:0000:0000:0000:085b:3c51:f5ff:ffdb

可以省去任意组的前导零来缩写IPv6地址。这个IP地址与前一个IP地址完全相同:

2001:0:0:0:85b:3c51:f5ff:ffdb

为了进一步缩短IPv6地址,可以使用2个冒号代替全为零的组。在一个IPv6地址中这种方法只能使用一次。因为IPv6地址始终会有8组4位十六进制数,可以确定有多少全零组被省略。例如,下面的IP地址(与先前的示例相同)省略了3组,仍然显示有5组十六进制数:

2001::85b:3c51:f5ff:ffdb

在UNC(通用命名规范)路径和URL中使用IPv6地址

虽然通常应依赖于DNS名称,但是也可以在UNC路径或URL中略微进行转换即可嵌入IPv6地址。要想把一个IPv6地址用作UNC路径的一部分(例如),把冒号修改为连字符并附加.ipv6-literal.net即可。例如,要指定IPv6地址为

2001:db8::85b:3c51:f5ff:ffdb的计算机的C$共享,可以使用UNC路径

?db8??85b?3c51?f5ff?ffdb.ipv6?literal.net\C$。要指定区域ID,把符号%替换为s。在这种情况下,UNC路径中的IP地址2001:db8::85b:3c51:f5ff:ffdb%4将变为

?db8??85b?3c51?f5ff?ffdbs4.ipv6-literal.net\C$。要想在运行着Windows 2000或Windows Server 2003的计算机上使用这种技术,可以按照Microsoft知识库文章281308()中的步骤添加名称到服务器上。

把IPv6地址放在中括号中就可以在URL中嵌入它,例如。中括号是必须的,这样就可以指定一个端口号作为URL的一部分。例如,URL 将会连接到同一个IPv6 IP地址的端口81上。

正如IPv4网络可以使用无类型域间路由(CIDR)表示法(如192.168.1.0/24)书写一样,IPv6地址也可以使用CIDR表示法。例如,下例显示了一个48位网络地址(注意这里使用双冒号表示接口ID中的0):

2001:db8:4136::/48

 

2.IPv6地址类型

IPv6地址有以下几种不同的类型:

■ 链路本地地址。自动添加在所有物理和虚拟接口上的IPv6地址,并且只能在本地网段上访问。

■ 惟一本地IPv6单播地址。可以在intranet上路由的IPv6地址,但是不能从Internet上访问。

■ 全局单播地址。可以在IPv6 Internet上路由的IPv6地址,是使用IPv6的Internet的一部分。

■ 多播地址。允许单个主机与多个接收方通信的地址。

■ 任意播地址。可以分配给多个接口的地址,例如对于多宿主服务器所有接口的单个地址。

■ 特殊地址。包括回送地址在内的各种不同类型的地址。

尽管大部分IPv4计算机每个接口只有一个IP地址,但是IPv6计算机通常会同时有一个链路本地地址和一个全局或惟一本地地址。

接下来我们将更加详细地描述这些地址。

(1)链路本地地址当主机需要与同一网络上的其他主机通信时使用链路本地地址。所有的IPv6接口都有一个链路本地地址,即便它们同时还有一个全局单播地址。因为网络前缀总是相同的,所以链路本地地址不能被路由。

如图2?1所示,链路本地地址的前10位始终是1111111010,余下的54位网络地址始终为0。它将创建地址前缀fe80::/64。如同大部分IPv6地址一样,最后64位是接口ID。

 

我们来观察一个链接本地地址的示例,打开任一台运行Windows Vista或者Windows Server 2008的计算机,在命令提示符运行ipconfig命令。对于每个网络适配器,ipconfig将列出一个以fe80::起始的链接本地IPv6地址。

起源:区域ID

链路本地地址应始终只和区域ID一起使用。经验告诉我们,通常人们在脚本和应用程序中不使用区域ID,而一旦系统上有第二个接口(物理或虚拟)时软件就会出错。

Dmitry Anipko, Developer

Windows Core Networking

(2)惟一本地地址惟一本地地址(ULA)在私有网络上的子网间可以路由,但是在公共Internet上不可路由。ULA在功能上与私有IPv4网络(10.0.0.0/8,172.16.0.0/12和192.168.0.0/16)类似,因为它们允许创建复杂的内部网络,并且无需分配公共地址空间。

如图2?2所示,惟一本地单播地址的前10位始终为11111101,从而创建了一个地址前缀fd00::/8。接下来40位是全局ID,它标识了组织中的一个站点或校园。尽管是由单个组织来分配全局ID,但是它们应随机分配来减少在未来的合并(需要对一个站点重新编号)中地址冲突的风险。网络地址的其余16位是子网ID,允许在每个站点创建65,536个子网。与大部分IPv6地址一样,最后64位是接口ID。

 

注意在feco::10地址前缀中的站点本地地址最初为IPv6网络提供了私有路由,但是它们受到了RFC 3879的反对。

(3)全局地址类似于公共IPv4地址,全局单播地址可从公共Internet到达。它要求在Internet路由器的路由表中对于所有有效全局单播地址的网络部分都有一个路径。

如图2?3所示,全局单播地址的前3位是001,创建了一个地址前缀2000::/3。下面45位是全局路由前缀,用于在公共Internet上标识该网络。接下来的16位是子网ID,组织可以用来在它们的私有网络上创建多达65536个不同的内部子网。正如大部分IPv6地址一样,最后64位是接口ID。

  

(4)多播地址类似于IPv4,IPv6保留了一个地址集用于多播。多播通信允许单个主机发送一个数据包给多个接收方。多播通常用于实时流媒体,例如,同时发送会议视频到多个不同的计算机上。多播也可以用来保持多台计算机的同步(例如,保持3个数据库服务器同步)或同时部署一个操作系统到多台计算机。为了使多播通信在多个网络间工作,路由基础结构必须配置为支持多播。通常,多播无法跨过公共Internet工作。

如图2?4所示,多播地址前8位均为1,创建了一个地址前缀FF00::/8。下面的4位是4个二进制标志(表示多播地址为永久或临时),再往后的4位描述作用域(例如链路本地或站点本地)。其余112位是组ID,标识订阅该多播的计算机组。多播数据包没有通常的64位接口ID。

 

(5)任意播地址任意播地址是可以分配给多个接口的一种特殊地址。例如,最常用的任意播地址就是子网路由器(Subnet-Router)任意播地址,它的网络ID使用的接口ID为0。IPv6主机可以使用子网路由器任意播地址联系本地网络上的任意路由器。

(6)特殊IPv6地址以下地址和网络专留作特殊用途使用:

■ ::1/128(或者只是::1)。回送地址,始终指向本地计算机。

■ ff01::1/128(或者只是ff01::1)。接口本地作用域的所有节点多播地址。

■ ff02::1/128(或者只是ff02::1)。链路本地作用域的所有节点多播地址,与IPv4中的广播地址类似。

■ ff02::2/128(或者只是ff02::2)。链路本地作用域的所有路由器多播地址。

■ ff05::2/128(或者只是ff05::2)。站点本地作用域的所有路由器多播地址。

■ ::ffff:0:0/96。该前缀用于IPv4映射的地址。

■ 2002::/16。该前缀用于6to4寻址。

■ ff00::/8。用于多播地址。

■ fe80::/64。链路本地地址,它是一种自动分配的IP地址,类似于在IPv4中的自动专用IP地址(APIPA)。如果看到接口分配了一个这样的地址,表示DHCPv6服务器不可用。更多信息可参看本小节的"链路本地地址"部分。

■ fc00::/8或fd00::/8。ULA可以在Intranet上路由,不能在Internet上路由。更多信息请参看本小节的"惟一本地地址"部分。

■ 2001:db8::/32。保留为文档中使用的网络。

此外,6to4和Teredo过渡技术(本章稍后讨论)使用它们自己的特殊寻址。

3.区分多个接口

对于连入网络但没有IPv6路由器或DHCPv6服务器的IPv6客户端,它们始终使用fe80::/64链路本地网络地址。如果运行Windows的计算机中有多个网络适配器连接到不同的网段,可以在IP地址后加百分号和区域ID数字来区分不同的网络,如下所示:

■ fe80::d84b:8939:7684:a5a4%7

■ fe80::462:7ed4:795b:1c9f%8

■ fe80::2882:29d5:e7a4:b481%9

最后两个字符分别表示前面网络所连接的区域ID是 7、8和9。当连接链路本地地址时,应该始终指定区域ID。区域ID与接口索引值相同,当基于每个接口配置IPv6设置时通常会用到该索引值。

注意区域ID相对于发送主机,因此,不同的主机连入同一个网络可能会使用不同的区域ID来标识该网络。

阅读(7376) | 评论(0) | 转发(0) |
0

上一篇:IPv6 地址前缀

下一篇:IPv4到IPv6的变化

给主人留下些什么吧!~~