zoukankan      html  css  js  c++  java
  • IPv6理论知识详解

    1. IPv6地址表示

    IPv6地址可以表示为128位由0、1组成的字符串,为了便于计算机理解,将128位的二进制字符串表示为32位的十六进制字符串,为了便于理解,人们将其划分为8组,组与组之间用 :隔开,每组4个字符(也就是16位)。

    128位的二进制数

    通过由冒号分隔的32位的8组16进制字符串

    为了进一步优化IPv6地址;引入两条额外的规则

    消除前导0,如  : 00A1 : 写成   : A1 :

    消除连续0,如  : 0000 : 0000 : 0000: 变成  : :

    这些规则必须产生一个唯一的压缩地址表示。因此,连续0规则只能用一次,选择连续0最多的部分予以压缩。如:

    IPV6地址由两部分组成:前缀(网络)部分和接口ID部分

    2. IPv6地址架构

    在RFC3513中定义了IPV6寻址架构。定义了3种类型的IPV6地址:

    • 单播――标识单个节点,目的地为单播地址的流量被转发到单个节点;
    • 组播――标识一组节点,目的地为组播(多播)地址的流量被转发到组里的所有节点:
    • 任意播一标识一组节点,目的地为任意播地址的流量被转发到组里的最近节点。

    在IPV4中给出了所有这些地址类型,其中还包括广播地址。广播流量被证明是太耗费资源的(在常规操作中以及广播风景中),因此IPv6没有任何广播地址,仅使用组播地址。

       

    下面介绍这些IPv6地址类型和通信方法的功能。

    单播地址:目标地址为单播地址的分组被传输到单个接口。为均衡负载,位于多台设备中的多个接口可使用相同的地址,但这种地址被称为任意播地址。单播地址分多种。

    链路本地地址:类似于IPV4私有地址,也是不可路由的,它们以FE80:/10打头。可将它们视为一种便利的工具,让你能够为召开会议而组建临时LAN,或创建小型LAN,这些LAN不与因特网相连,但需要在本地共享文件和服务。

    FE80::/10 链路本地单播地址范围。

    唯一本地地址:这些地址也是不可在因特网路由的,但也基本上是全局唯一的,因此不太可能重复使用它们。唯一的本地地址设计用于替代场点本地地址,因此它们的功能几乎与IPV4私有地址相同:支持在整个场点内通信,可路由到多个本地网络。场点本地地址已于2004年9月废除。 

    FC00::/7 唯一本地单播地址范围

    全局单播地址:这是典型的可路由的公有地址,与IPV4中的单播地址相同。全局地址以2000::/3打头。 

    2000::/3全局单播地址范围。

    组播地址:与IPv4中一样,目标地址为组播地址的分组被传输到该组播地址表示的所有接口。这种地址有时也被称为一对多地址。IPv6组播地址很容易识别,它们总是以FF打头。     

      FF00::/8组播地址范围。

    任意播地址:与组播地址一样,任意播地址也标识多个设备的多个接口,但有一个很大的差别:任意播分组只被传输到一个接口――根据路由选择距离确定的最近接口。这种地址的特殊之处在于,可将单个任意播地址分配给多个接口。这种地址被称为“一对最近”地址。

    0:0:0:0:0:0:0:0 (::) 相当于IPv4地址:0.0.0.0,通常在使用有状态DHCP配置时,用作主机的源地址。

    0:0:0:0:0:0:0:1 (::1) 相当于IPv4地址127.0.0.1。

    0:0:0:0:0:0:192.168.100.1    在同时支持IP4和IPv6的网络中,从IPV4地址转换而来的IPV6地址通常这样书写。

    3. IPv6单播地址

    一个网络的基本功能是为连接到网络的所有主机提供单播可达性。所以任何网络无论IP版本如何,单播地址都是一个关键角色。

    为了保持两个版本寻址结构间的某些并行性,在IPV6地址的场合,使用了IPV4术语主机部分。但IPV6倾向于在一个前缀内标识一个主机的接口而不是主机自己(主机能够有多个接口),因此,IPV6地址分段为前缀或网络部分和接口标识符(IID)

       

    Address:   2001:0:0:A1: :1E2A / 64

    Network portion:  2001:0:0:A1

    Interface identifier in non-compressed format:  :0:0:0:1E2A

    Interface Identifier in compressed format:   : :1E2A

                    识别码         压缩          格式

    产生接口ID方式: .

    静态:

    • 人工配置。
    • 从第2层地址以修改的EUI-64格式构造一个接口ID。对于接口ID的网络部分,EUI64格式的高位第7位(u位)当设置为0时,定义了一个本地范围当设置为1时,就定义了一个全局单播地址(全局唯一);高8位(g位)被设置为1时, 表示该地址是一组或组播类型的地址。针对每种媒介类型,定义了不同机制以构建符合修改的EUI-64格式的完全按口ID。
    • 动态分配:
    • 如在RFC 3041中定义的那样自动产生一个随机地址。本分配机制开发出来主要是限制一个全局可达地址的暴露程度并增加隐私性(无状态自动配置)。
    • 通过DHCPV6获得接口ID。
    • 基于RFC 3972,通过包含一个公开密钥的散列函数以加密方式产生地址(CGA)。产生一个接口lD的这种方法提供了额外的安全性并支持地址认证。邻居发现过程的安全性是在CGA的帮助下获得的。

    在IPV6情况下,通过整合范围的概念更进一步细化了地址的网络部分。

          范围标识一个网络域,无论是物理的还是逻辑的。能够容易地识别一个IP流的范围使网络能够更好地管理它的资源,其方式足将流量限制在相关城内并对该范围施加策略。在做出3层转发判定时,IP地址是一个重要参数,因此它应该表明范围。在主机的通信范围内,主机使用合适的IPSA和DA。

    在IPV6中,单播地址格式反映了3种预定义范围,如下所示:

    链路本地范围――在单个第2层城内,标识所有主机。在这个范围内的单播地址称为链路本地地址:

    唯一本地范围――在一个管理站点或域内(其典型情况下包括多个不同链路),标识所有可达设备,在这个范围内的单播地址称为唯一本地地址(ULA)

    全局单播地址――在Internet中标识所有可达设备,在这个范围内的单播地址称为全局单播地址(GUA)

    如图2-2所示,这些范围是层次化的。全局范围大于本地(站点)范围,而后者包括链路范围。

       

    在2003年3月20日,IETF IPV6工作组声明不再使用站点本地范围和相应的IPV6地址类型。图2-2中强调了这一点。

    站点本地地址的一个替代方案。为了满足这些要求,IETF IPV6工作组定义了一个新的范围和地址类型,称为唯一本地。

    链路本地地址:

          当支持IPV6的节点上线时,每个接口配置一个3层地址,该地址专门用来和相同链路上的其他主机通信。链路本地定义了这些地址的范围,因此分组的SA或DA(来源地址(SA) ▪ 目的地址(DA) )是这些地址,就不应该选择到其他链路上。这些地址称为链路本地。这些地址用来链接通信及链接操过程,如寻找邻居或路由器。

    图2-3 给出了链路本地址的结构。一个链路本地地址由固定格式的网络部分FE80:/10组成,其中高10位是1111111010,后续54位是0。

       

    如前所述,在IPV6中使用接口标识符术语而不是地址的主机部分,如图2-3所示。例2-3展示了一个以太网接口的链路本地地址,其接口 ID 是基于第2层MAC地址产生的

    唯一本地单播地址(ULA)

          站点范围的概念能够容易地映射到一个私有管理域,其中寻址不必遵循任何全局规则。指定到这个范围的IPV6地址,如RFC3513中所定义,称为站点本地,并且它们是唯一的(会导致很多问题)。这些地址与IPV4私有地址空间的相似性使人想起这种方法的缺陷(见RFC3879)。反对使用站点本地地址的一些观点如下:

    • 应用问题――当在站点之外,站点本地地址在净荷中携带时,应用会有问题。这种情况的一个好的例子是,依赖于双方地址的客户端/服务器应用,而双方在不同的站点。站点间的地址重叠在定位客户时使服务器迷惑。通过在站点本地地址中增加一个站点标识符以处理地址重叠的问题,但实现较常规复杂。对网络节点而言,记录所有的站点标识符是困难的,在多节点接入到多个站点的情况尤其如此。
    • 应用通常而言不知道范围,它们经常泄漏私有地址(如站点本地)到私有网络之外。在采用相同编址的站点之间泄漏地址能够导致路由选择或DNS问题。
    • 路由选择和转发问题――站点本地地址的非唯一性属性将迫使路由器必须记录一个接口的前缀及所属站点。
    • 非唯一站点本地地址使通过中间网络互连一个站点的不连续部分变得困难。在这种情况下建立隧道就是必要的。
    • 多站点的路由器,必须将其转发的决定,不仅基于目的地址而且基于进入接口,并将流量控制在合适的站点内。

          在重建Internet的原始形式和全局结构的过程中,在没有站点概念的情况下,TPV6理论上能够存活。但是,务实的考虑提出了比全局范围要小的标识范围的要求。特别是企业有一种令人可理解的偏好,即确定它们网络的边界。由于这些原因,不再使用的站点本地范围和地址必须被良好定义的概念所替代,它能够处理提到的问题。新概念即是一个唯一本地范围和相应的唯一本地地址。

    图2-4给出了这些地址的格式。唯一本地单播地址在RFC4193中被完整地标准化了。

    在单播地址空间中,为唯一本地地址(ULA)保留的部分是FC00::/7。图2-4给出的ULA

    结构包括下列元素。

       

    • L确定分配策略。目前只有值1(FD00::/8)在用,指定一个本地分配。
    • 全局ID是一个40位的标识符,确保了地址的全局唯一性。它是伪随机产生的并且不必是序列化的。因为ULA不应被全局选路,它们就不必汇聚,所以序列化的全局ID就不必要。
    • 子网ID为本地域管理者提供了一个资源,能够用来在站点内定义一个层次化的寻址方案。
    • 接口标识符对所有单播地址其合义是相同的,符合修改的EUT-64格式,具有64位长度。

          ULA必须在预定义的域范围内使用,该域代表了这些特定地址的本地范围。使用ULA作为SA或DA的流量不应允许穿过域边界。因为没有地址冲突,ULA使得互连不同的本地域变得容易。管理不连续的站点拓扑是容易的。连接到多个站点的路由器能够仅基于地址将它们区别开来,因此避免了附加标签的要求。这些例子说明了唯一本地寻址相对于站点本地寻址的优势。

    全局唯一地址(GUA):

          全局唯一地址定义用于IPv6Internet。它们是全局唯一的和全局可路由的。如RFC 3587中所描述,保留用作全局范围通信的IPV6地址,且由它们的高3位设置为001(2000::/3)来识别

          提供足够多的全局可访问之地址的IPV6,主要目标是通过使用更多地址位来完成的。附加的长度能够导致如下开销:通过更长的查找、显著增大的路由选择表和更大的路由选择更新(因为和IPV4相比存在更多网络的可能)影响路由选择过程。雪上加霜的是可能成为现实的,即IPV6网络期待拥有两个或多个共存的寻址机制,变得明朗的是IPV6路由器将需要某些帮助。提供需要的方法之一是在前缀汇聚上实现并增强强制规则。这样的规则和策略将减少路由选择表的尺寸并缩短占据路由选择表多数前缀的长度。

          在开发GUA的一个灵活的结构上已经投入了很多努力,该结构将使容易的汇聚变得简单。从RFC2373开始,增强粒度化的地址结构以反映不同层次的汇聚。在最后,确定了通过强制的分配策略以增强合适的汇聚并确定了一个更简单的地址结构,这些已在RFC 3587中规范,如图2-5所示。

         

    全局单播地址的组成部分如下:

    • 全局路由选择前缀――由Internet地址授权委员会(IANA)为一个服务提供商分配该前缀的一部分,然后服务提供商为其用户分配一个子空间;基于RFC 3177建议,其长度是48位或更短;
    • 子网标识符―― 一个组织从其服务提供商处接受一个前缀,其中全局路由选择前缀标识服务提供商(SP)和SP内的组织,子网标识符标识其网络的组织结构;
    • 接口标识符—地址的低64位用来标识节点在一条链路上的接口。

    注释:在一个给定接口上,全局单播地址极可能与其他类型的单播地址共存。例如,在一个企业内的用户需要在私有内部网内和Internet上的资源交换信息。这意味着私有网络内的一台主机的接口能够被分配两个地址,其中一个用于与私有网络内的其他主机和资源通信(可能是唯一本地地址),另外一个用于与私有网络外部的主机和资源通信(全局唯一)。对于运营和管理的目的,一个接口上各种地址类型的元素(字段)间的相互关联也许是有意义的。在本例中,全局单播地址(GUA)唯一本地地址(ULA)也许使用相同的接口标识符或者甚至是相同的子网标识符。

    特殊用途地址:

    特殊单播地址不携带范围信息,因此将它们从其他单播地址独立出来,进行单独讨论。

    两个基本地址具有lPV6运营的意义:

    • 非指定地址不分配给任何接口。但是,没有IPV6地址的设备或它们的IPV6地址在链路本地内还没有被证明是惟一的情况下,这些设备将非指定地址作为SA。非指定lPv6地址将全部128位设置为0.它能够表示为0:0:0:0:0:0:0:0,或压缩形式的:: 。
    • 回环地址被每个节点用来指其自身,它类似于IPv4中的127.0.0.1地址。在IPv6中,回环地址将其前127位全部设置为0,最后位设置为1。它能够表示为0:0:0:0:0:0:0:1,或压缩形式的::1。

    其他两种特殊地址类型与IPV4和IPV6共存相关。开发了两种机制将IPV4地址映射到IPV6地址:

       

    4. IPv6任播地址(Anycast Address)

       

           IPV6任播地址格式和IPV6单播地址相同。用来标识一组接口的地址。一般这些接口属于不同的节点,发往任播地址的报文被送到这组接口中与其最近的接口。

           任意播是多个设备共享一个地址,分配IPv6单播(unicast)地址给拥有相同功用的一些设备。发送方发送一个以任意播为目标地址的包,当路由器接受到这个包以后,就转发给具有这个地址的离它最近的设备。单播地址用来分配任意播地址,对于那些没有配备任意播的地址就是单播地址;但是当一个单播地址分配给不止一个接口的时候,单播地址就成了任意播地址。

           例如:Mobile方面的特性,移动设备漫游到其他区域,不必接人原始的接入点,只需要找到

    最近的即可。

    5. IPv6多播地址

    由于IPv6没有广播地址,在控制平面多播将之代替,因此多播成为IPv6网络运营的一个关键部分。更大的地址空间提供了足够的全局唯一多播组地址,方便了多播服务的部署。

       

    4位标志(flag)字段中的3位目前在使用:(RFC定义T,P,R)

    • 永久分配组摇地址,低位T设置为0;对于非永久分配的组播地址,其T位设置为1。
    • P位,表明组播地址是否基于单播前级构建的(足设为1,或设为0)。
    • R位,如果设置为1,则表明组播组地址包含服务这个组的RP的单播地址。
    • 剩下的第四标志位为未来用途保留,目前设置为0。

    注意:P位设置为1表明组描地址是从一个单播地址构建的,因为单播地址被认为具有有限的生命存活期,由其产生的组播地址就不能是永久分配的。这意味着P位设置为1,要求T位也应设置为1。

    基于单播前缀产生全局惟一IPV6组播地址机制,如图2-10所示。

       

    被请求节点的组播地址

    被请求节点的组播地址提供了当仅知道链路本地上的一台主机的第3层单播地址时,和它联系的机制。这个地址类型是针对分配给一个接口的每个单播和任意播前资产生的。地址格式是FF02:1:FF00:0000/104,其低24位与产生它的单播地址或任意播地址相同。它代表了标识链路本地组播组的一个确定方式,具有某个给定IPV6单播地址的主机一直在侦听这个组。如果建立到主机(MAC地址)的单播连接所需要的信息不全,通过组播到其被请求节点的组播地址仍然能够到达目的地。

    基本的IPV6控制平面过程,如第2层到第3层地址映射和重复地址检测(DAD)使用这个类型的地址。程序清单2-6基于图2-12所示的格式构建了一个被请求节点的组播地址。

       

      

    IPv6组播地址分配

  • 相关阅读:
    BZOJ 1041: [HAOI2008]圆上的整点
    BZOJ 1040: [ZJOI2008]骑士
    BZOJ 1037: [ZJOI2008]生日聚会Party
    BZOJ 1034: [ZJOI2008]泡泡堂BNB
    BZOJ 1032: [JSOI2007]祖码Zuma
    BZOJ 1031: [JSOI2007]字符加密Cipher
    BZOJ 1030: [JSOI2007]文本生成器
    Flink学习(三) 批流版本的wordcount Scala版本
    Flink学习(三) 批流版本的wordcount JAVA版本
    Flink学习(二) 应用场景和架构模型
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12980723.html
Copyright © 2011-2022 走看看