IPv6基础培训_华为.doc_第1页
IPv6基础培训_华为.doc_第2页
IPv6基础培训_华为.doc_第3页
IPv6基础培训_华为.doc_第4页
IPv6基础培训_华为.doc_第5页
免费预览已结束,剩余91页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 IPv6基础1-11.1 培训目标1-11.2 IPv6发展状况1-21.2.1 为什么要升级IPv41-21.2.2 升级到IPv61-41.2.3 IPv6驱动力1-71.2.4 IPv6关键事件1-81.2.5 发展历程1-91.2.6 现状1-101.3 IPv6地址介绍1-111.3.1 格式1-111.3.2 结构1-151.3.3 接口ID的生成1-161.3.4 地址分类1-181.3.5 单播地址1-191.3.6 组播地址1-301.3.7 任播地址1-331.3.8 相关RFC1-351.4 IPv6报文结构1-371.4.1 报文构成1-371.4.2 基本报头1-391.4.3 扩展报头1-441.4.4 相关RFC1-621.5 ICMPv6协议1-631.5.1 概述1-631.5.2 报文格式1-641.5.3 差错报文1-651.5.4 信息报文1-681.5.5 其它报文1-701.5.6 相关RFC1-711.6 IPv6邻居发现协议1-721.6.1 概述1-721.6.2 地址解析1-731.6.3 邻居状态1-771.6.4 重复地址检测1-791.6.5 路由器发现1-821.6.6 重定向1-851.6.7 参考RFC1-881.7 无状态地址自动配置协议1-891.8 PMTU协议1-92华为-3com培训 吴频01070第一章 IPv6基础 Issue 1.0第1章 IPv6基础1.1 培训目标通过本章的学习,您应该能够了解为什么需要将IPv4升级到IPv6;IPv6的地址是怎么组成的,IPv6的报文是什么样子的,与IPv4的报文区别在哪;以及在IPv6中比较重要的几个基础协议,主要包括:ICMPv6、ND、PMTU、无状态地址自动配置等。1.2 IPv6发展状况1.2.1 为什么要升级IPv4实践证明IPv4是一个非常成功的协议,它本身也经受住了Internet从数目很少的计算机发展到目前上亿台计算机互联的考验。但该协议是几十年前基于当时的网络规模而设计的。在今天看来,IPv4的设计者们对于Internet的估计和预想显得很不充分。随着Internet的扩张和新应用的不断推出,IPv4越来越显示出它的局限性。Internet规模的快速扩大是当时完全没有预料到的,特别是近十年来,更是爆炸式增长,已经走进了千家万户,人们的日常生活已经离不开它了。但也就是这种快速发展,出现了迫在眉睫的IP地址空间耗尽问题。2002年9月IANA的IP地址空间的分配情况是:占总IPv4地址空间12%的D类和E类地址不能作为全球唯一单播地址。有2%是不能使用的特殊地址。最大的一部分已经分配给组织机构和区域Internet注册机构,目前还有28%的剩余地址空间没有被分配。IPv4地址空间的紧缺直接限制了IP技术应用的进一步发展,到96年已将80%的A类网络地址,50%的B类地址,10%的C类地址全部分配了,有专家估计到2010年IPv4地址将全部用完。地址分配不均更进一步突出了地址紧缺的矛盾。在美国这个Internet早期被采用的地方,特别在20世纪80年代,几乎所有的大学和大公司都得到一整个A类或B类地址,尽管他们只有少量计算机。甚至直到目前,有些机构还有未被使用的IPv4地址。与此形成对照的是,在欧洲地区和亚太地区,很多组织和机构申请IP地址非常困难,甚至不能获得IP地址。整个中国的IP地址空间甚至都没有美国一些大学多。由于地址的紧缺,在目前IPv4网络中,NAT(网络地址转换)技术得到了普遍的应用,被认为是解决IP地址短缺问题的有效手段,甚至被一部分人视为地址空间短缺的永久解决方案。然而NAT(网络地址转换)自身固有的缺点注定了它仅仅是延长IPv4使用寿命的权宜之计,并不是IPv4地址短缺问题的彻底解决方案:NAT破坏了IP的端到端模型。IP最初被设计为只有端点(主机和服务器)才处理连接。NAT的应用对对等通信有着极大的影响。在对等通信模型中,对等的双方既可作为客户端,又可作为服务器来使用,他们通过直接将数据包发送给对方才能通信。如果有一方处于NAT后方,就需要额外的处理来解决这种问题。保持连接状态的需求。NAT技术要求转换器(NAT)保持连接的状态,NAT必须记住转换的地址和端口。地址和端口的转换都需要额外的处理,影响网络的性能。而且,对出于安全需要而记录其最终用户行为的组织来说,就面临记录NAT状态表问题。阻止了端到端的网络安全。为了通过一些加密方法保护IP包头的完整性,包头不能在从源和目的之间被改变。源点保护包头的完整性,最终目的地检查数据包的完整性,任何在路途中对包头部分的转换都会破坏完整性检查。新技术的应用导致IP地址的短缺矛盾更加激化。随着科技的发展,今后可能PDA、无线设备、3G移动电话甚至汽车、冰箱都需要一个全球单播地址,以连接到Internet中。除了地址短缺外,安全性、QOS(服务质量)、简便配置等等要求促成了大家达成一个共识:需要一个新的协议来根本解决目前IPv4面临的问题。1.2.2 升级到IPv6IP地址空间耗尽的过程使人们认识到:我们需要而且有时间来设计一个新的协议来替代目前的IPv4,并且这个协议不是仅仅加大了地址空间而已。这是一个修正IPv4编址方案的好机会。为了解决互联网发展过程中遇到的问题,早在20世纪90年代初期,互联网工程任务组IETF就开始着手下一代互联网协议IPng (IP - the next generation)的制定工作。IETF在RFC1550里进行了征求新IP协议的呼吁,并公布了新协议需要实现的主要目标: l 支持几乎无限大的地址空间; l 减小路由表的大小,使路由器能更快地处理数据包; l 提供更好的安全性,实现IP级的安全; l 支持多种服务类型,并支持组播; l 支持自动地址配置,允许主机不更改地址实现异地漫游; l 允许新、旧协议共存一段时间; l 协议必须支持可移动主机和网络。IETF提出了IPng的设计原则以后,出现许多针对IPng的提案,其中包括一种称为SIPP(Simple IP Plus,由RFC1710描述)的提案。SIPP去掉了IPv4报头的一些字段,使报头变小,并且采用64位地址。与IPv4将选项作为IP头的基本组成部分不同,SIPP把IP选项与报头进行了隔离,选项被放在报头后的数据包中并位于传输层协议头之前。使用这种方法后,路由器只有在必要的时候才会对选项头进行处理,这样就提高了对所有数据进行处理的能力。另两个被详细研究的提案为:l 因特网公共结构(CATNIP),提议用网络业务接入点(NSAP)地址融合CLNP、IP、和IPX协议(在RFC1707中定义)。l CLNP编址网络上地TCP/UDP(TUBA),建议用无连接的网络协议(CLNP)代替IP(第3层),TCP/UDP和其他上层协议运行在CLNP之上(在RFC1347中定义)。1994年7月,IETF决定以SIPP作为IPng的基础,同时把地址数由64位增加到128位。新的IP协议称为IPv6,其版本是在1994年由IETF批准的RFC1752。制定IPv6的专家们总结了早期制定IPv4的经验,以及互联网的发展和市场需求,认为下一代互联网协议应侧重于网络的容量和网络的性能,不应该仅仅以增加地址空间为唯一目标。IPv6继承了IPv4的优点,摒弃了IPv4的缺点。IPv6与IPv4是不兼容的,但IPv6同其它所有的TCP/IP协议族中的协议兼容,即IPv6完全可以取代IPv4。采用了新的IPv6结构之后,到底有哪些特点呢?全新的报文结构IPv6使用了新的协议头格式,也就是说IPv6数据包有全新的报文头,而并不是仅仅简单地将IPv4报文头中的地址部分增加到128位而已。在IPv6中,报文头包括固定头部和扩展头部,一些非根本性的和可选择的字段被移到了IPv6协议头之后的扩展协议头中。这使得网络中的中间路由器在处理IPv6协议头时,有更高的效率。巨大的地址空间IPv6地址的位数增长了4倍,达到128比特。我们知道IPv4中,理论上可编址的节点数是232,也就是4 294 967 296,按照目前的全世界人口数,大约每3个人有2个IPv4地址。128比特长度的地址意味着有多少地址可用呢?3.41038个地址!世界上的每个人都可以拥有5.71028个IPv6地址(实际上根据特定的地址方案,实际的可用地址没有如此众多,但IPv6地址空间依然大得惊人)!IPv6地址空间非常巨大,有夸张的说法是:可以做到地球上的每一粒沙子都有一个IP地址。全新的地址配置方式随着技术的进一步发展,Internet上的节点不再单纯是计算机了,将包括PDA、移动电话、各种各样的终端,甚至包括冰箱、电视等家用电器,这就要求IPv6主机地址配置更加简化。为了简化主机地址配置,IPv6除了支持手工地址配置和有状态自动地址配置(利用专用的地址分配服务器动态分配地址)外,还支持一种无状态地址配置技术。在无状态地址配置中,网络上的主机能自动给自己配置IPv6地址。在同一链路上,所有主机不用人工干预就可以通讯。更好的QOS支持IPv6在包头中新定义了一个叫做流标签的特殊字段。IPv6的流标签字段使得网络中的路由器可以对属于一个流的数据包进行识别并提供特殊处理。用这个标签,路由器可以不打开传送的内层数据包就可以识别流,这就使得即使数据包有效载荷已经进行了加密,仍然可以实现对QOS的支持。内置的安全性IPv6协议本身就支持IPSec,包括AH和ESP等扩展报头,这就为网络安全性提供了一种基于标准的解决方案,提高了不同IPv6实现方案之间的互操作性。内置的移动性由于采用了Routing header和Destination option header等扩展报头,使得IPv6提供了内置的移动性。1.2.3 IPv6驱动力目前能够驱动IPv6发展的主要有三方面的因素:市场驱动、政府推动以及竞争压力。市场驱动新技术的应用导致IP地址的短缺矛盾更加激化。随着科技的发展,今后可能PDA、无线设备、3G移动电话甚至汽车、冰箱都需要一个全球单播地址,以连接到Internet中。政府推动由于IPv4最初是由美国提出,并扩展到全球的,各国政府都需要从战略和国家安全方面考虑,他们都需要一种新的技术打破目前IPv4被一国垄断的状况,降低互联网战略安全风险。IPv6是一个很好的选择。竞争压力对于多数北美运营商而言,IPv4地址是足够的,因此他们并不需要发展IPv6技术。而在欧洲和亚洲地区都极缺IPv4地址,需要大力发展IPv6技术,设备制造商为了争得这两块大市场都纷纷推出支持IPv6的设备,为运营商提供从IPv4向IPv6过渡的技术。1.2.4 IPv6关键事件1993年 IETF成立了IPNG工作组1994年 IPNG工作组提出下一代IP网络协议(IPv6)的推荐版本1995年 IPNG工作组完成IPv6的协议文本1996年 IETF发起成立全球IPv6实验床 - 6BONE1999年 完成IETF要求的协议审定和测试2000年 IPv6关联协议修订和完善1.2.5 发展历程我们国家积极参与IPv6研究与实验,CERNET1998年6月加入6BONE,2003年启动国家下一代网络示范工程 CNGI,国内网络通讯设备商也积极研究IPv6相关技术,华为-3COM等企业已经推出完整的支持IPv6的产品线。1.2.6 现状由于IPv4发展的历史原因,造成了目前北美、欧洲、亚太三个地区IP地址极不平衡的现状。针对不同的现状,各地区对于IPv6技术的态度也是各不相同。北美地区IPv4地址丰富,国内运营商不积极,但是设备制造商受到其他地区IPv6技术发展的竞争压力,不得不推出自己的IPv6产品,目前主流厂商有CISCO和Juniper。欧洲地区相对北美而言地址缺乏,同时由于该地区移动通讯技术领先,尤其是3G技术的发展,促使了以诺基亚为首的欧洲厂商积极推动IPv6技术的发展。同时3GPP也将IPv6纳入其标准中。亚太地区是IPv4地址非常缺乏的地区,因此该地区的主要通讯大国都投入研究IPv6技术。日本启动WIDE项目开发大量的IPv6源码,日立、富士通、NEC也纷纷推出IPv6产品。中国目前处于实质应用阶段,在863-317项目子项目中完成IPv6试验网,1998年6月CERNET加入6Bone,NOKIA与CERNET合作建立覆盖全国的IPv6网络,启动下一代网络示范工程CNGI,并于今年大力建设接入。1.3 IPv6地址介绍1.3.1 格式我们知道IPv4地址是用点隔开的4段10进制数加上掩码或者前缀长度来表示的,例如192.168.1.1/24。IPv6的地址有128位字长,沿用IPv4的十进制表示方法就显得太笨拙了,所以在RFC2373中定义了不同于IPv4的格式。在RFC2373(IPv6 Addressing Architecture)中定义,IPv6地址有3种格式。首选格式、压缩表示和内嵌IPv4地址的IPv6地址表示。首选格式IPv6的128位地址是按照每16位划分为一段,每段被转换为一个4位十六进制数,并用冒号隔开。这种表示方法叫冒号十六进制表示法。下面是一个二进制的128位IPv6地址:00100000000000010000010000010000000000000000000000000000000000010000000000000000000000000000000000000000000000000100010111111111将其划分为每16位一段:0010000000000001 0000010000010000 0000000000000000 00000000000000010000000000000000 0000000000000000 0000000000000000 0100010111111111将每段转换为16进制数,并用冒号隔开:2001:0410:0000:0001:0000:0000:0000:45ff这就是RFC2373中定义的首选格式。在首选格式后面加上前缀长度就是一个完整的IPv6地址格式:2001:0410:0000:0001:0000:0000:0000:45ff / 64采用首选格式一共要书写8段,每段有4个16进制数组成。很明显其中有大量的0是没有必要的,因此首选格式对于人工书写而言还是显得麻烦一些,因此定义了一种压缩格式。压缩格式RFC2373中规定:当一个或多个连续的16比特为0字符时,为了缩短地址长度,用:(两个冒号)表示,但一个IPv6地址中只允许一个:(如果出现超过一个的:,就无法判断每个:到底省略了多少个全0段);没有意义的0可以省略掉。对于首选格式地址:2001:0410:0000:0001:0000:0000:0000:45ff又可以表示为:2001:410:0:1:45ff根据这个规则下列地址是非法的(应用了多个:)::AAAA:13ffe:1010:2A2A:1注意:使用压缩表示时,不能将一个段内的有效的0也压缩掉。例如,不能把FF02:30:0:0:0:0:0:5压缩表示成FF02:3:5,而应该表示为FF02:30:5。在压缩格式表示的IPv6地址后面加上前缀长度就是一个完整的IPv6地址:2001:410:0:1:45ff / 64在某些特定场合下,会使用到一些包含IPv4地址的IPv6地址,为了让IPv4地址显得更加突出一些,在RFC2373中定义了内嵌IPv4地址的IPv6地址格式。内嵌IPv4地址格式这其实是过渡机制中使用的一种特殊表示方法。关于过渡机制在IPv6其它部分的培训中有详细讲解。在这种表示方法中,IPv6地址的第一部分使用十六进制表示,而IPv4地址部分是十进制格式。有两种内嵌IPv4地址的IPv6地址。下面是这种表示方法的示例:0:0:0:0:0:0:192.168.1.2或者:192.168.1.20:0:0:0:0:FFFF:192.168.1.2或者:FFFF:192.168.1.2在内嵌IPv4地址格式后面加上前缀长度就是完整的IPv6地址格式:0:0:0:0:0:0:192.168.1.2 / 64 或者 :192.168.1.2 / 64最后需要指出的是,RFC2373已经被新的RFC3513替代,不过其中关于地址各式的定义,没有大的变化。1.3.2 结构类似于IPv4地址,IPv6地址的结构也是前缀加上一个特定的标识。在IPv4中是主机标识,而在IPv6中就是接口标识。IPv6前缀顾名思义,地址前缀就是在地址的最前面那段数字。当然也属于128位地址空间范围之中。这部分或者有固定的值,或者是路由或子网的标识。有一个不恰当的比喻,我们可以将其看作是类似于IPv4中的网络ID。其表示方法与IPv4中的CIDR表示方法一样,用“地址/前缀长度”来表示。那么如果有了前缀如何产生接口ID呢?1.3.3 接口ID的生成IPv6的地址除了前缀以外,还包括接口ID,那么接口ID是如何形成的呢?目前有三种方式可以产生IPv6接口ID:IEEE EUI-64规范接口ID的典型长度是64位,IEEE EUI-64规范给出了一个由IEEE 48位MAC地址自动生成64位Interface ID的方法。MAC地址格式如下: 其中c位表示厂商ID,m位表示厂商编号ID,g表示其是表示单个主机还是某个组。具体的转换算法为:将上述的0转换为1,在c和m之间插入两个字节:FFFE,结果为: 这种由MAC地址产生IPv6地址接口ID的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时(后面会介绍),只需要获取一个IPv6前缀就可以与接口ID形成IPv6地址。使用这种方式最大的缺点就是某些恶意者可以通过二层MAC推算出三层IPv6地址。设备随机生成有时候设备也可以采用随机生成的方法产生一个接口ID,目前Windows XP支持该方式。手动配置顾名思义,手动配置就是人为指定接口ID来实现。1.3.4 地址分类我们知道,IPv4地址分为:单播地址、组播地址、广播地址。而IPv6中没有广播地址,增加了任播地址。也就是说IPv6地址被分为:单播地址、组播地址、任播地址。单播地址用于标识一个接口,发往该目的地址的报文会被送到被标识的接口;组播地址用于标识多个接口,发往该目的地址的报文会被送到被标识的所有接口;任播地址用于标识多个接口,发往该目的地址的报文会被送到被标识的所有接口中最近的一个接口上。实际上任播地址与单播地址使用同一个地址空间,也就是说,由路由器决定数据包是做任播转发还是单播转发。1.3.5 单播地址IPv6中的单播概念和IPv4中的单播概念是类似的,寻址到单播地址的数据包最终会被发送到一个唯一的接口。与IPv4单播地址不同的是,IPv6单播地址又分为链路本地地址(Link-Local address)、站点本地地址(Site-Local address)、全球单播地址(Global Unicast Address)等种类的单播地址(RFC3513有详细的IPv6单播地址分类)。另外,在RFC3513中还定义了三种特殊的IPv6地址,一个是全0地址,被称为未指定地址Unspecified Address,用于IPv6节点在没有获取IPv6地址时的通讯;另一个是:1,被称为回环地址Loopback Address,用于IPv6节点发送报文给自己;还有一个就是内嵌IPv4地址的IPv6地址,用于IPv4向IPv6的过渡技术。根据RFC3513的对于单播地址有一个总的原则:单播地址前三位不以000开头的,接口ID必须为64bits,而那些前三位以000开头的单播地址就没有这个限制。未指定地址Unspecified Address未指定地址是一个全0地址,一般表示为: / 128。该地址仅用于接口还没有被分配IPv6地址时与其它节点通讯作为源地址,例如在重复地址检测DAD中会出现(后面会介绍)。由于未指定地址仅仅是一个临时通讯的地址,所以包含未指定地址的报文不应该被转发。环回地址Loopback Address与IPv4中的127.0.0.1作用相同,在IPv6中使用:1 / 128表示自己,该地址主要用于报文发送给自己。全球单播地址Global Unicast全球单播地址类似于IPv4 Internet上用于通信的单播地址。通俗地说就是IPv6公网地址。全球单播地址的格式是全球路由前缀(n bits)+子网ID(m bits)+接口ID(128-n-m bits),其中前两部分形成了IPv6的前缀。目前已经分配的全球单播地址前缀都是以001开头的(RFC2374),分配范围有以下几个:2001:/16 IPv6 Internet2002:/16 6to4隧道3ffe:/16 6bone还有2003:/16到3ffd:/16目前没有分配。当NSAP需要映射到全球单播IPv6地址时,就需要采用如下的组成:以0000001开头,后续121位在RFC1888中定义。内嵌IPv4地址的IPv6地址当需要将IPv4单播地址与IPv6全球单播地址建立联系的时候一般使用两种地址,一种是IPv4兼容IPv6地址,另一种是IPv4映射IPv6地址。前者以96位0加上32位IPv4地址形成,用于IPv4兼容IPv6自动隧道。后者以80位0加上16位1,再加上IPv4地址形成,用于IPv4与IPv6的互通,目前有SIIT(Stateless IP/ICMP Translation)应用,参考RFC2765。链路本地地址这是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。链路本地地址有固定的格式,下图显示了链路本地地址的结构。 从图中我们可以看出,本地链路地址由一个特定的前缀和接口ID两部分组成:它使用了特定的本地链路前缀FE80:/64(最高10位值为1111111010),同时将接口ID添加在后面作为地址的低64比特。当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个本地链路地址。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通讯。那么这个链路本地地址怎么自动配置完成的呢?我们知道链路本地地址有一个固定的前缀FE80:/64,这解决了前缀部分的问题,但接口ID部分呢?获取IPv6接口ID的最常用的方法,是使用IEEE EUI-64方式。站点本地地址站点本地地址是另一种应用范围受限的地址,它仅仅能在一个站点内使用。这有点像IPv4中的私有地址比较类似。任何没有申请到提供商分配的全球单播地址的组织机构都可以使用本地站点地址。对于站点本地地址来说,前48位总是固定的,其中前十位固定为1111111011,紧跟在后面的是连续38位0。在接口ID和48位特定前缀之间有16位子网ID字段,供机构在内部构建子网。站点本地地址的机构如下图所示: 与链路本地地址不同的是,站点本地地址不是自动生成的。一个本地站点前缀和地址可以分配给站点内的任何节点,包括路由器。目前主流厂商都已经支持的IPv6,配置方式主要有EUI-64和手动两种。Windows XP、Windows 2003以及Linux也已经支持IPv6。1.3.6 组播地址IPv6的组播与IPv4相同,也就是发往组播目的地址的报文会被发送到该组播地址代表的一组接口。在IPv4中,组播地址的最高三位设为111。在IPv6网络中,组播地址也有特定的前缀来标识,其最高位前8位为1。下图显示了组播地址的结构: 标志(Flgs)字段有4个比特,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。范围(Scop)用来限制组播数据流在网络中发送的范围。该字段占有4比特。RFC3513是这样定义该字段的:0:预留1:节点本地范围,单个接口有效,仅用于Loopback通讯2:链路本地范围4:管理本地范围,由管理员配置5:站点本地范围8:组织本地范围,属于组织的多个站点E:全球范围F:预留其它的值暂时没有定义。从这里我们就可以推断出FF02:2是一个链路本地范围的组播地址,而FF05:2是一个站点本地范围的组播地址。最重要的字段要属于最后的组ID(Group-ID)字段了。该字段长度为112位,用以标识组播组,我们知道112位最多可以生成2112个组ID。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位组ID,将剩余的80位都置0。如下图所示: 这样可以每个组ID都映射到一个唯一的以太网组播MAC地址(参见RFC2464)。类似于IPv4,IPv6同样有一些特殊的组播地址,这些地址由特别的含义,这里举几个例子(还有很多类似的特殊地址):FF01:1(节点本地范围组播地址)FF02:1(链路本地范围所有节点组播地址)FF01:2(节点本地范围所有路由器组播地址)FF02:2(链路本地范围所有路由器组播地址)FF05:2(站点本地范围所有路由器组播地址)在IPv6组播地址中,有一种特别的组播地址,叫做Solicited-node地址,被请求节点组播地址。Solicited-node地址是一种特殊用途的地址,主要用于重复地址检测和节点用来获取相同本地链路上邻居节点的链路层地址(后面有介绍)。Solicited-node地址由前缀FF02:1:FF00:0/104和单播地址的最后24位组成。一个单播地址对应一个Solicited-node地址。Solicited-node地址受限范围为本地链路范围。在RFC3513中定义了一些组播地址:FF00:到FF0F:为保留地址,不允许被分配;FF01:1、FF02:1代表所有节点;FF01:2、FF02:2、FF05:2代表所有路由器;FF02:1:FFXX:XXXX被分配给被请求节点组播地址Solicited-node Multicast Address。1.3.7 任播地址这是IPv6特有的地址类型,它用来标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。适合于“One-to-One-of-Many”(一对组中的一个)的通讯场合。接收方只需要是一组接口中的一个即可,如移动用户上网就需要因地理位置的不同,而接入离用户最近的一个接收站,这样才可以使移动用户在地理位置上不受太多的限制。任播地址从单播地址空间中进行分配,使用单播地址的任何格式。因而,从语法上,任播地址与单播地址没有区别。被分配具有任播地址的节点必须得到明确的配置,从而知道它是一个任播地址。目前,任播地址仅被用做目标地址,且仅分配给路由器。在RFC3513中定义了子网路由器任播地址(Subnet-Router anycast Address),其接口ID为全0。发往该任播地址的报文会被发送到任播地址所代表子网(子网路由器任播地址的前缀)内的某一台路由器,该路由器是离得最“近”的一台。所谓最近一般是路由的概念。1.3.8 相关RFC关于IPv6地址的结构以及分配都有相关的RFC进行定义,目前主要有:RFC1881:An Architecture for IPv6 Unicast Address AllocationRFC1887:An Architecture for IPv6 Unicast Address AllocationRFC1888:OSI NSAPs and IPv6RFC1924:A Compact Representation of IPv6 AddressesRFC2375:IPv6 Multicast Address AssignmentsRFC2450:Proposed TLA and NLA Assignment RulesRFC2471:IPv6 Testing Address AllocationRFC2526:Reserved IPv6 Subnet Anycast AddressesRFC2732:Format for Literal IPv6 Addresses in URLsRFC2928:Initial IPv6 Sub-TLA ID AssignmentsRFC3306:Unicast-Prefix-based IPv6 Multicast AddressesRFC3307:Allocation Guidelines for IPv6 Multicast AddressesRFC3513:Internet Protocol Version 6 (IPv6) Addressing Architecture RFC3531:A Flexible Method for Managing the Assignment of Bits of an IPv6 AddressRFC3578:IPv6 Global Unicast Address FormatRFC3879:Deprecating Site Local Addresses1.4 IPv6报文结构1.4.1 报文构成IPv6数据包由一个IPv6报头、多个扩展报头和一个上层协议数据单元组成。IPv6数据包的结构如下图所示:从图中我们可以看出IPv6数据包由以下几个部分组成:IPv6基本报头(IPv6 Header)每一个IPv6数据包都必须包含报头,其长度固定为40字节。基本报头提供报文转发的基本信息,会被转发路径上面的所有路由器解析。扩展报头(Extension Headers)IPv6扩展报头是可能跟在基本IPv6报头后面的可选报头。IPv6数据包中可以包含一个或多个扩展报头,当然也可以没有扩展报头,这些扩展报头可以具有不同的长度。IPv6报头和扩展报头代替了IPv4报头及其选项。新的扩展报头格式增强了IPv6的功能,使其具有极大的扩展性。与IPv4报头中的选项不同,IPv6扩展报头没有最大长度的限制,因此可以容纳IPv6通信所需要的所有扩展数据。扩展报头的。扩展报头提供报文转发的扩展信息,并不会被路径上所有的路由器解析,一般只会被目的路由器解析处理。上层协议数据单元(Upper Layer Protocol Data Unit)上层协议数据单元一般由上层协议包头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。1.4.2 基本报头IPv6基本报头也称之为固定报头。固定报头包含8个字段,总长度为40个字节。这8个字段分别为:版本(Version)、流量级别(Traffic Class)、流标签(Flow Label)、载荷长度(Payload Length)、下一个报头(Next Header)、跳数限制(Hop Limit)、源IPv6地址、目的IPv6地址。版本(Version)该字段规定了IP协议的版本,其值为6。长度为4位。通信流类别(Traffic Class)该字段功能和IPv4中的服务类型功能类似,表示IPv6数据包的类或优先级。长度为8位。RFC2460中没有定义通信流类别字段的值。RFC2474以区分服务(DS)字段的形式,为通信流类别提供了一个可替换的定义。流标签(Flow Label)与IPv4相比,该字段是新增的。它用来标识这个数据包属于源节点和目标节点之间的一个特定数据包序列,它需要由中间IPv6路由器进行特殊处理。该字段长度为20位。关于流标签字段的使用的详细细节,还没有具体协议定义。一般来说一个流可以通过源/目的IPv6地址和流标签来确定。有效载荷长度(Payload Length)该字段表示IPv6数据包有效载荷的长度。有效载荷是指紧跟IPv6包头的数据包的其它部分(即扩展报头和上层协议数据单元)。该字段长度为16位。那么该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。关于逐跳选项扩展报头在后面将会提及。下一个报头(Next Header)该字段定义紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。该字段长度为8位。关于扩展报头的详细信息后面回提及。跳数限制(Hop Limit)该字段类似于IPv4中的Time to Live字段。它定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据包将被丢弃。该字段长度为8位。源地址(Source Address)表示发送方的地址,长度为128位。目的地址(Destination Address)表示接收方的地址,长度为128位。为了更好地理解这8个字段具体含义,我们将IPv6与IPv4报头格式对比一下式。IPv4报头中的内容包括:版本(Version)该字段规定了IP协议的版本,其值为4。长度为4位。Internet报头长度(IHL)该字段表示有效载荷之前的4字节块的数量。该字段长度为4位。因为IPv4包头的最小长度为20字节,所以其值最小为5。服务类型(Type of Service)该字段指定路由器在传送过程中如何处理数据包。也可以这么说:表示这个数据包在由IPv4网络中的路由器转发时所期待的服务。这个字段长度为8位。这个字段也可以解释为区分业务编码点(DSCP)。RFC2474提供了关于DSCP的详细定义。总长度(Total Length)该字段表示IP数据包的总长度(单位为字节),包括包头和有效载荷。这个字段的长度为16位。标识(Identification)该字段和后面提到的标志以及分段偏移量字段都是和分段有关的字段。标识字段由IPv4数据包的源节点来选择,如果IPv4数据包被拆分了,则所有的片断都保留标识字段得值,以使目标节点可以对片断进行重组。该字段长度为16。标志位(Flags)该字段长度为3位,当前只定义了2位,一个用来表示是否可以对IPv4数据包进行拆分,另一个表示在当前的片断之后是否还有片断。片段偏移量(Fragment Offset)该字段表示相对于原始IPv4有效载荷起始位置的相对位置。这个字段的长度为13位。生存时间(Time to Live)该字段指出了一个IPv4数据包在被丢弃前,可以经过的链路的最大数量。该字段值每经过一个路由器该字段减去1,当为0时,数据包将被丢弃。长度为8位。协议(Protocol)该字段用于标识有效载荷中的上层协议。长度为8位。报头校验和(Header Checksum)表示IP包头的校验和,用于错误检查。请注意:该字段仅用于IP包头的校验和,有效载荷不包括在校验和计算中。数据包沿途的每个中间路由器都重新计算和验证该字段(因为路由器转发数据包时,TTL值都变化)。该字段长度为16。源地址(Source Address)发送方的IP地址,长度为32位。目的地址(Destination Address)接收方的IP地址,长度为32位。选项(Options)该字段是一个可选项。通过将IPv6报文头和IPv4报文头进行比较,我们就发现IPv6中去掉了几个在IPv4中存在的字段:包头长度、标识、标志、分段偏移量、包头校验和、选项和填充。为什么要去掉这几项呢?其实IPv6设计者是很有深意的。首先分析一下包头长度字段。我们知道在IPv4包头中,包头长度指有效载荷之前的4字节块的数量,也就是数据包头的总长度,包括选项字段部分。如果有选项字段,IPv4数据包头长度就要增加,所以IPv4包头长度的值不是固定的。而IPv6不使用选项字段,而是用扩展字段,基本IPv6包头长度是固定的40个字节,扩展字段的处理不同于IPv4对选项字段的处理。由于IPv6处理分段有所不同,所以标识、标志和分段偏移量等三个和分段有关系的字段也被去掉。在IPv6网络中,中间路由器不再处理分段,而只在产生数据包的源节点处理分段。去掉分段字段也就省却了中间路由器为处理分段而耗费的大量CPU资源。那么包头校验和字段为什么要去掉呢?IPv6设计者们认为第2层、第4层都有校验和(UDP校验和在IPv4中是可选的,在IPv6中则是必需的),因此第3层校验和是冗余的,不是必需的,而且浪费中间路由器的资源。由于IPv6从根本上改变了选项字段,在IPv6中选项由扩展报头处理,因此也去掉了选项字段,简化了报头,减少了发送路径上中间路由器的处理消耗。下表对IPv6报头和IPv6报头进行了详细比较。IPv4包头的字段IPv6包头的字段IPv6包头与IPv4包头的比较Version(4比特)Version(4比特)功能相同,但IPv6中包含了新值IHL(4比特)/在IPv6中被去掉了。基本IPv6包头长度固定,总是有40个8bit字节Type of service(4比特)Traffic class(8比特)两种包头中,具有相同的功能/Flow label(20比特)新增字段,用来标识IPv6数据流Total length(16比特)Payload length两种包头中,具有相同的功能Identification(16比特)/因为在IPv6中分段处理方式的不同,所以在IPv6中被去掉了Flags(3比特)/因为在IPv6中分段处理方式的不同,所以在IPv6中被去掉了Fragment offset(13比特)/因为在IPv6中分段处理方式的不同,所以在IPv6中被去掉了TTL(8比特)Hop limit(8比特)两种包头中,具有相同的功能Protocol(8比特)Next header(8比特)两种包头中,具有相同的功能Header checksum(16比特)/在IPv6中被去掉了。链路层技术和高层协议处理校验和以及错误控制Source address(32比特)Source address(128比特)在IPv6中,源地址被扩展到128位Destination address(32比特)Destination address (128比特)在IPv6中,源地址被扩展到128位Option(可变)/在IPv6中被去掉了。在IPv4中,处理该选项的方式是不同的Padding(可变)/在IPv6中被去掉了。在IPv4中,处理该选项的方式是不同的1.4.3 扩展报头IPv6扩展报头是可能跟在基本IPv6报头后面的可选报头。为什么在IPv6中要设计扩展报头这种字段呢?我们知道在IPv4的报头中包含了所有的选项,因此每个中间路由器都必须检查这些选项是否存在,如果存在,就必须处理它们。这种设计方法会降低路由器转发IPv4数据包的效率。为了解决转发效率问题,在IPv6中,相关选项被移到了扩展报头中。中间路由器就不需要处理每一个可能出现的选项(在IPv6中,每一个中间路由器必须处理唯一的扩展报头是逐跳选项扩展报头),这种处理方式提高了路由器处理数据包的速度,也提高了其转发性能。下面是一些目前已经定已的扩展报头:逐跳选项报头(Hop-by-Hop Options header)目标选项报头(Destination Options header)路由报头(Routing header)分段报头(Fragment header)认证报头(Authentication header)封装安全有效载荷报头(Encapsulating Security Payload header)在典型的IPv6数据包中,并不是每一个数据包都包括所有的扩展报头。在中间路由器或目标需要一些特殊处理时,发送主机才会添加相应扩展报头。那么基本报头、扩展报头和上层协议的相互关系是什么呢?下图是一个简单的描述:从上面这张图我们可以看出,如果数据包中没有扩展报头,也就是说数据包只包括基本报头和上层协议单元,基本报头的下一个报头(Next Header)字段值指明上层协议类型。在上例中,基本报头的下一个报头字段值为6,说明上层协议为TCP;如果报文有一个扩展报头,则基本报头的下一个报头(Next Header)字段值为扩展报头类型(在上例中,指明紧跟在基本报头后面的扩展报头为43,也就是路由扩展报头),扩展报头的下一个报头字段指明上层协议类型;以此类推,如果数据包中包括多个扩展报头,则每一个扩展报头的下一个报头指明紧跟着自己的扩展报头的类型,最后一个扩展报头的下一个报头字段指明上层协议。扩展报头按照其出现的顺序被处理。其实在数据包中如果出现多个扩展报头时,扩展报头的排列顺序是有一定原则的,RFC2460建议IPv6报头之后的扩展报头按照如下顺序排列:1、逐跳选项报头2、目标选项报头(当存在路由报头时,用于中间目标)3、路由报

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论