二 IPv6技术白皮书

网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息 。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等 。当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段 。IPv6协议技术特点
3.1 IPv6相对于IPv4有哪些较为显著的优势?
相对于IPv4,IPv6有如下一些显著的优势:
(1)地址容量大大扩展,由原来的32位扩充到128位,彻底解决IPv4地址不足的问题;支持分层地址结构,从而更易于寻址;扩展支持组播和任意播地址,这使得数据包可以发送给任何一个或一组节点;
(2)大容量的地址空间能够真正的实现无状态地址自动配置,使IPv6终端能够快速连接到网络上,无需人工配置,实现了真正的即插即用;
(3)报头格式大大简化,从而有效减少路由器或交换机对报头的处理开销,这对设计硬件报头处理的路由器或交换机十分有利;
(4)加强了对扩展报头和选项部分的支持,这除了让转发更为有效外,还对将来网络加载新的应用提供了充分的支持;
(5)流标签的使用让我们可以为数据包所属类型提供个性化的网络服务,并有效保障相关业务的服务质量;
【二 IPv6技术白皮书】(6)认证与私密性:IPv6把IPSec作为必备协议,保证了网络层端到端通信的完整性和机密性;
(7)IPv6在移动网络和实时通信方面有很多改进 。特别地,不像IPv4,IPv6具备强大的自动配置能力从而简化了移动主机和局域网的系统管理 。
3.2 报头结构            
3.2.1 IPv6的报头结构是怎样的?                      
新的IPv6报头的结构比IPv4简单得多, IPv6报头中删除了IPv4报头中许多不常用的域,放入了可选项和报头扩展中;IPv6中的可选项有更严格的定义 。IPv4中有10个固定长度的域、2个地址空间和若干个选项,IPv6中只有6个域和2个地址空间 。
虽然IPv6报头占40字节,是24字节IPv4报头的1.6倍,但因其长度固定(IPv4报头是变长的),故不需要消耗过多的内存容量 。
IPv4中的报头长度(header length)、服务类型(type of service,TOS)、标识符(identification)、标志(flag)、分段偏移(fragment offset)和报头校验和(header  checksum)这6个域被删除 。报文总长(total length)、协议类型(protocol type)和生存时间(time to live,TTL)3个域的名称或部分功能被改变,其选项(options)功能完全被改变,新增加了2个域,即优先级和流标签 。

下图为具体的IPv4与IPv6报头比较 。

    3.3 地址问题                        3.3.1 为什么IPv6协议的地址长度是128位?
有些人也许要问,IPv4地址不够用,那我在IPv4上再增加几位地址表示就行了,何必非要是IPv6的128 位呢?这种提问是对芯片设计及CPU处理方式不理解造成的,同时也对未来网络的扩展没有充分的预见性 。芯片设计中数值的表示我们知道是全用“0”、“1” 代表,CPU处理字长发展到现在分别经历了4位、8位、16位、32位、64位等,我们知道,在计算机中,当数据能用2的指数次幂字长位的二进制数表示时,CPU对数值的处理效率最高 。IPv4地址对应的是32比特字长就是因为当时的互联网上的主机CPU字长为32位 。现在的64位机已十分普及,128 位机正在成长中 。将地址定为64位在网络扩展性上显得不足,定为其它的一个长度在硬件芯片设计、程序编制方面的效率都将下降,因此从处理效率和未来网络扩展性上考虑,将IPv6的地址长度定为128位是十分合适的 。
3.3.2 IPv6的128位地址是一个什么概念?
IPv6提供128位的地址空间,IPv6所能提供的巨大的地址容量可以从以下几个方面来说明:    共有2128个不同的IPv6地址,也就是全球可分配地址数为340,282,366,920,938,463,463,374,607,431,768,211,456个;    若按土地面积分配,每平方厘米可获得2.2*1020个地址 。    IPv6地址耗尽的机会是很小的 。在可预见的很长时期内,IPv6的128位地址长度形成的巨大的地址空间能够为所有可以想象出的网络设备提供一个全球唯一的地址,IPv6充足的地址空间将极大地满足那些伴随着网络智能设备的出现而对地址增长的需求,例如个人数据助理(PDA)、移动电话(Mobile Phone)、家庭网络接入设备(HAN)等 。3.3.3 IPv6地址是如何表示的?
IPv4地址表示为点分十进制格式,32位的地址分成4个8位分组,每个8位写成十进制,中间用点号分隔 。而IPv6的128位地址则是以16位为一分组,每个16位分组写成4个十六进制数,中间用冒号分隔,称为冒号分十六进制格式 。例如:21DA:00D3:0000:2F3B:02AA:00FF:FE28:9C5A 是一个完整的IPv6地址 。IPv6的地址表示有以下几种特殊情形:     IPv6地址中每个16位分组中的前导零位可以去除做简化表示,但每个分组必须至少保留一位数字 。如上例中的地址,去除前导零位后可写成:21DA:D3:0:2F3B:2AA:FF:FE28:9C5A 。    某些地址中可能包含很长的零序列,为进一步简化表示法,还可以将冒号十六进制格式中相邻的连续零位合并,用双冒号“::”表示 。“::”符号在一个地址中只能出现一次,该符号也能用来压缩地址中前部和尾部的相邻的连续零位 。例如地址1080:0:0:0:8:800:200C:417A,0:0:0:0: 0:0:0:1,0:0:0:0:0:0:0:0分别可表示为压缩格式1080::8:800:200C:417A,::1,::。    在IPv4和IPv6混合环境中,有时更适合于采用另一种表示形式:x:x:x:x:x:x:d.d.d.d,其中x是地址中6个高阶16位分组的十六进制值,d是地址中4个低阶8位分组的十进制值(标准IPv4表示) 。例如地址0:0:0:0:0:0:13.1.68.3 ,0:0:0:0:0:FFFF:129.144.52.38 写成压缩形式为::13.1.68.3,::FFFF.129.144.52.38。     要在一个URL中使用文本IPv6地址,文本地址应该用符号“[”和“]”来封闭 。例如文本IPv6地址FEDC:BA98:7654:3210:FEDC:BA98:7654:3210写作URL示例为http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 。
[NextPage]
3.3.4 IPv6地址为128位,配地址岂不是要花费很多时间?    IPv6协议支持地址自动配置,这是一种即插即用的机制 。IPv6节点通过地址自动配置得到IPv6地址和网关地址 。    IPv6支持无状态地址自动配置和状态地址自动配置两种地址自动配置方式 。在无状态地址自动配置方式下,需要配置地址的网络接口先使用邻居发现机制获得一个链路本地地址 。网络接口得到这个链路本地地址之后,再接收路由器宣告的地址前缀,结合接口标识得到一个全球地址 。而状态地址自动配置的方式,如动态主机配置协议(DHCP),需要一个DHCP服务器,通过客户机/服务器模式从DHCP服务器处得到地址配置的信息 。3.3.5  IPv6地址都有哪些类型?    所有类型的IPv6地址都被分配到接口,而不是节点 。IPv6地址是单个或一组接口的128位标识符,有三种类型: 单播(Unicast)地址单一接口的标识符 。发往单播地址的包被送给该地址标识的接口 。对于有多个接口的节点,它的任何一个单播地址都可以用作该节点的标识符 。IPv6单播地址是用连续的位掩码聚集的地址,类似于CIDR的IPv4地址 。IPv6中的单播地址分配有多种形式,包括全部可聚集全球单播地址、NSAP地址、IPX分级地址、站点本地地址、链路本地地址以及运行IPv4的主机地址 。单播地址中有下列两种特殊地址: 不确定地址 单播地址0:0:0:0:0:0:0:0称为不确定地址 。它不能分配给任何节点 。它的一个应用示例是初始化主机时,在主机未取得自己的地址以前,可在它发送的任何IPv6包的源地址字段放上不确定地址 。不确定地址不能在IPv6包中用作目的地址,也不能用在IPv6路由头中; 回环地址 单播地址0:0:0:0:0:0:0:1称为回环地址 。节点用它来向自身发送IPv6包 。它不能分配给任何物理接口 。(2) 任意播(AnyCast)地址一组接口(一般属于不同节点)的标识符 。发往任意播地址的包被送给该地址标识的接口之一(路由协议度量距离最近的) 。IPv6任意播地址存在下列限制:· 任意播地址不能用作源地址,而只能作为目的地址;· 任意播地址不能指定给IPv6主机,只能指定给IPv6路由器;
 

二 IPv6技术白皮书

文章插图
                  IPv6任意播地址(3) 组播(MultiCast)地址一组接口(一般属于不同节点)的标识符 。发往多播地址的包被送给该地址标识的所有接口 。地址开始的11111111标识该地址为组播地址 。
二 IPv6技术白皮书

文章插图
           IPv6组播地址    IPv6中没有广播地址,它的功能正在被组播地址所代替 。另外,在IPv6中,任何全“0”和全“1”的字段都是合法值,除非特殊地排除在外的 。特别是前缀可以包含“0”值字段或以“0”为终结 。一个单接口可以指定任何类型的多个IPv6地址(单播、任意播、组播)或范围 。

二 IPv6技术白皮书

文章插图
 3.3.6 什么是IPv6的可聚集全球单播地址?    IPv6为点对点通信设计了一种具有分级结构的地址,这种地址被称为可聚集全球单播地址(Aggregatable Global Unicast Address),它在RFC2374中定义 。可聚集地址具有三个层次的分级结构:公用拓扑:提供公用互联网传送服务的供应商和交换局群体;站点拓扑:本地的特定站点或组织,不提供到本站点以外节点的公用传送服务;接口标识符:标识链路上的接口;       可聚集全球单播地址的分级结构划分如下图所示 。开始3个地址位是地址类型前缀,用于区别其它地址类型 。其后的13位TLA ID、32位NLA ID、16位SLA ID和 64位主机接口ID,分别用于标识分级结构中自上向下排列的TLA (Top Level Aggregator,顶级聚集体)、NLA(Next Level Aggregator,下级聚集体)、SLA(Site Level Aggregator,站点级聚集体)和主机接口 。RES保留,以备将来TLA或NLA扩充用 。TLA是与长途服务供应商和电话公司相互连接的公共网络接入点,它从国际Internet注册机构如IANA处获得地址 。NLA通常是大型ISP,它从TLA处申请获得地址,并为 SLA分配地址 。SLA也可称为订户(subscriber),它可以是一个机构或一个小型ISP 。SLA负责为属于它的订户分配地址 。SLA通常为其订户分配由连续地址组成的地址块,以便这些机构可以建立自己的地址分级结构以识别不同的子网 。分级结构的最底层是网络主机 。 
        IPv6可聚集全球单播地址     设计这样的地址格式是为了既支持基于当前供应商的聚集,又支持被称为交换局的新的聚集类型 。其组合使高效的路由聚集可用于直接连接到供应商和连接到交换局两者的站点上 。站点可以选择连接到两种类型中的任何一种聚集点 。3.3.7 IPv6的地址分配方式与IPv4有什么区别?    IPv4中,地址是用户拥有的 。也就是说,一旦用户从某机构处申请到一段地址空间,他就永远使用该地址空间,而不管他是从哪个因特网服务提供者(ISP)处获得服务 。这种方式的缺点是ISP必须在路由表中为每个用户的网络号维护一条表项 。随着用户数的增加,会出现大量无法会聚的特殊路由,即使无类别域间路由(CIDR)也不能处理这样的路由表爆炸现象 。    IPv6改变了地址的分配方式,从用户拥有变成了ISP拥有 。全球网络号由因特网地址分配机构(IANA)分配给ISP,用户的全球网络地址是ISP地址空间的子集 。每当用户改变ISP时,全球网络地址必须更新为新ISP提供的地址 。这样ISP能有效地控制路由信息,避免路由爆炸现象的出现 。3.3.8 一台IPv6主机有多少地址?    通常一台IPv6主机有多个IPv6地址,即使该主机只有一个单接口 。一台IPv6主机可同时拥有以下几种单点传送地址:· 每个接口的链路本地地址;· 每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址);· 回环(loopback)接口的回环地址(::1) 。此外,每台主机还需要时刻保持收听以下多点传送地址上的信息:· 节点本地范围内所有节点组播地址(FF01::1);· 链路本地范围内所有节点组播地址(FF02::1);· 请求节点(solicited-node)组播地址(如果主机的某个接口加入请求节点组);· 组播组组播地址(如果主机的某个接口加入任何组播组) 。3.3.9 一台IPv6路由器有多少地址? 一台IPv6路由器可被分配以下几种单点传送地址:· 每个接口的链路本地地址;· 每个接口的单播地址(可以是一个站点本地地址和一个或多个可聚集全球地址);· 子网-路由器任意播地址;· 其他任意播地址(可选);· 回环接口的回环地址(::1) 。同样,除以上这些地址外,路由器需要时刻保持收听以下多点传送地址上的信息流:· 节点本地范围内的所有节点组播地址(FF01::1);· 节点本地范围内的所有路由器组播地址(FF01::2);· 链路本地范围内的所有节点组播地址(FF02::1);· 链路本地范围内的所有路由器组播地址(FF02::2);· 站点本地范围内的所有路由器组播地址(FF05::2);· 请求节点(solicited-node)组播地址(如果路由器的某个接口加入请求节点组);· 组播组组播地址(如果路由器的某个接口加入任何组播组) 。

    推荐阅读