IPv6协议技术特点
3.1 IPv6相对于IPv4有哪些较为显著的优势?
相对于IPv4,IPv6有如下一些显著的优势:
(1)地址容量大大扩展,由原来的32位扩充到128位,彻底解决IPv4地址不足的问题;支持分层地址结构,从而更易于寻址;扩展支持组播和任意播地址,这使得数据包可以发送给任何一个或一组节点;
(2)大容量的地址空间能够真正的实现无状态地址自动配置,使IPv6终端能够快速连接到网络上,无需人工配置,实现了真正的即插即用;
(3)报头格式大大简化,从而有效减少路由器或交换机对报头的处理开销,这对设计硬件报头处理的路由器或交换机十分有利;
(4)加强了对扩展报头和选项部分的支持,这除了让转发更为有效外,还对将来网络加载新的应用提供了充分的支持;
(5)流标签的使用让我们可以为数据包所属类型提供个性化的网络服务,并有效保障相关业务的服务质量;
(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)和报头校验和(headerchecksum)这6个域被删除。报文总长(total length)、协议类型(protocol type)和生存时间(time to live,TTL)3个域的名称或部分功能被改变,其选项(options)功能完全被改变,新增加了2个域,即优先级和流标签。
下图为具体的IPv4与IPv6报头比较。
表1 IPv4包头格式
4bit版本号
4bit报头长度
8bit服务类型
16bit数据包长度
标识符(16bit)
标志(4bit)
分段偏移(12bit)
生存时间(8bit)
传输协议(8bit)
报头校验和(16bit)
源IP地址(32bit)
目的IP地址(32bit)
选项(24bit)
填充(8bit)
表2 ipv6包头格式
4bit版本号
4bit优先级
24bit流标签
净荷长度(16bit)
下一报头(8bit)
HOP限制(8bit)
源IP地址(128bit)
目的IP地址(128bit)
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。
3.3.4 IPv6地址为128位,配地址岂不是要花费很多时间?
IPv6协议支持地址自动配置,这是一种即插即用的机制。IPv6节点通过地址自动配置得到IPv6地址和网关地址。
IPv6支持无状态地址自动配置和状态地址自动配置两种地址自动配置方式。在无状态地址自动配置方式下,需要配置地址的网络接口先使用邻居发现机制获得一个链路本地地址。网络接口得到这个链路本地地址之后,再接收路由器宣告的地址前缀,结合接口标识得到一个全球地址。而状态地址自动配置的方式,如动态主机配置协议(DHCP),需要一个DHCP服务器,通过客户机/服务器模式从DHCP服务器处得到地址配置的信息。
3.3.5IPv6地址都有哪些类型?
所有类型的IPv6地址都被分配到接口,而不是节点。IPv6地址是单个或一组接口的128位标识符,有三种类型:
(1) 单播(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任意播地址
(3) 组播(MultiCast)地址
一组接口(一般属于不同节点)的标识符。发往多播地址的包被送给该地址标识的所有接口。地址开始的11111111标识该地址为组播地址。
IPv6组播地址
IPv6中没有广播地址,它的功能正在被组播地址所代替。另外,在IPv6中,任何全“0”和全“1”的字段都是合法值,除非非凡地排除在外的。非凡是前缀可以包含“0”值字段或以“0”为终结。一个单接口可以指定任何类型的多个IPv6地址(单播、任意播、组播)或范围。
3.3.6 什么是IPv6的可聚集全球单播地址?
IPv6为点对点通信设计了一种具有分级结构的地址,这种地址被称为可