本科毕业设计论文ipv6关键技术应用研究.docx
《本科毕业设计论文ipv6关键技术应用研究.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文ipv6关键技术应用研究.docx(32页珍藏版)》请在冰豆网上搜索。
本科毕业设计论文ipv6关键技术应用研究
防灾科技学院
毕业设计
题 目
IPv6关键技术应用研究
学生姓名
学 号
系别
专业
班 级
开题时间
答辩时间
指导教师
职称
IPv6关键技术应用研究
作者:
指导教师:
摘要随着网络厂商和开发商逐渐在不同的平台引入IPv6,IPv6和IPv4将长期共存于网络,IPv4向IPv6的过渡是一个较长的过程,如何在两者之间进行过渡是一个很重要的研究课题。
本文对IETF制定的有关IPv6的RFC进行了深入研究并同现有IPv4的标准进行对比,深入分析了两者之间的主要区别。
本文主要研究隧道、双协议栈、应用层代理网关(ALG)及NAT/PT等流行技术。
主要成果有:
构造了IPv6环境并开发出了基于IPv6的攻击集成平台;对整个的IPv6环境下的攻击进行尽可能全面地模拟;实现了网络探测收集和自身研究;构造了一个校园网的网络,研究了Ipv6在校园网中的应用。
关键词:
IPv6;IPv4;隧道;NAT/PT;IPSec
IPv6ApplicationResearchonkeyTechnologies
Author
Instructor
AbstractWithnetworkvendorsanddevelopersondifferentplatformsgraduallyintroduceIPv6,IPv6andIPv4willbestoredinthenetworkoflong-term.ThetransitionfromIPv4toIPv6isalongprocess,howthetransitionbetweenthetwoisaveryimportantresearchtopic.
ThispaperresearchedRFCaboutIPv6conductedbytheIETFandcomparisedwiththeexistingIPv4standard,analysisofthemaindifferencesbetweenthetwo.
Thispaperresearchedmainlypopulartechnologiesofthetunnel,dualstack,theapplicationlayerproxygateway(ALG)andNAT/PTetc.Themainresultsofthisstudyare:
IPv6environmentisconstructedanddevelopedattacksintegrationplatformbasedonIPv6.simulateattackoftheIPv6environmentwiththewholeaspossible.achieveanetworkprobingtocollectandownresearch.constructedacampusnetwork,studiedtheapplicationofipv6inthecampusnetwork.
Keywords:
Ipv6;Ipv4;tunnels;NAT/PT;IPSec
目录
1绪论1
1.1IPv6产生背景及应用1
1.2研究内容1
2IPv6简介3
2.1IPv6概述3
2.2IPv6报头分析3
2.3IPv6地址分析5
2.3ICMPv6分析6
2.4邻节点发现(ND)9
2.5IPv6路由9
2.6IPv6自动配置10
3IPv6过渡及相关技术研究13
3.1共存的机制13
3.2常见的IPv4/IPv6互通转换的技术标准15
4IPv6在校园网中的应用16
4.1IPv6相关配置16
4.2IPv6客户端的安装21
结论23
致谢24
参考文献25
1绪论
1.1IPv6产生背景及应用
IPv4[1](IPversion4)为传统的IP,定义的IP地址长度是32位,Internet上每个主机都分配了一个(或多个)32位的IP地址。
在DARPA时代,32位地址的互联网还是足够使用的,网络地址的分类(A、B、C、D、E类)和提取也提高了路由的效率。
但到了80年代初期,令人预想不到的是互联网用户会出现爆炸性的增长。
到今天Internet会发展到如此大的规模,有如此大的成长,是互联网的设计者们所预想不到的,更没有预测到今天Internet因为发展规模所陷入的困境。
有人在1987年做了一个统计,这个统计表明将来可能需要分配多达100,000个网络,然而,在1996年这个记录已经被打破。
自从1992年以来,特别是WWW服务普及之后,网络节点的数目开始以几何级数的增长。
在IPv4的地址空间出现危机时提出了IPNG[2](IPNextGeneration)问题,促使IPNG问题产生的直接原因是地址即将耗尽和路由表的过度膨胀。
IPv4协议是在十几年前设计的,当时的互联网远远没有达到今天的规模,网络连接的速度十分有限,网络应用的类型也比较单一,以文本数据的传输为主。
互联网商业化,特别是WWW发明以来,互联网在规模和应用上发生了革命性了变化。
声音、图像、甚至触觉都已经或者即将进入互联网络,在分组交换网络中传输这些业务希望具有实时特性,纯粹的“besteffort”的传输已经很难满足要求;其次,可连接规模的扩大,导致安全成为日益重要的问题,人们希望能够确认信息的确发给了正确的节点,同时还不希望在传输的中途被截留或者监听;再者,人们一直幻想“在任何时间(whenever)任何地点(wherever)同任何人(whomever)”进行通信,随着通信技术的迅速发展,移动性成为对未来互联网的重要期望。
因此IPNG的目标是设计一个全新的互连网络协议。
90年代初,人们开始讨论新的互联网络协议。
IETF的IPNG工作组在1994年9月提出了一个正式的草案“TheRecommendationfortheIPNextGenerationProtocol”,1995年底确定了IPNG的协议规范,分配了版本号6(版本号5已经被分配另一种草案),称为“IPversion6”(IPv6),同现在使用的版本4相区别;1998年又作了较大的改动。
1.2研究内容
本论文通过分析IPv6标准的体系结构,主要集中研究IPv6的特点、如何从IPv4向IPv6过渡[3]及IPv6网络安全,论文包括以下几个部分:
(1)IPv4平滑地过渡到IPv6。
互联网上成千上万的主机、路由器等网络设备都运行着IPv4协议。
这就决定了IPv4的网络向IPv6演进将是一个浩大而且烦杂的进程,IPv6和IPv4网络将会在很长一段时间内共同存在,如何从IPv4平滑地过渡到IPv6是一个非常复杂的问题。
基本的方式有以下几种:
隧道[4]、双协议栈[5]、传输层中继技术、应用层代理网关及NAT/PT[6]等。
我们需要进行深入研究并且提出一个完整方案来过渡;全面的分析和阐述IPv6协议,并仔细分析IPv4向IPv6过渡[7]的各种方案,分析各种方案的应用范围及优缺点。
并且在此基础之上,提出一种IPv4向IPv6过渡方法[8]。
对IPv6的组网和互连进行初步的实验;阐述了一个NAT/PT转换网关的设计和实现,并在IPv6组网的支持下对转换网[9]关连同双协议栈和隧道机制进行了测试,对结果进行分析。
(2)IPv6标准[11]的研究。
对于Ipv6标准的研究,主要是通过对IETF制定的有关IPv6的RFC进行深入研究,对IPv6标准的基本内容、IPv6格式及报头进行分析并同现有IPv4的标准进行对比,探讨二者的主要区别,为下一步理解和掌握过渡技术打基础。
(3)IPv6在WINDOWS环境下的实现。
如何在现有WINDOWS环境下安装IPv6协议,对于现有基于WINDOWS应用程序的升级,特别是网络类应用程序如何适应IPv6的变化对于系统开发人员要特别重要。
2IPv6简介
2.1IPv6概述
IPv6[12]是为了解决现行Internet出现的问题而诞生的。
地址枯竭和路由表急剧膨胀是现存的IPv4网络的两大危机。
这时候IPv6应运而生,相比IPv4,IPv6有很多优点:
(1)地址容量大大扩展,地址长度由32位变成128位,地址空间增大了2的96次方倍。
(2)报头格式大大简化,灵活的IP报文头部格式,使用一系列固定格式的扩展头部取代了IPV4中可变长度的选项字段,减小了设备对报头处理的开销,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度。
(3)提高了安全性。
保证了网络层端到端通信的完整性和机密性,身份认证和隐私权是IPV6的关键特性。
(5)支持更多的服务类型[13]。
(6)允许协议继续演变,增加新的功能,使之适应未来技术的发展。
2.2IPv6报头分析
2.2.1IPv6数据包结构
IPv6数据包由一个IP报头、多个扩展报头和一个上层协议数据单元组成。
IPv6报头
扩展报头
上层协议数据单元
IPv6包头去掉了IPv4中一切可选项,IPv6报头总是存在的,其长度固定为40字节,只有8个字段是必须存在的,因此虽然IPv6地址长度为IPv4的四倍,但IPv6包头长度仅为IPv4的二分之一。
其中的各个字段分别为:
Version:
为IP协议的版本号,长度为4位,字段值为6。
TrafficClass[14](通信类别):
字段长度为8位,指示IPv6数据流通信类别或优先级。
类似于IPv4的服务类型(TOS)字段。
FlowLabel(流标记):
长度为20位,其中包括包净荷的字节长度,即IPv6头后的包中包含的字节数,IPv6新增字段,标记需要IPv6路由器特殊处理的数据流。
IPv6报头中的流标记是为了用来标记那些需要IPv6路由器特殊处理的信息包的顺序,这些特殊处理包括非默认质量的服务或“实时”服务[15]。
在IPv6中,同一信源和信宿之间可以有多种不同的数据流,彼此之间以非“0”流标记区分。
如果不要求路由器做特殊处理,则该字段值置为“0”。
PayloadLength(负载长度):
有效负载长度使用16位无符号整数表示的。
负载长度包括扩展头和上层PDU,16位最多可表示65535字节负载长度,超过这一字节数的负载,该字段值置为“0“。
NextHeader(下一包头):
这是一个个8位的选择器,IPv6报头后面的报头的类型是用它来标识的,IPv6协议中下一个报头域的使用和它是一样的。
HopLimit(跳段数限制):
这个域是用8位无符号整数表示的,当被转发的信息包经过一个节点时,该值将减1,一直减到0,将会丢弃该包。
SourceAddress(源地址):
128位,发送方主机地址。
DestinationAddress(目的地址):
128位,在大多数情况下,目的地址即信宿地址。
但如果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口,信息包的预期接收者的地址。
2.2.2IPv6和IPv6报头对比分析
IPv6的新的报头结构比IPv4[16]简单得多,IPv6报头中省略了IPv4报头中许多不常用的域,将它放入了报头扩展或可选项中[17];对IPv6中的可选项下达了更严格的定义。
IPv4中包括2个地址空间、若干个选项、10个固定长度的域,IPv6中只有2个地址空间和6个域。
如表1.1、表1.2所示:
表1.1IPv4报头格式
0371531
版本号
报头长度
服务类型(TOS)
数据报长度
标识符
标志
分段偏移
生存时间
传输协议
报头校验和
源IP地址
目的IP地址
选项
填充
表2IPv6报头格式
0371531
版本号
优先级
流标签
净核长度
下一报头
HOP限制
源IP地址
目的IP地址
2.3IPv6地址分析
IPv4和IPv6最明显的变化就是网络地址的长度变长了。
RFC2373和RFC2374定义的IPv6地址,也介绍了不同类型的地址类型及结构。
IPv4地址长度为32位,IPv6地址为128位;IPv6地址的表达形式一般采用32个十六进制数。
2.3.1IPv6地址表示
RFC2373(IPv6寻址体系结构)中描述的IPv6寻址体系结构[18]。
IPv6地址长度4倍于IPv4地址,表达起来的复杂程度也是IPv4地址的4[19]倍。
IPv6地址的基本表达方式是X:
X:
X:
X:
X:
X:
X:
X,其中X是一个4位十六进制整数(16位)。
每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计128位(4X4X8=128)。
例如:
FE80:
0000:
0000:
0000:
AAAA:
0000:
00C2:
0002是一个合法的IPv6地址。
要是嫌这个地址看起来还是太长,这里还有种办法来缩减其长度,叫做零压缩法。
如果几个连续段位的值都是0,那么这些0就可以简单的以:
:
来表示,上述地址就可以写成FE80:
:
AAAA:
0000:
00C2:
0002。
这里要注意的是只能简化连续的段位的0,其前后的0都要保留,比如FE80最后的这个0,不能被简化。
还有这个只能用一次,在上例中的AAAA后面的0000就不能再次简化。
当然也可以在AAAA后面使用:
:
,这样的话前面的12个0就不能压缩了。
这个限制的目的是为了能准确还原被压缩的0。
不然就无法确定每个:
:
代表了多少个0。
2001:
0DB8:
0000:
0000:
0000:
0000:
1428:
0000
2001:
0DB8:
0000:
0000:
0000:
:
1428:
0000
2001:
0DB8:
0:
0:
0:
0:
1428:
0000
2001:
0DB8:
0:
:
0:
0:
1428:
0000
2001:
0DB8:
:
1428:
0000都是合法的地址,并且他们是等价的。
但
2001:
0DB8:
:
1428:
:
是非法的。
同时前导的零可以省略,因此:
2001:
0DB8:
02de:
:
0e13等价于2001:
DB8:
2de:
:
e13
一个IPv6地址可以将一个IPv4地址内嵌进去,并且写成IPv6形式和平常习惯的IPv4形式的混合体。
IPv6有两种内嵌IPv4的方式:
IPv4映像地址和IPv4兼容地址。
IPv4映像地址有如下格式:
:
:
ffff:
192.168.89.9这个地址仍然是一个IPv6地址,只是0000:
0000:
0000:
0000:
0000:
ffff:
c0a8:
5909的另外一种写法罢了。
IPv4映像地址布局如下:
|80bits|16bits|32bits|
0000....................0000|FFFF|IPv4address|
IPv4兼容地址写法如下:
:
:
192.168.89.9,如同IPv4映像地址,这个地址仍然是一个IPv6地址,只是0000:
0000:
0000:
0000:
0000:
0000:
c0a8:
5909的另外一种写法罢了。
IPv4兼容地址布局如下:
|80bits|16|32bits|
0000....................0000|0000|IPv4address|
IPv4兼容地址已经被舍弃了,所以今后的设备和程序中可能不会支持这种地址格式。
2.3.2IPv6的地址类型
所有类型的IPv6地址都被分配到接口[20],而不是节点。
特定的IPv6地址类型是由地址中的前导位定义的。
包含这些前导位的变长字段称作格式前缀(FP)。
IPv6单播地址被划分为两部分。
第一部分包含地址前缀,第二部分包含接口标识符。
表示IPv6地址/前缀组合的简明方式如下所示:
ipv6地址/前缀长度。
以下是具有64位前缀的地址示例。
2FEE:
EEEE:
0:
CD30:
0:
0:
0:
0/64.
此示例中的前缀是2FEE:
EEEE:
0:
CD30。
该地址还可以以压缩形式写入,如2FEE:
EEEE:
0:
CD30:
:
/64。
IPv6定义以下地址类型[21]:
单播:
一个单接口的标识符。
送往一个单播地址的包将被传送至该地址标识的接口上。
任意播:
一组接口(一般属于不同节点)的标识符。
送往一个泛播地址的包将被传送至该地址标识的接口之一(根据选路协议对于距离的计算方法选择“最近”的一个)。
组播:
一组接口(一般属于不同节点)的标识符。
送往一个组播地址的包将被传送至有该地址标识的所有接口上。
2.3ICMPv6分析
ICMPv6报文[22]主要分为两类:
(1)差错报文:
由目标节点或者中间路由器发送,用于报告在转发和传送IPv6数据包过程中出现的错误。
在所有的ICMPv6差错报文中,8位类型字段中的最高位都为0,。
因此,对于ICMPv6差错报文的类型字段,其有效值范围就是0~127。
ICMPv6的差错报文包括以下几种类型:
目标不可达(Destinationunreachable)、数据包过长(PacketTooBig)、超时(TimeExceeded)和参数问题(ParameterProblem)。
(2)信息报文:
提供诊断功能和附加的主机功能,比如多播侦听发现[23](MLD)和邻节点发现(ND)[24]。
在所有的ICMPv6报文中,8位类型字段中的最高位都为1。
因此其有效值的范围就是128~255。
根据RFC2463,ICMPv6的信息报文包括会送请求报文(Echorequest)和会送应答报文(EchoReply)。
ICMPv6的报头由前一个报头中的下一个报头字段的值58来标识。
ICMPv6报头中的字段包括:
类型。
表示ICMPv6报文的类型,此字段长度为8位。
在ICMPv6差错报文中,此字段的最高位为0,在ICMPv6信息报文中,此字段的最高位为1。
代码。
区分某一给定类型报文中的多个不同报文,此字段的长度为8.对某一类型的第一个(或者只有一个)报文,代码字段的值为0。
校验和。
存放ICMPv6报文的校验和[25]。
此字段的长度为16位。
当计算校验和时,IPv6的伪报头被加到ICMPv6报文之前。
报文主体。
包括ICMPv6报文专有的(message-specific)数据[26]。
2.3.1ICMPv6报头
IPv6的报头去掉了IPv4报头中不需要或者是很少使用的字段,加入了更好的支持实时通信流的字段。
结构如下:
版本。
字段长度为4位,固定值为6。
IP层协议的版本是通过链路层报头中的协议标识字段来标识的。
在EthernetⅡ[27]的以太网链路层封装中,使用一个16位的EtherType来标识以太网帧的有效载荷。
对于IPv4的数据包这个类型的值是0x0800,IPv6的报文则是0x86DD。
因此,对于以太网有效载荷的协议的确定,发生在数据包传递给IPv4或者IPv6协议层之前。
通信流类别。
通信流类别字段表示IPv6数据包的类或者优先级。
字段长度为8位,提供类似于IPv4的服务类型字段的功能。
流标签[28]。
流标签字段表示这个数据包属于源节点和目标节点之间的一个特殊序列,它需要由中间IPv6路由器进行特殊处理。
字段长度为20位。
对于默认的路由器处理,流标签的字段值为0。
在源节点和目标节点之间可能存在多条流,可以用非零的流标签来实现区分。
有效载荷长度。
有效载荷长度字段包括扩展报头和上层PDU的长度,16位。
最大可以表示65535字节的有效载荷。
如果有效载荷的长度超过65535,则置零,实际有效载荷的长度由逐跳选项扩展报头中超大有效载荷来表示。
下一个报头下一个报头字段表示第一个扩展报头(如果存在)的类型,或者上层PDU[29]中的协议(TCP、UDP、ICMPv6等)。
长度为8位,使用与IPv4协议中定义的相同值来表示上层协议。
跳限制。
跳限制表示的是IPv6的数据包在被丢弃前可以通过的最大链路数。
当一个路由器的跳限制字段的值减为0时,路由器向源节点发送ICMPv6超时-跳限制超时报文,并且丢弃该包。
源地址128位。
目的地址128位。
在大多数情况下,目的地址字段的值为最终目的地址。
但是如果存在路由扩展报头,则目的地址字段的值可能为下一个中间目标的地址。
2.3.2ICMPv6报文类型
差错报文
差错报文由目标节点或者中间路由器发送,用于报告在转发和传送IPv6数据包过程中出现的错误。
它包括以下几类:
目标不可达(Destinationunreachable)(类型1)
数据包过长(PacketTooBig)(类型2)
超时(TimeExceeded)(类型3)
参数问题(ParameterProblem)(类型4)
现实中我们为了节约网络带宽,ICMPv6[30]差错报文并不是和每个错误一一对应的关系,有可能很多个错误对应一个差错报文,而且ICMPv6差错报文在速率上有一定的限制,可以基于以下两种方案之一:
(1)计时器:
计时器就是规定一个或任何一个发送方每发送一个差错报文要间隔T毫秒。
在RFC2463中建议的T值为1000ms。
(2)带宽百分比:
整个链路带宽的百分之P为每个接口发送差错报文的速率,在RFC2463中建议P取值2%。
目标不可达。
当数据包无法被转发到目标节点或者上层协议时,路由器或者目标节点发送ICMPv6目标不可达差错报文。
报文结构为类型+代码+校验和+未用字段+数据包的被丢弃部分。
在目标不可达报文中,类型字段为1,代码字段取值范围是0~4。
紧随校验和字段之后的是一个32位的未使用字段和被丢弃数据包的前导部分。
被丢弃数据包的前导部分是经过处理的,以使包含ICMPv6报文的整个IPv6数据包的长度不大于1280字节(最小的IPv6MTU)。
如果报文中有IPv6扩展头,那么报文中的被丢弃数据包的字节数是可变的。
对于不含扩展报头的ICMPv6报文,被丢弃数据包的前导部分最多可以有1232个字节(1280减去40字节的IPv6报头和8字节的ICMPv6目标不可达报头)。
目标不可达报文中代码字段的值:
0没有能到达目标的路由
1与目标通信被管理策略禁止
2超出源站的地址范围
3地址不可达
4端口不可达2.数据包太长
当接收某包的路由器由于包长度大于将要转发到的链路的MTU,而无法对其进行转发时,将会产生包太长报文。
该ICMPv6错误报文中有一个字段指出导致该问题的链路的MTU值。
在路径MTU发现过程中这是一个有用的错误报文。
在此报文中,类型字段的值为2,代码字段的值为0。
2.4邻节点发现(ND)
ND取代了IPv4中的ARP,ICMP,还提供了额外的功能。
节点使用ND。
解析IPv6数据包发往的邻节点的链路层地址;确定邻节点链路层地址发生改变的时间;确定邻节点的可达性。
主机使用ND:
发现邻节点路由器;自动配置地址、地址前缀、路由及其他配置参数;路由器使用ND;通告自己的存在、主机配置参数、路由及链路前缀;提醒主机用于向特定目标转发数据包更好的下一跳地址;邻居请求和邻居公告。
2.5IPv6路由
IPv6的最大优点是路由机制相对比较灵活。
由于分配IPv4网络ID所用的方式,要求位于Internet中枢上的路由器维护大型路由表。
这些路由器必须知道所有的路