IPv6协议.docx
《IPv6协议.docx》由会员分享,可在线阅读,更多相关《IPv6协议.docx(26页珍藏版)》请在冰豆网上搜索。
IPv6协议
定义
目前的全球因特网所采用的协议族是TCP/IP协议族。
IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议。
IPv6正处在不断发展和完善的过程中,它在不久的将来将取代目前被广泛使用的IPv4。
每个人将拥有更多IP地址。
简介
目前我们使用的第二代互联网IPv4技术,核心技术属于美国。
它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。
但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的IP地址近乎枯竭。
其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国只有3千多万个,只相当于美国麻省理工学院的数量。
地址不足,严重地制约了我国及其他国家互联网的应用和发展。
一方面是地址资源数量的限制,另一方面是随着电子技术及网络技术的发展,计算机网络将进入人们的日常生活,可能身边的每一样东西都需要连入全球因特网。
在这样的环境下,IPv6应运而生。
单从数字上来说,IPv6所拥有的地址容量是IPv4的约8×10^28倍,达到2^128-1个。
这不但解决了网络地址资源数量的问题,同时也为除电脑外的设备连入互联网在数量限制上扫清了障碍。
但是与IPv4一样,IPv6一样会造成大量的IP地址浪费。
准确的说,使用IPv6的网络并没有2^128-1个能充分利用的地址。
首先,要实现IP地址的自动配置,局域网所使用的子网的前缀必须等于64,但是很少有一个局域网能容纳2^64个网络终端;其次,由于IPv6的地址分配必须遵循聚类的原则,地址的浪费在所难免。
但是,如果说IPv4实现的只是人机对话,而IPv6则扩展到任意事物之间的对话,它不仅可以为人类服务,还将服务于众多硬件设备,如家用电器、传感器、远程照相机、汽车等,它将是无时不在,无处不在的深入社会每个角落的真正的宽带网。
而且它所带来的经济效益将非常巨大。
当然,IPv6并非十全十美、一劳永逸,不可能解决所有问题。
IPv6只能在发展中不断完善,也不可能在一夜之间发生,过渡需要时间和成本,但从长远看,IPv6有利于互联网的持续和长久发展。
目前,国际互联网组织已经决定成立两个专门工作组,制定相应的国际标准。
特点
(1)IPV6地址长度为128比特,地址空间增大了2的96次方倍;
(2)灵活的IP报文头部格式。
使用一系列固定格式的扩展头部取代了IPV4中可变长度的选项字段。
IPV6中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度。
(3)IPV6简化了报文头部格式,字段只有7个,加快报文转发,提高了吞吐量;
(4)提高安全性。
身份认证和隐私权是IPV6的关键特性。
(5)支持更多的服务类型;
(6)允许协议继续演变,增加新的功能,使之适应未来技术的发展。
优势
与IPV4相比,IPV6具有以下几个优势:
一,IPv6具有更大的地址空间。
IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
二,IPv6使用更小的路由表。
IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
三,IPv6增加了增强的组播(Multicast)支持以及对流的支持(FlowControl),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,QualityofService)控制提供了良好的网络平台。
四,IPv6加入了对自动配置(AutoConfiguration)的支持。
这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
五,IPv6具有更高的安全性。
在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。
操作方法
IPv6包由IPv6包头(40字节固定长度)、扩展包头和上层协议数据单元三部分组成。
IPv6包扩展包头中的分段包头(下文详述)中指名了IPv6包的分段情况。
其中不可分段部分包括:
IPv6包头、Hop-by-Hop选项包头、目的地选项包头(适用于中转路由器)和路由包头;可分段部分包括:
认证包头、ESP协议包头、目的地选项包头(适用于最终目的地)和上层协议数据单元。
但是需要注意的是,在IPv6中,只有源节点才能对负载进行分段,并且IPv6超大包不能使用该项服务。
下文还将简述IPv6寻址、路由以及自动配置的相关内容。
IPv6数据包:
包头
IPv6包头长度固定为40字节,去掉了IPv4中一切可选项,只包括8个必要的字段,因此尽管IPv6地址长度为IPv4的四倍,IPv6包头长度仅为IPv4包头长度的两倍。
其中的各个字段分别为:
Version(版本号):
4位,IP协议版本号,值=6。
TrafficClass(通信类别):
8位,指示IPv6数据流通信类别或优先级。
功能类似于IPv4的服务类型(TOS)字段。
FlowLabel(流标记):
20位,IPv6新增字段,标记需要IPv6路由器特殊处理的数据流。
该字段用于某些对连接的服务质量有特殊要求的通信,诸如音频或视频等实时数据传输。
在IPv6中,同一信源和信宿之间可以有多种不同的数据流,彼此之间以非“0”流标记区分。
如果不要求路由器做特殊处理,则该字段值置为“0”。
PayloadLength(负载长度):
16位负载长度。
负载长度包括扩展头和上层PDU,16位最多可表示65535字节负载长度。
超过这一字节数的负载,该字段值置为“0”,使用扩展头逐个跳段(Hop-by-Hop)选项中的巨量负载(JumboPayload)选项。
NextHeader(下一包头):
8位,识别紧跟IPv6头后的包头类型,如扩展头(有的话)或某个传输层协议头(诸如TCP,UDP或着ICMPv6)。
HopLimit(跳段数限制):
8位,类似于IPv4的TTL(生命期)字段。
与IPv4用时间来限定包的生命期不同,IPv6用包在路由器之间的转发次数来限定包的生命期。
包每经过一次转发,该字段减1,减到0时就把这个包丢弃。
SourceAddress(源地址):
128位,发送方主机地址。
DestinationAddress(目的地址):
128位,在大多数情况下,目的地址即信宿地址。
但如果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口。
IPv6数据包:
扩展包头
IPv6包头设计中对原IPv4包头所做的一项重要改进就是将所有可选字段移出IPv6包头,置于扩展头中。
由于除Hop-by-Hop选项扩展头外,其他扩展头不受中转路由器检查或处理,这样就能提高路由器处理包含选项的IPv6分组的性能。
通常,一个典型的IPv6包,没有扩展头。
仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。
与IPv4不同,IPv6扩展头长度任意,不受40字节限制,以便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。
但是为了提高处理选项头和传输层协议的性能,扩展头总是8字节长度的整数倍。
目前,RFC2460中定义了以下6个IPv6扩展头:
Hop-by-Hop(逐个跳段)选项包头、目的地选项包头、路由包头、分段包头、认证包头和ESP协议包头:
(一)Hop-by-Hop选项包头包含分组传送过程中,每个路由器都必须检查和处理的特殊参数选项。
其中的选项描述一个分组的某些特性或用于提供填充。
这些选项有:
Pad1选项(选项类型为0),填充单字节。
PadN选项(选项类型为1),填充2个以上字节。
JumboPayload选项(选项类型为194),用于传送超大分组。
使用JumboPayload选项,分组有效载荷长度最大可达4,294,967,295字节。
负载长度超过65,535字节的IPv6包称为“超大包”。
路由器警告选项(选项类型为5),提醒路由器分组内容需要做特殊处理。
路由器警告选项用于组播收听者发现和RSVP(资源预定)协议。
(二)目的地选项包头指名需要被中间目的地或最终目的地检查的信息。
有两种用法:
如果存在路由扩展头,则每一个中转路由器都要处理这些选项。
如果没有路由扩展头,则只有最终目的节点需要处理这些选项。
(三)路由包头
类似于IPv4的松散源路由。
IPv6的源节点可以利用路由扩展包头指定一个松散源路由,即分组从信源到信宿需要经过的中转路由器列表。
(四)分段包头
提供分段和重装服务。
当分组大于链路最大传输单元(MTU)时,源节点负责对分组进行分段,并在分段扩展包头中提供重装信息。
(五)认证包头
提供数据源认证、数据完整性检查和反重播保护。
认证包头不提供数据加密服务,需要加密服务的数据包,可以结合使用ESP协议。
(六)ESP协议包头
提供加密服务。
IPv6数据包:
上层协议数据单元
上层数据单元即PDU,全称为ProtocolDataUnit。
PDU由传输头及其负载(如ICMPv6消息、或UDP消息等)组成。
而IPv6包有效负载则包括IPv6扩展头和PDU,通常所能允许的最大字节数为65535字节,大于该字节数的负载可通过使用扩展头中的JumboPayload(见上文)选项进行发送。
IPv6技术对管理网络应用程序的影响
IPv6中有足够的地址为地球上每一平方英寸的地方分配一个独一无二的IP地址。
虽然这实际上能够使你能想到的任何设备都分配一个IP地址,但是,这对于管理地址分配的管理员来说却是一个恶梦。
幸运的是IPv6包含一种“节点自动配置”功能。
这实际上是在所有的IPv6网络中替代DHCP(动态主机配置协议)和ARP(地址解析协议)的下一代技术,能够让你不进行任何设置就可以把新设备连接到网络。
如果你更换了ISP(因此被分配一个不同的全球路由前缀),这个功能可以使你的网络重新分配IP地址的过程更简单,因为你所要做的一切只是改变你的路由器的设置,你的网络将重新获得一个使用新的前缀的新地址。
这将减少网络管理的巨大负担。
随着IPv6功能的增加,又出现一些潜在的管理问题。
IPv6本身提供了安全支持功能,这种功能称作“IPsec”。
根据VPN建立的方式,加密也许包括也许不包括某些头信息。
VPN可以减少客户机和服务器之间通信管理的工作量。
管理端点(IKE,互连网密钥交换)之间的安全策略也是很复杂的,如果你要亲自做这项工作的话。
这是基于IPsec和VPN提供的主要功能之一。
当然,IPsec可以很强大,但是,在某些远程接入的情况下是很脆弱的,例如使用一个移动设备访问一个企业网络。
IT部门要提供这种服务将进一步增加管理的负担。
实际应用
IPv6编址
从IPv4到IPv6最显著的变化就是网络地址的长度。
RFC2373和RFC2374定义的IPv6地址,就像下面章节所描述的,有128位长;IPv6地址的表达形式一般采用32个十六进制数。
IPv6中可能的地址有2≈3.4×10个。
也可以想象为16个因为32位地址每位可以取16个不同的值。
在很多场合,IPv6地址由两个逻辑部分组成:
一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)。
IPv6安装
1.Windows2000操作系统
(1)确认windows操作系统的补丁包已经升级到SP4。
(2)下载补丁包“tcpipv6-sp4.exe”,并双击运行该自解压文件。
(3)依次打开“控制面板”、“网络和拨号连接”,右击“本地连接”,再依次单击“属性”、“安装”、“协议”,选择“MSRIPv6Protocol”协议,即可成功安装IPv6协议栈。
2.WindowsXP/Windows2003操作系统
(1)IPv6协议栈的安装
在开始-->运行处执行ipv6install
(2)IPv6地址设置
在开始-->运行处执行netsh进入系统网络参数设置环境,然后执行
interfaceipv6
画面显示:
netshinterfaceipv6>
然后再执行
interfaceipv6>addaddress“本地连接”2001:
da8:
207:
:
9402
(3)IPv6默认网关设置
在上述系统网络参数设置环境中执行
interfaceipv6addroute:
:
/0“本地连接”2001:
da8:
207:
:
9401publish=yes
(4)网络测试命令
ping6、tracert6
3.WindowsVista操作系统
(1)开始——程序——附件——右键点击“命令提示符”——以管理员身份运行
(2)netshinterfaceipv6isatapsetstateenabled回车
(3)netshinterfaceipv6isatapsetrouter隧道IP回车
4.Linux操作系统
(1)安装ipv6协议
modprobeipv6
(2)IPv6地址设置
ifconfigeth0inet6add2001:
da8:
207:
:
9402
(3)IPv6默认网关设置
route-Ainet6add:
:
/0gw2001:
da8:
207:
:
9401
(4)网络测试命令
ping6、traceroute6
5.Solaris操作系统
(1)创建IPv6接口
touch/etc/hostname6.hme0
(2)添加IPv6地址
在/etc/inet/ipnodes文件中,加入如下一行:
2001:
da8:
207:
:
9402bnu-ipv6
(3)设置dns查找顺序
在/etc/nsswitch.conf文件中,修改hosts和ipnodes项如下:
hosts:
filesdns
ipnodes:
filesdns
(4)添加默认路由
routeadd-inet6default2001:
da8:
207:
:
9401-interface
(5)测试命令
ping-Ainet6IPv6目标地址
traceroute-Ainet6IPv6目标地址
IPv6的ISATAP隧道和6to4隧道测试
1.ISATAP隧道点IP地址是
用户设置isatap隧道的终结点router为
WindowsXP/2003设置如下:
C:
\DocumentsandSettings\Administrator>netsh
netsh>int
netshinterface>ipv6
netshinterface>ipv6>install
netshinterfaceipv6>isatap
netshinterfaceipv6isatap>setrouter(或是高端路由器的IP)
Vista设置如下:
鼠标右键点击“开始->程序->附件->命令提示符”,选择“以管理员身份运行”。
在新开启的【命令提示符】窗口中执行以下两条命令:
netshinterfaceipv6isatapsetrouter
netshinterfaceipv6isatapsetstateenabled
(部分Vista系统的电脑会在本地LAN中发出IPv6RA,导致相邻用户不走隧道,此时最好在本地网卡上禁用IPv6选项)
Linux设置如下:
iptunneladdsit1modesitremote202.120.58.150locala.b.c.d
ifconfigsit1up
ifconfigsit1add2001:
da8:
8000:
d010:
0:
5efe:
a.b.c.d/64
iprouteadd:
:
/0via2001:
da8:
8000:
d010:
:
1metric1
注意:
上面的a.b.c.d请使用你的真实IPv4地址代替
配置好之后ipconfig后应该看到一个2001:
da8:
8000:
d010为前缀的v6地址,hostid为5efe:
a.b.c.d,其中a.b.c.d为你的真实的IPV4地址。
推荐使用ISATAP隧道方式接入,不要和下面的另一种6to4隧道同时使用。
2.网络中心6to4隧道点IP地址是202.112.26.246
如果您无法使用ISATAP方式接入,可以考虑使用这种方式。
用户设置6to4隧道的终结点relay为202.112.26.246
WindowsXP/2003设置如下:
C:
\DocumentsandSettings\Administrator>netsh
netsh>int
netshinterface>ipv6
netshinterface>ipv6>install
netshinterfaceipv6>6to4
netshinterfaceipv66to4>setrelay202.112.26.246enable
然后ipconfig后应该看到一个2002:
xx:
xx为前缀的v6地址,hostid亦为xx:
xx,
其中xx.xx为你的真实的IPV4地址转化成得ipv6地址。
自动获得的默认网关是2002:
ca70:
1af6:
:
ca70:
1af6
IPv6寻址
在Internet协议版本6(IPv6)中,地址的长度是128位。
地址空间如此大的一个原因是将可用地址细分为反映Internet的拓扑的路由域的层次结构。
另一个原因是映射将设备连接到网络的网络适配器(或接口)的地址。
IPv6提供了内在的功能,可以在其最低层(在网络接口层)解析地址,并且还具有自动配置功能。
文本表示形式
以下是用来将IPv6地址表示为文本字符串的三种常规形式:
冒号十六进制形式
这是首选形式n:
n:
n:
n:
n:
n:
n:
n。
每个n都表示八个16位地址元素之一的十六进制值。
例如:
3FFE:
FFFF:
7654:
FEDA:
1245:
BA98:
3210:
4562.
压缩形式
由于地址长度要求,地址包含由零组成的长字符串的情况十分常见。
为了简化对这些地址的写入,可以使用压缩形式,在这一压缩形式中,多个0块的单个连续序列由双冒号符号(:
:
)表示。
此符号只能在地址中出现一次。
例如,多路广播地址FFED:
0:
0:
0:
0:
BA98:
3210:
4562的压缩形式为FFED:
:
BA98:
3210:
4562。
单播地址3FFE:
FFFF:
0:
0:
8:
800:
20C4:
0的压缩形式为3FFE:
FFFF:
:
8:
800:
20C4:
0。
环回地址0:
0:
0:
0:
0:
0:
0:
1的压缩形式为:
:
1。
未指定的地址0:
0:
0:
0:
0:
0:
0:
0的压缩形式为:
:
。
混合形式
此形式组合IPv4和IPv6地址。
在此情况下,地址格式为n:
n:
n:
n:
n:
n:
d.d.d.d,其中每个n都表示六个IPv6高序位16位地址元素之一的十六进制值,每个d都表示IPv4地址的十进制值。
地址类型
地址中的前导位定义特定的IPv6地址类型。
包含这些前导位的变长字段称作格式前缀(FP)。
IPv6单播地址被划分为两部分。
第一部分包含地址前缀,第二部分包含接口标识符。
表示IPv6地址/前缀组合的简明方式如下所示:
ipv6地址/前缀长度。
以下是具有64位前缀的地址的示例。
3FFE:
FFFF:
0:
CD30:
0:
0:
0:
0/64.
此示例中的前缀是3FFE:
FFFF:
0:
CD30。
该地址还可以以压缩形式写入,如3FFE:
FFFF:
0:
CD30:
:
/64。
IPv6定义以下地址类型:
单播地址
用于单个接口的标识符。
发送到此地址的数据包被传递给标识的接口。
通过高序位八位字节的值来将单播地址与多路广播地址区分开来。
多路广播地址的高序列八位字节具有十六进制值FF。
此八位字节的任何其他值都标识单播地址。
以下是不同类型的单播地址:
链路-本地地址。
这些地址用于单个链路并且具有以下形式:
FE80:
:
InterfaceID。
链路-本地地址用在链路上的各节点之间,用于自动地址配置、邻居发现或未提供路由器的情况。
链路-本地地址主要用于启动时以及系统尚未获取较大范围的地址之时。
站点-本地地址。
这些地址用于单个站点并具有以下格式:
FEC0:
:
SubnetID:
InterfaceID。
站点-本地地址用于不需要全局前缀的站点内的寻址。
全局IPv6单播地址。
这些地址可用在Internet上并具有以下格式:
010(FP,3位)TLAID(13位)Reserved(8位)NLAID(24位)SLAID(16位)InterfaceID(64位)。
任播地址
一组接口的标识符(通常属于不同的节点)。
发送到此地址的数据包被传递给该地址标识的所有接口。
任播地址类型代替IPv4广播地址。
任播地址。
一组接口的标识符(通常属于不同的节点)。
发送到此地址的数据包被传递给该地址标识的唯一一个接口。
这是按路由标准标识的最近的接口。
任一广播地址取自单播地址空间,而且在语法上不能与其他地址区别开来。
寻址的接口依据其配置确定单播和任一广播地址之间的差别。
通常,节点始终具有链路-本地地址。
它可以具有站点-本地地址和一个或多个全局地址。
组播地址
IPv6中的组播在功能上与IPv4中的组播类似:
表现为一组接口对看到的流量都很感兴趣。
组播分组前8比特设置为FF。
接下来的4比特是地址生存期:
0是永久的,而1是临时的。
接下来的4比特说明了组播地址范围(分组可以达到多远):
1为节点,2为链路,5为站点,8为组织,而E是全局(整个因特网)。
IPv6路由
IPv6的优点之一就是提供灵活的路由机制。
由于分配IPv4网络ID所用的方式,要求位于Internet中枢上的路由器维护大型路由表。
这些路由器必须知道所有的路由,以便转发