科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 6392 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2009-03-11
admin
admin
发短消息
相关词条
SIM卡
SIM卡
WEBSPHERE
WEBSPHERE
FTP
FTP
並行計算
並行計算
国外计算机科学状况
国外计算机科学状况
混龄教育
混龄教育
学科信息门户
学科信息门户
UBUNTU
UBUNTU
恩尼格玛
恩尼格玛
广播工程师
广播工程师
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

IPv6IPv6是"Internet Protocol Version 6"的缩写,也被称作下一代互联网 协议,它是由IETF设计的用来替代现行的IPv4协议的一种新的IP协议

现在的互联网大多数应用的是IPv4协议,IPv4协议已经使用了20多年,在这20多年的应用中,IPv4获得了巨大的成功,同时随着应用范围的扩大,它也面临着越来越不容忽视的危机,例如地址匮乏等等。

IPv6是为了解决IPv4所存在的一些问题和不足而提出的,同时它还在许多方面提出了改进,例如路由方面、自动配置方面。经过一个较长的IPv4和IPv6共存的时期,IPv6最终会完全取代IPv4在互连网上占据统治地位。对比IPv4,IPv6有如下的特点,这些特点也可以称作是IPv6的优点:简化的报头和灵活的扩展;层次化的地址结构;即插即用的连网方式;网络层的认证与加密;服务质量的满足;对移动通讯更好的支持。

目录

[显示全部]

IPv4的局限性及其缺点编辑本段回目录

在当前计算机工业飞速发展的步伐下,指出IPv4的局限性和缺点如同指出小汽车和卡车的内燃机是有缺陷的动力源一样。IP的确是一个非常强壮的协议,并已经证明了它能够连接小至几个节点,大至Internet上难以计数的主机。为交通工具选择动力源时,只要能像汽油机或柴油机一样提供动力,任何人都可以使用包括电能、太阳能或是风能作为上路的动力而不会影响别人,与此不同的是,IP的升级将对所有使用IP的人产生重大影响。

TCP/IP的工程师和设计人员早在80年代初期就意识到了升级的需求,因为当时已经发现IP地址空间随着Internet的发展只能支持很短的时间。

下面将介绍IP必须升级的原因以及可以同时改进之处,其中包括:
地址空间的局限性:IP地址空间的危机由来已久,这正是升级的主要动力
性能:尽管IP表现得不错,一些源自20年甚至更早以前的设计还能够进一步改进
安全性:安全性一直被认为是由网络层以上的层负责,但它现在已经成为IP的下一个版本可以发挥作用的地方
自动配置:对于IPv4节点的配置一直比较复杂,而网络管理员与用户则更喜欢“即插即用”,即:将计算机插在网络上然后就可以开始使用。IP主机移动性的增强也要求当主机在不同网络间移动和使用不同的网络接入点时能提供更好的配置支持。

IP地址空间危机

Internet经历了核爆炸般的发展,在过去的10到15年间,连接到Internet的网络数量每隔不到一年的时间就会增加一倍。但即便是这样的发展速度,也并不足以导致90年代后期IP地址的匮乏。

IP地址为32位长,经常以4个两位十六进制数字表示,也常常以4个0至255间的数字表示,数字间以小数点间隔。每个IP主机地址包括两部分:网络地址,用于指出该主机属于哪一个网络(属于同一个网络的主机使用同样的网络地址);主机地址,它唯一地定义了网络上的主机。这种安排一方面是IP协议的长处所在,另一方面也导致了地址危机的产生。

由于IPv4的地址空间可能具有多于40亿的地址,有人可能会认为Internet很容易容纳数以亿计的主机,至少几年内仍可以应付连续的倍增。但是,这只适用于IP地址以顺序化分布的情况,即第一台主机的地址为1,第二台主机的地址为2,依此类推。通过使用分级地址格式,即每台主机首先依据它所连接的网络进行标识,IP可支持简单的选路协议,主机只需要了解彼此的IP地址,就可以将数据从一台主机上转移至另一台主机。这种分级地址把地址分配的工作交给了每个网络的管理者,从而不再需要中央授权机构为Internet上的每台主机指派地址。到网络外的数据依据网络地址进行选路,在数据到达目的主机所连接的路由器之前无需要了解主机地址。

通过中央授权机构顺序化地为每台主机指派地址可能会使地址指派更加高效,但是这几乎使所有其他的网络功能不可行。例如,选路将实质上不可行,因为这将要求每个中间路由器去查询中央数据库以确定向何处转发包,而且每个路由器都需要最新的Internet拓扑图获知向何处转发包。每一次主机的地址变动都将导致中央数据库的更新,因为需在其中修改或删除该主机的表项。

IP地址被分为五类,只有三类用于IP网络,这三类地址一度被认为足以应付将来的网络互联。A类地址只有126个,用于那些最大的实体,如政府机关,因为它们连接着最多的主机:理论上最多可达一千六百万台。B类地址大约16000个,用于大型机构,如大学和大公司,理论上可支持超过65000台主机。C类网络超过两百万个,每个网络上的主机数量不超过255个,用于使用IP网络的其他机构。

更小的公司,某些只有几台主机,它们对于C类地址的使用效率很低;而大型机构在寻找B类地址时却发现越来越难;那些幸运地获得A类地址的少数公司很少能够高效地使用它们的一千六百万个主机地址。这导致了在过去几年中一直使用的网络地址指派规程陷入了困境,在试图更有效地分发地址空间的同时,还要注意保存现有的未指派地址。与此同时,一些解决地址危机的办法开始得以广泛使用,其中包括无类域间选路(CIDR)、网络地址翻译和使用非选路网络地址

IP性能议题

IP刚开始时,从各方面看就像一个实验品,其主要目的在于为在异种网络间进行数据的可靠、健壮和高效传输探索最佳机制,从而实现不同计算机的互操作。在很大程度上IP实现了此目标,但这并不意味着IP可以继续实现这些目标,也不意味着在对IP进行修改后而不能更好。在过去的几年中,很明显不仅IP有改进余地,同时新的开发也导致修改IP的呼声越来越高。在这次升级中考虑了最大传输单元最大包长度、IP头的设计、校验和的使用、IP选项的应用等议题。针对这些议题已经提出了专门建议并已引入IPv6中,这将有利于提高IPv6的性能并改进IPv6作为继续高速发展的网络的基础能力。

IP安全性议题

刚开始时连入Internet的都是侧重于研究与开发的机构,至少其中的研究人员互相间了解各自的名声,而他们与军队和政府的密切关系也保证了安全性不是一个主要问题。更重要的是,很久以来人们认为安全性议题在网络协议栈的低层并不重要,应用安全性的责任仍交给应用层。在许多情况下,IPv4设计为只具备最少的安全性选项,而IPv6的设计者们已在其中加入了安全性选项来强力支持IP的安全性。

IPv6安全性的增强无疑将改进虚拟专用网(VPN)的互操作性。IPv6的安全性特性中包括数据的加密与对于所传输的加密数据和未加密数据进行的身份验证。这些功能也许将被证实是有价值的,但其价值(和功效)将主要体现在政治上而不是技术上。

自动配置

在IP还很年轻时,大部分计算机被放在雕花地板的房间里且其价格超过了大多数人一年(甚至更长时间)的收入。这些系统无法搬到任何其他地方去:它们年复一年地放在一个房间或建筑物中,它们与Internet的连接基本上是静态的,极少改变。那时也没有ISP,它们通过电话公司提供的线路来链接至其他网络或Internet骨干网。

现在事情有了些变化。有数百个ISP可供选择,如果对于用户系统与网络间的选路和转发没有影响的话,理论上用户可以在不同的ISP间切换,从而更好地利用不同的速率和服务。同样,越来越多用户的工作方式要求网络服务具有更大的移动性。他们可能在家中使用一个或多个系统,可能在世界各地使用所携带的膝上型或笔记本电脑,也可能使用办公室中的任何一部电脑。更复杂的事情在于,这些人可能不只受雇于一个雇主,也可能为多个雇主工作。即便是同一个人使用同一部计算机,该计算机也会频繁地升级或售出。

随着工作和计算机对于移动性要求的与日俱增,IP也必须做出一些改变以适应这种需求。针对这个问题,IPv4已经有了一些改变,动态主机配置协议(DHCP)可以允许系统在启动甚至只在需要时才通过服务器获取其正确和完整的IP网络配置。目前,主机(无论是移动的还是固定的)仍然依赖于到网络的单点连接。当用户携带笔记本电脑出差时,只需给其ISP打一个电话就可以恢复连接能力。如果该ISP不能提供区域外的免费长途号码,就需要打长途电话来拨入该ISP。

但是,还可以进行更多的改进,IPv6应该能够旁路到单一ISP的静态连接,让用户系统能够检测到最近的网络网关并通过它进行连接。

紧迫感

对IP地址体系结构不足的官方认可可以参见1991年发布的RFC1287,其中定义了IP在成长过程中遇到的问题。至少从1992年就已开始了网络地址的定量分配,那时候对新的B类地址提出了要求,而不足以使用B类地址的中型机构开始接受成块的C类地址(参见RFC1366和RFC1466)。

与最后一分钟(或更晚)才开始的为2000年问题所做的努力不同,IPv6的升级工作体现了多年来许多专职工程师和计算机科学家的努力。他们已完成的工作使Internet和其他IP网络继续高效地发挥作用并保持多年的增长。

IPv6变化概述编辑本段回目录

IPv6中的变化体现在以下五个重要方面:
?  扩展地址
?  简化头格式
?  增强对于扩展和选项的支持
?  流标记
?  身份验证和保密

对于IP的这些改变对IAB于1991年制定的IPv6发展方向中的绝大部分都有所改进。IPv6的扩展地址意味着IP可以继续增长而无需考虑资源的匮乏,该地址结构对于提高路由效率有所帮助;对于包头的简化减少了路由器上所需的处理过程,从而提高了选路效率;同时,改进对头扩展和选项的支持意味着可以在几乎不影响普通数据包和特殊包选路的前提下适应更多的特殊需求;流标记办法为更加高效地处理包流提供了一种机制,这种办法对于实时应用尤其有用;身份验证和保密方面的改进使得IPv6更加适用于那些要求对敏感信息和资源特别对待的商业应用。

1. 扩展地址

IPv6的地址结构中除了把32位地址空间扩展到了128位外,还对IP主机可能获得的不同类型地址作了一些调整。IPv6中取消了广播地址而代之以任意点播地址。IPv4中用于指定一个网络接口的单播地址和用于指定由一个或多个主机侦听的组播地址基本不变。

2. 简化的包头

IPv6中包括总长为40字节的8个字段(其中两个是源地址和目的地址)。它与IPv4包头的不同在于,IPv4中包含至少12个不同字段,且长度在没有选项时为20字节,但在包含选项时可达60字节。IPv6使用了固定格式的包头并减少了需要检查和处理的字段的数量,这将使得选路的效率更高。包头的简化使得IP的某些工作方式发生了变化。一方面,所有包头长度统一,因此不再需要包头长度字段。此外,通过修改包分段的规则可以在包头中去掉一些字段。IPv6中的分段只能由源节点进行:该包所经过的中间路由器不能再进行任何分段。最后,去掉IP头校验和不会影响可靠性,这主要是因为头校验和将由更高层协议(UDPTCP)负责。

3. 对扩展和选项支持的改进

在IPv4中可以在IP头的尾部加入选项,与此不同,IPv6中把选项加在单独的扩展头中。通过这种方法,选项头只有在必要的时候才需要检查和处理。为便于说明,考虑以下两种不同类型的扩展部分:分段头选路头。IPv6中的分段只发生在源节点上,因此需要考虑分段扩展头的节点只有源节点和目的节点。源节点负责分段并创建扩展头,该扩展头将放在IPv6头和下一个高层协议头之间。目的节点接收该包并使用扩展头进行重装。所有中间节点都可以安全地忽略该分段扩展头,这样就提高了包选路的效率。另一种选择方案中,逐跳(hop-by-hop)选项扩展头要求包的路径上的每一个节点都处理该头字段。这种情况下,每个路由器必须在处理IPv6包头的同时也处理逐跳选项。第一个逐跳选项被定义用于超长IP包(巨型净荷)。包含巨型净荷的包需要受到特别对待,因为并不是所有链路都有能力处理那样长的传输单元,且路由器希望尽量避免把它们发送到不能处理的网络上。因此,这就需要在包经过的每个节点上都对选项进行检查。

4. 流

在IPv4中,对所有包大致同等对待,这意味着每个包都是由中间路由器按照自己的方式来处理的。路由器并不跟踪任意两台主机间发送的包,因此不能“记住”如何对将来的包进行处理。IPv6实现了流概念,其定义如RFC1883中所述:流指的是从一个特定源发向一个特定(单播或者是组播)目的地的包序列,源点希望中间路由器对这些包进行特殊处理。路由器需要对流进行跟踪并保持一定的信息,这些信息在流中的每个包中都是不变的。这种方法使路由器可以对流中的包进行高效处理。对流中的包的处理可以与其他包不同,但无论如何,对于它们的处理更快,因为路由器无需对每个包头重新处理。

路由器需要对流进行跟踪并保持一定的信息,这些信息在流中的每个包中都是不变的。这种方法使路由器可以对流中的包进行高效处理。对流中的包的处理可以与其他包不同,但无论如何,对于它们的处理更快,因为路由器无需对每个包头重新处理。

5. 身份验证和保密

RFC1825(IP的安全性体系结构)描述了IP的安全性体系结构,包括IPv4和IPv6。它发表于在1995年8月,目前正在进行修改和更新。1998年3月发表了一个更新版Internet草案。IP安全性的基本结构仍然很坚固,且已经进行了一些显著的改变和补充。IPv6使用了两种安全性扩展:IP身份验证头(AH)首先由RFC1826(IP身份验证头)描述,而IP封装安全性净荷(ESP)首先在RFC1827(IP封装安全性净荷(ESP))中描述。

报文摘要功能通过对包的安全可靠性的检查和计算来提供身份验证功能。发送方计算报文摘要并把结果插入到身份验证头中,接收方根据收到的报文摘要重新进行计算,并把计算结果与AH头中的数值进行比较。如果两个数值相等,接收方可以确认数据在传输过程中没有被改变;如果不相等,接受方可以推测出数据或者是在传输过程中遭到了破坏,或者是被某些人进行了故意的修改。

封装安全性提供机制,可以用来加密IP包的净荷,或者在加密整个IP包后以隧道方式在Internet上传输。其中的区别在于,如果只对包的净荷进行加密的话,包中的其他部分(包头)将公开传输。这意味着破译者可以由此确定发送主机和接收主机以及其他与该包相关的信息。

使用ESP对IP进行隧道传输意味着对整个IP包进行加密,并由作为安全性网关操作的系统将其封装在另一IP包中。通过这种方法,被加密的IP包中的所有细节均被隐藏起来。这种技术是创建虚拟专用网(VPN)的基础,它允许各机构使用Internet作为其专用骨干网络来共享敏感信息。

IPV6的包头结构编辑本段回目录

在IPv4中,所有包头以32位为单位,即基本的长度单位是4个字节。在IPv6中,包头以64位为单位,且包头的总长度是40字节。IPv6协议为对其包头定义了以下字段:

?  版本:长度为4位,对于IPv6,该字段必须为6。

?  类别:长度为8位,指明为该包提供了某种“区分服务”。RFC1883中最初定义该字段只有4位,并命名为“优先级字段”,后来该字段的名字改为“类别”,在最新的 IPv6 Internet 草案中,称之为“业务流类别”。该字段的定义独立于IPv6,目前尚未在任何RFC中定义。该字段的默认值是全0。

?  流标签:长度为20位,用于标识属于同一业务流的包。一个节点可以同时作为多个业务流的发送源。流标签和源节点地址唯一标识了一个业务流。在RFC1883中这个字段最初被设计为24位,但当类别字段的长度增加到8位后,流标签字段被迫减小长度来作补偿。

?  净荷长度:长度为16位,其中包括包净荷的字节长度,即IPv6头后的包中包含的字节数。这意味着在计算净荷长度时包含了IPv6扩展头的长度。

?  下一个头:这个字段指出了IPv6头后所跟的头字段中的协议类型。与IPv6协议字段类似,下一个头字段可以用来指出高层是TCP还是UDP,但它也可以用来指明IPv6扩展头的存在。

?  跳极限:长度为8位。每当一个节点对包进行一次转发之后,这个字段就会被减1。如果该字段达到0,这个包就将被丢弃。IPv4中有一个具有类似功能的生存期字段,但与IPv4不同,人们不愿意在IPv6中由协议定义一个关于包生存时间的上限。这意味着对过期包进行超时判断的功能可以由高层协议完成。

?  源地址:长度为128位,指出了IPv6包的发送方地址。

?  目的地址:长度为128位,指出了IPv6包的接收方地址。这个地址可以是一个单播、组播或任意点播地址。如果使用了选路扩展头(其中定义了一个包必须经过的特殊路由),其目的地址可以是其中某一个中间节点的地址而不必是最终地址。

下图中显示了IPv6头的格式

IPv6

 

 

IPv4与IPv6的比较编辑本段回目录

IPV4字段中有一些与IPv6头类似,但其中真正完全保持不变的只有第一个字段,即版本字段,因为在同一条线路上传输时,必须保证IPv4和IPv6的兼容性。下一个字段,即包头长度,则与IPv6无关,因为IPv6头是固定长度,IPv4中需要这个字段是因为它的包头可能在20字节到40字节间变化。

服务类型字段与IPv6的流类别字段相似,但TOS的位置比该字段要靠后一些,而且在具体实现中也没有广泛应用。下一个字段是数据报长度,后来发展成了IPv6中的净荷长度。IPv6的净荷长度中包含了扩展头,而IPv4数据报长度字段中则指明包含包头在内的整个数据报的长度。这样一来,在IPv4中,路由器可以通过将数据报长度减去包头长度来计算包的净荷长度,而在IPv6中则无须这种计算。

后面的三个字段是数据报ID分段标志分段偏移值,它们都用于IPv4数据报的分段。由于IPv6中由源结点取代中间路由器来进行分段(后面将有更多关于分段的内容),这些字段在IPv6中变得不重要,并被IPv6从包头中去掉了。

而生存期字段,正如上面所述,变成了跳极限字段。生存期字段最初表示的是一个包穿越Internet时以秒为单位的存在时间的上限。如果生存期计数值变为0,该包将被丢弃。其原因是包可能会存在于循环路由中,如果没有方法让它消失,它可能会一直选路(或者直到网络崩溃为止)。在最初的规范中要求路由器根据转发包的时间与收到包的时间的差值(以秒为单位)来减小生存期的值。在实际情况中,大部分路由器都设计为每次对该值减1,而不是计算路由器上真正的处理时间。

协议字段,如前所述,指出在IPv4包中封装的高层协议类型。各协议对应的数值在最新版本的RFC(现在是RFC1700)中可以查到。这个字段后来发展成为IPv6中的下一个头字段,其中定义了下一个头是一个扩展头字段还是另一层的协议头。

由于如TCP和UDP等高层协议均计算头的校验和,IPv4头校验显得有些多余,因此这个字段在IPv6中已消失。对于那些真的需要对内容进行身份验证的应用,IPv6中提供了身份验证头。
IPv6中仍然保留了32位的IPv4源地址和目的地址,但将它们扩展为128位。而IP选项字段则已经彻底消失,取而代之的是IPv6扩展头。

IPv6的分段编辑本段回目录

 IPv6的分段只能由源节点和目的节点进行,这样就简化了包头并减少了用于选路的开销。逐跳分段被认为是一种有害的方法。首先,它在端到端的分段中将产生更多的分段。此外在传输中,一个分段的丢失将导致所有分段重传。IPv6的确可以通过其扩展头来支持分段,但是如下所述,了解IPv4分段如何工作将有助于了解IPv6中为什么要进行改变。

在IPv4中,当一个没有分段的包由于太长而无法沿着发送源到目的地的网络链路进行传输时,就需要进行包的分段。举例来说,一个源节点可以创建一个长度为1500字节的包,并把它向Internet上的某个远端目的地发送。这个包通过源节点的本地以太网到达该节点的默认路由器。然后路由器通过其链路把数据发到Internet上,这条链路可能是到一个ISP的点到点连接。在Internet中的某处或离目的节点较近的某处,可能有条网络链路无法处理这样一大块的数据。在这种情况下,使用该网络链路的路由器将不得不把1500字节的数据报分割成许多不超过下一个网络的最大传输单元(MTU)的分段。因此,如果假设下一个链路可以处理的包长度不能超过1280字节的话,路由器将把最初的一个包分割为两个。第一个包的长度为1260字节,留下的20字节用于IPv4头。第二段的长度就是剩余数据的长度,240字节,另外再用20字节作为另一个IPv4头。

IPv4中的分段由包沿途的中间路由器根据需要进行。进行分段的路由器根据需要修改包头并在其中包含进最初的包的数据报标识,同时还将正确地设置分段标志和分段偏移值。当目的节点收到由此产生的分段包之后,该系统必须根据每个分段包的IPv4头后的分段数据重组最初的包。

在使用了分段之后,不论中间的网络是什么类型,不同类型网络上的节点都可以互操作,源节点无需了解任何有关目的节点网络的信息,同时也无需了解它们之间的网络信息。这一直被认为是一个不错的特性,由于不需要节点或路由器存储信息或记录整个Internet的结构,从而Internet可以获得很好的扩展性。但另一方面,它也为路由器带来了性能方面的问题,对IP包进行分段消耗了沿途路由器和目的地的处理能力和时间。了解IP数据报标识、计算分段偏移值、真正把数据分段以及在目的地进行重装都会带来额外的开销。

问题在于对于任何一个指定的路由器,虽然源节点能够了解链路的MTU是多大,但却没有办法事先知道整个路径的MTU。路径MTU是源节点和目的节点之间在不分段时可以沿着该路由穿越任何网络的最大包长。

然而,目前有两种方法可以减少或消除对于分段的需求。第一种方法可用在IPv4中,它使用一种叫做“路径MTU发现”的方法。通过这种方法,路由器可以向目的地发送一个包来报告该路由器上链路的MTU值。如果包到达了一条必须对其进行分段的链路,负责分段的路由器将使用ICMP回送一个报文来指出分段路由器上链路的MTU值。这种过程可以重复进行直到路由器确定路径MTU为止。

另一种减少分段需求的方法是要求所有支持IP的链路必须能够处理一些合理的最小长度的包。换句话说,如果一个链路的MTU超过20字节,那么所有的节点都必须准备产生可观数量的分段包。另一方面,如果能够提出所有网络链路都可以适应的某个合理的长度,并把它设置为允许包长度的绝对最小值,那么就可以消灭分段。

IPv6中实际上同时使用了上面两种方法。在最初的RFC中,IPv6规定每个链路支持的MTU最小为576字节。那么这些包的净荷长度将是536字节,另外40字节用于IPv6头。由于RFC1883发表于1995年,后来产生了很多关于更大的MTU的争论。在Huitema提出的报告(参见《IPv6:新的IP》第2版,Prentice-Hall)中,建议值为1997,SteveDeering则正在促使将MTU值改为1500字节。在最新的于1997年11月发表的Internet草案中,MTU值被设为1280字节。很明显,关注的焦点在于:倡导较短MTU的人希望那些不能支持较长MTU的网络不会被完全丢弃,而倡导较长MTU的人不希望为照顾小部分接近于废弃的网络而使得整个Internet的性能下降。

为了对较短的MTU进行一些弥补,IPv6标准中强烈推荐所有IPv6节点都支持路径MTU发现。路径MTU发现最早出现在RFC1191中,其中使用了分段标志中的“不能分段”来要求中间路由器在发现包太长时返回一个ICMP出错报文。

路径MTU发现的IPv6版本在RFC1981(IPv6的路径MTU发现)中描述。这是对原有的RFC1191的升级,但其中加入了一些改变使之可以工作在IPv6中。其中最重要的是,由于IPv6头中不支持分段,因此也就没有“不能分段”位。正在执行路径MTU发现的节点只是简单地在自己的网络链路上向目的地发送允许的最长包。如果一条中间链路无法处理该长度的包,尝试转发路径MTU发现包的路由器将向源节点回送一个ICMPv6出错报文。然后源节点将发送另一个较小的包。这个过程将一直重复,直到不再收到ICMPv6出错报文为止,然后源节点就可以使用最新的MTU作为路径MTU。

这里需要注意,有一些实例并没有实现路径MTU发现。例如,使用最小IPv6实现来进行远程网络启动的终端只是简单地使用576字节的路径MTU。从源节点到目的节点的IPv6分段,作为一个扩展头来实现。

IPv6寻址及地址类型编辑本段回目录

首先介绍一些与使用I P寻址来标识和定位I P网络上的节点相关的问题。多年以来,I P地址被认为是可以在I P网络上最终唯一并持久的节点标识符。近年中,尤其是随着下一代I P技术的发展,对于I P地址的这种观点正在改变。如果仍像过去所使用的方法来分配网络和节点地址,那将是一种不必要和低效的办法。

在介绍了RFC2373(IPv6寻址体系结构)中描述的I P寻址体系结构之后,将首先介绍一些与I P寻址相关的议题。然后将介绍几种可能的地址分配方法。本文将I P v 6寻址分成了以下几个部分:1 2 8位地址的结构和命名及I P v 6地址的不同类型(单播、组播和泛播)。

I P v 6的设计者们可以只是简单地在I P v 4寻址体系结构中扩大地址空间。但是这样一来将使我们丧失一个改进I P的巨大机会。对于整个寻址体系结构的修改所带来的巨大机会,不仅体现在提高地址分配的效率上,同时也体现在提高I P选路性能上。本文将介绍这些改进。

地址

I P v 4与I P v 6地址之间最明显的差别在于长度:I P v 4地址长度为3 2位,而I P v 6地址长度为1 2 8位。RFC2373 中不仅解释了这些地址的表现方式,同时还介绍了不同的地址类型及其结构。I P v 4地址可以被分为2至3个不同部分(网络标识符、节点标识符,有时还有子网标识符), I P v 6地址中拥有更大的地址空间,可以支持更多的字段。

I P v 6地址有三类、单播、组播和泛播地址。下一节将对此作更详细的介绍。单播和组播地址与I P v 4的地址非常类似;但I P v 6中不再支持I P v 4中的广播地址,而增加了一个泛播地址。本节介绍的是I P v 6的寻址模型、地址类型、地址表达方式以及地址中的特例。

地址表达方式

I P v 4地址一般以4部分间点分的方法来表示,即4个数字用点分隔。例如,下面是一些合法的I P v 4地址,都用十进制整数表示:1 0 . 5 . 3 . 1 1 2 7 . 0 . 0 . 1 2 0 1 . 1 9 9 . 2 4 4 . 1 0 1 I P v 4地址也时常以一组4个2位的十六进制整数或4个8位的二进制整数表示,但后一种情况较少见。I P v 6地址长度4倍于I P v 4地址,表达起来的复杂程度也是I P v 4地址的4倍。I P v 6地址的基本表达方式是X : X : X : X : X : X : X : X,其中X是一个4位十六进制整数( 1 6位)。每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计1 2 8位( 4×4×8 = 1 2 8 )。例如,下面是一些合法的I P v 6地址:

C D C D : 9 1 0 A : 2 2 2 2 : 5 4 9 8 : 8 4 7 5 : 1111 : 3 9 0 0 : 2 0 2 0 1 0 3 0 : 0 : 0 : 0 : C 9 B 4 : F F 1 2 : 4 8 A A : 1 A 2 B 2 0 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 请注意这些整数是十六进制整数,其中A到F表示的是1 0到1 5。地址中的每个整数都必须表示出来,但起始的0可以不必表示。这是一种比较标准的I P v 6地址表达方式,此外还有另外两种更加清楚和易于使用的方式。某些I P v 6地址中可能包含一长串的0 (就像上面的第二和第三个例子一样)。当出现这种情况时,标准中允许用“空隙”来表示这一长串的0。换句话说,地址2 0 0 0 : 0 : 0 : 0 : 0 : 0 : 0 : 1 可以被表示为:2 0 0 0 : : 1 这两个冒号表示该地址可以扩展到一个完整的1 2 8位地址。在这种方法中,只有当1 6位组全部为0时才会被两个冒号取代,且两个冒号在地址中只能出现一次。

在I P v 4和I P v 6的混合环境中可能有第三种方法。I P v 6地址中的最低3 2位可以用于表示I P v 4 地址,该地址可以按照一种混合方式表达,即X : X : X : X : X : X : d . d . d . d,其中X表示一个1 6位整数,而d表示一个8位十进制整数。例如,地址0 : 0 : 0 : 0 : 0 : 0 : 1 0 . 0 . 0 . 1 就是一个合法的I P v 4地址。把两种可能的表达方式组合在一起,该地址也可以表示为:: : 1 0 . 0 . 0 . 1 由于I P v 6地址被分成两个部分—子网前缀和接口标识符,因此人们期待一个I P节点地址可以按照类似C I D R地址的方式被表示为一个携带额外数值的地址,其中指出了地址中有多少位是掩码。即,I P v 6节点地址中指出了前缀长度,该长度与I P v 6地址间以斜杠区分,例如:1 0 3 0 : 0 : 0 : 0 : C 9 B 4 : F F 1 2 : 4 8 A A : 1 A 2 B / 6 0 这个地址中用于选路的前缀长度为6 0位。

寻址模型

I P v 6寻址模型与I P v 4很相似。每个单播地址标识一个单独的网络接口。I P地址被指定给网络接口而不是节点,因此一个拥有多个网络接口的节点可以具备多个I P v 6地址,其中任何一个I P v 6地址都可以代表该节点。尽管一个网络接口能与多个单播地址相关联,但一个单播地址只能与一个网络接口相关联。每个网络接口必须至少具备一个单播地址。

这里有一个非常重要的声明和一个非常重要的例外。这个声明与点到点链路的使用有关。在I P v 4 中,所有的网络接口,其中包括连接一个节点与路由器的点到点链路(用许多拨号I n t e r n e t连接中),都需要一个专用的I P地址。随着许多机构开始使用点到点链路来连接其分支机构,每条链路均需要其自己的子网,这样一来消耗了许多地址空间。在I P v 6中,如果点到点链路的任何一个端点都不需要从非邻居节点接受和发送数据的话,它们就可以不需要特殊的地址。即,如果两个节点主要是传递业务流,则它们并不需要具备I P v 6地址。

为每个网络接口分配一个全球唯一的单播地址的要求阻碍了I P v 4地址的扩展。一个提供通用服务的服务器在高需求量的情况下可能会崩溃。因此,I P v 6地址模型中又提出了一个重要的例外:如果硬件有能力在多个网络接口上正确地共享其网络负载的话,那么多个网络接口可以共享一个I P v 6地址。这使得从服务器扩展至负载分担的服务器集群成为可能,而不再需要在服务器的需求量上升时必须进行硬件升级。

地址空间

RFC2373中包含了一个I P v 6地址空间“图”,其中显示了地址空间是如何进行分配的,地址分配的不同类型,前缀(地址分配中前面的位值)和作为整个地址空间的一部分的地址分配的长度。下图显示了I P v 6地址空间的分配。

IPv6

 

 

 

 

 

 

 

 

 

 

在I P v 6地址分配中需要注意几点。首先,在RFC1884中,地址空间的四分之一被用于两类不同地址:八分之一是基于供应商的单播地址,而另八分之一是基于地理位置的单播地址。人们希望地址的分配可以根据网络服务供应商或者用户所在网络的物理位置进行。基于供应商的集聚,正如它最初的名字一样,要求网络从提供I n t e r n e t接入的供应商那里得到可集聚的I P地址。但是,这种方法对于具有距离较远的分支机构的大型机构来说并不是一种完美的解决办法,因为其中许多分支机构可能会使用不同的供应商。基于供应商的集聚将为这些大单位带来更多的I P地址管理问题。

Steve Deering提议把基于地理位置的地址分配方法作为S I P ( S I P P的前身,在第4章中有介绍)中的一种办法。这些地址与基于供应商的地址不同,以一种非常类似I P v 4的方法分配地址。这些地址与地理位置有关,且供应商将不得不保留额外的路由器来支持I P v 6地址空间中可集聚部分外的这些网络。

I S P实际上并不赞同这个解决方案,因为管理基于地理位置的寻址将大大增加复杂性(和花费)。另一方面,难以对基于供应商的地址进行配置和重配置也引起许多对基于供应商的分配方案的反对。如果没有广泛使用基于I P v 4自动配置方案(如D H C P ),那么所有机构的网络将会存在巨大的管理问题。尽管I P v 6对于自动配置功能有着更好的支持,但并没有将地理位置的分配方法最终融合进去。

注意,绝大部分的地址空间并没有分配,地址分配的第一部分被保留了下来。

地址类型

如上所述,I P地址有三种类型:单播、组播和任意点播。广播地址已不再有效。R F C 2 3 7 3中定义了三种I P v 6地址类型:
? 单播:一个单接口的标识符。送往一个单播地址的包将被传送至该地址标识的接口上。

广播路在何方

广播地址从一开始就为I P v 4网络带来了问题。广播被用来携带去向多个节点的信息或被那些不知信息来自何方的节点用来发出请求。但是,广播可能将为网络性能设置障碍。同一网络链路上的大量广播意味着该链路上的所有每个节点都必须处理所有广播,其中绝大部分节点最终都将忽略该广播,因为该信息与自己无关。把广播在子网之间进行转发将导致更多的问题,因为路由器上将充斥着这种业务流。

I P v 6对此的解决办法是使用一个“所有节点”组播地址来替代那些必须使用广播的情况,同时,对那些原来使用了广播地址的场合,则使用一些更加有限的组播地址。通过这种方法,对于原来由广播携带的业务流感兴趣的节点可以加入一个组播地址,而其他对该信息不感兴趣的节点则可以忽略发往该地址的包。广播从来不能解决信息穿越I n t e r n e t的问题,如选路信息,而组播则提供了一个更加可行的方法。

单播

单播地址标识了一个单独的I P v 6接口。一个节点可以具有多个I P v 6网络接口。每个接口必须具有一个与之相关的单播地址。单播地址可被认为包含了一段信息,这段信息被包含在1 2 8位字段中:该地址可以完整地定义一个特定的接口。此外,地址中数据可以被解释为多个小段的信息。但无论如何,当所有的信息被放在一起后,将构成标识一个节点接口的1 2 8位地址。

I P v 6地址本身可以为节点提供关于其结构的或多或少的信息,这主要根据是由谁来观察这个地址以及观察什么。例如,节点可能只需简单地了解整个1 2 8位地址是一个全球唯一的标识符,而无须了解节点在网络中是否存在。另一方面,路由器可以通过该地址来决定,地址中的一部分标识了一个特定网络或子网上的一个唯一节点。

例如,一个I P v 6单播地址可看成是一个两字段实体,其中一个字段用来标识网络,而另一个字段则用来标识该网络上节点的接口。在后面讨论特定的单播地址类型时还会看到,网络标识符可被划分为几部分,分别标识不同的网络部分。I P v 6单播地址功能与I P v 4地址一样受制于C I D R,即,在一个特定边界上将地址分为两部分。地址的高位部分包含选路用的前缀,而地址的低位部分包含网络接口标识符。

最简单的方法是把I P v 6地址作为不加区分的一块1 2 8位的数据,而从格式化的观点来看,可把它分为两段,即接口标识符和子网前缀。RFC2373中表示的格式见上图。接口标识符的长度取决于子网前缀的长度。两者的长度是可以变化的,这取决于谁对它进行解释。对于非常靠近寻址的节点接口(远离骨干网)的路由器可用相对较少的位数来标识接口。而离骨干网近的路由器,只需用少量地址位来指定子网前缀,这样,地址的大部分将用来标识接口标识符。下面要讨论的是可集聚的单播地址,它的结构更为复杂。

RFC2373中定义的IPv6单播地址的简单格式
RFC2373中定义的IPv6单播地址的简单格式

 

 

 

I P v 6单播地址包括下面几种类型:
? 可集聚全球地址。
? 未指定地址或全0地址。
? 回返地址。
? 嵌有I P v 4地址的I P v 6地址。
? 基于供应商和基于地理位置的供应商地址。
? OSI 网络服务访问点( N S A P )地址。
? 网络互联包交换( I P X )地址。

单播地址格式

RFC1884给出了几种通用的不同类型的I P v 6地址。给N S A P和I P X分配的地址、基于O S I 网络和N e t Wa r e地址都无缝地包含在I P v 6体系结构中。分别占八分之一的地址空间的基于供应商和基于地理位置分配的地址组成了一批可分配的地址。链路本地和站点本地地址提供了1 0 型网络地址转换的网络统一不变的版本。

然而,RFC2373改变和简化了I P v 6的地址分配。其中之一是取消了基于地理位置的地址分配,基于供应商的单播地址改变成可集聚全球单播地址。从名字的改变上就可看出,对于基于供应商的地址,允许前面定义的集聚以及基于交换局的新型集聚。这也反映了一种更平衡的地址分类。N S A P和I P X地址空间仍然保留着,且八分之一的地址分配给可集聚地址。另外,除了组播地址和某类保留地址外,I P v 6地址空间的其余部分都是未分配的地址,为将来的发展预留了足够的空间。

1. 接口标识符

在I P v 6寻址体系结构中,任何I P v 6单播地址都需要一个接口标识符。接口标识符非常像48 位的介质访问控制( M A C )地址,M A C地址由硬件编码在网络接口卡中,由厂商烧入网卡中,而且地址具有全球唯一性,不会有两个网卡具有相同的M A C地址。这些地址能用来唯一标识网络链路层上的接口。

I P v 6主机地址的接口标识符基于IEEE EUI-64格式。该格式基于已存在的M A C地址来创建6 4位接口标识符,这样的标识符在本地和全球范围是唯一的。RFC2373 包括的附录解释了如何创建接口标识符。有关IEEE EUI-64 标准更多的信息,请访问I E E E标准网点:h t t p : / / s t a n d a r d s . i e e e . o rg / d b / o u i / t u t o r i a l s / E U I 6 4 . h t m l。
这些6 4位接口标识符能在全球范围内逐个编址,并唯一地标识每个网络接口。这意味着理论上可多达26 4个不同的物理接口,大约有1 . 8×1 01 9个不同的地址,而且这也只用了I P v 6地址空间的一半。这至少在可预见的未来是足够的。

2. 可集聚全球单播地址

本文已经提到了基于供应商的集聚,它的概念还会在第8章中再次提到。可集聚全球单播地址是另一种类型的集聚,它是独立于I S P的。基于供应商的可集聚地址必须随着供应商的改变而改变,而基于交换局的地址则由I P v 6交换实体直接定位。由交换局提供地址块,而用户和供应商为网络接入签订合同。这样的网络接入或者是直接由供应商提供,或者通过交换局间接提供,但选路通过交换局。这就使得用户改换供应商时,无需重新编址。同时也允许用户使用多个I S P来处理单块网络地址。

可集聚全球单播地址包括地址格式的起始3位为0 0 1的所有地址(此格式可在将来用于当前尚未分配的其他单播前缀)。地址格式化为下图所示的字段。

RFC2373中定义的IPv6全球可集聚单播地址格式
RFC2373中定义的IPv6全球可集聚单播地址格式

 

 

 

图中包括下列字段:

? F P 字段:I P v 6地址中的格式前缀,3位长,用来标识该地址在I P v 6地址空间中属于哪类地址。目前该字段为“0 0 1”,标识这是可集聚全球单播地址。
? TLA ID字段:顶级集聚标识符,包含最高级地址选路信息。这指的是网络互连中最大的选路信息。目前,该字段为1 3位,可得到最大8 1 9 2个不同的顶级路由。
? R E S 字段:该字段为8位,保留为将来用。最终可能会用于扩展顶级或下一级集聚标识符字段。
? NLA ID字段:下一级集聚标识符,2 4位长。该标识符被一些机构用于控制顶级集聚以安排地址空间。换句话说,这些机构(可能包括大型I S P和其他提供公网接入的机构)能按照他们自己的寻址分级结构来将此2 4位字段切开用。这样,一个实体可以用2位分割成4 个实体内部的顶级路由,其余的2 2位地址空间分配给其他实体(如规模较小的本地I S P )。这些实体如果得到足够的地址空间,可将分配给它们的空间用同样的方法再子分。
? SLA ID字段:站点级集聚标识符,被一些机构用来安排内部的网络结构。每个机构可以用与I P v 4同样的方法来创建自己内部的分级网络结构。若1 6位字段全部用作平面地址空间,则最多可有65 535 个不同子网。如果用前8位作该组织内较高级的选路,那么允许2 5 5个高级子网,每个高级子网可有多达2 5 5个子子网。
? 接口标识符字段:6 4位长,包含IEEE EUI-64接口标识符的6 4位值。

现在很清楚,I P v 6单播地址能包括大量的组合,甚至超过了将来R F C可能会指定的显式字段。不论是站点级集聚标识符,还是下一级集聚标识符都提供了大量空间,以便某些网络接入供应商和机构通过分级结构再子分这两个字段来增加附加的拓扑结构。

3.特殊地址和保留地址

在第一个1/256 IPv6地址空间中,所有地址的第一个8位:0000 0000被保留。大部分空的地址空间用作特殊地址,这些特殊地址包括:? 未指定地址:这是一个“全0”地址,当没有有效地址时,可采用该地址。例如当一个主机从网络第一次启动时,它尚未得到一个I P v 6地址,就可以用这个地址,即当发出配置信息请求时,在I P v 6包的源地址中填入该地址。该地址可表示为0 : 0 : 0 : 0 : 0 : 0 : 0 : 0,如前所述,也可写成: :。

? 回返地址:在I P v 4中,回返地址定义为1 2 7 . 0 . 0 . 1。任何发送回返地址的包必须通过协议栈到网络接口,但不发送到网络链路上。网络接口本身必须接受这些包,就好像是从外面节点收到的一样,并传回给协议栈。回返功能用来测试软件和配置。I P v 6回返地址除了最低位外,全为0,即回返地址可表示为0 : 0 : 0 : 0 : 0 : 0 : 0 : 1或: : 1。

? 嵌有I P v 4地址的I P v 6地址:有两类地址,一类允许I P v 6节点访问不支持I P v 6的I P v 4节点,另一类允许I P v 6路由器用隧道方式,在I P v 4网络上传送I P v 6包。这两类地址将在下面进行讨论。

4. 嵌有I P v 4地址的I P v 6地址

不管人们是否愿意,逐渐向I P v 6过渡已成定局。这意味着I P v 4和I P v 6节点必须找到共存的方法。当然两个不同I P版本最明显的一个差别是地址。最早由RFC1884 定义,然后被带入RFC2373中,I P v 6提供两类嵌有I P v 4地址的特殊地址。这两类地址高阶8 0位均为0,低价3 2位包含I P v 4地址。当中间的1 6位被置为F F F F时,则指示该地址为I P v 4映象的I P v 6地址。

I P v 4兼容地址被节点用于通过I P v 4路由器以隧道方式传送I P v 6包。这些节点既理解I P v 4又理解I P v 6。I P v 4映象地址则被I P v 6节点用于访问只支持I P v 4的节点。

5. 链路本地和站点本地地址

对于不愿意申请全球唯一性的I P v 4网络地址的一些机构,通过采用网络1 0型地址对I P v 4 网络地址进行翻译,可以为这些机构提供一个选项。位于机构之外,但由机构使用的路由器不应该转发这些地址,但是不能阻止转发这些地址,也不能区分这些地址和其他有效的I P v 4 地址。可以相对容易地配置路由器,使其能转发这些地址。

链路本地地址用于单网络链路上给主机编号。前缀的前1 0位标识的地址即链路本地地址。路由器在它们的源端和目的端对具有链路本地地址的包不予处理,因为永远也不会转发这些包。该地址的中间5 4位置成0。而6 4位接口标识符同样用如前所述的I E E E结构,地址空间的这部分允许个别网络连接多达( 2的64次方-1)个主机。

NSAP和I P X地址分配

I P n g的目标之一是要统一整个网络世界,使I P、I P X和O S I网络间能进行互操作。为了支持这种互操作性,I P v 6为O S I和I P X各保留了1 / 1 2 8地址空间。在本书写作时,I P X地址格式尚未精确定义;N S A P地址分配的描述见RFC10(OSI NSAP和I P v 6 )。对O S I和N S A P的讨论已超出本书范围,感兴趣的读者可以在R F C中找到更完整的论述。

组播

像广播地址一样,组播地址在类似老式的以太网的本地网中特别有用,在这种网中,所有节点都能检测出线路上传输的所有数据。每次传输开始时,每个节点检查其目的地址,如果与本节点接口地址一致,节点就拾取该传输的其余部分。这使节点拾取广播和组播传输相对比较简单。如果是广播,节点只要侦听,无须做任何决定,因此简单。对组播来说,稍复杂一些,节点要预订一个组播地址,当检测出目的地址为组播地址时,必须确定是否是节点预定的那个组播地址。

I P组播就更为复杂。一个重要的原因是I P并不是不加鉴别就将业务流放在I n t e r n e t上转发至所有节点,这是I P成功之处。如果要这样做的话,它将迫使大多数甚至所有连接的网络屈服。这就是为什么路由器不应该转发广播包的原因。不过,对组播而言,只要路由器以其他节点的名义预订组播地址,就能有选择地转发它。

当节点预订组播地址时,它声明要成为组播的一个成员。于是任何本地路由器将以该节点的名义预订组播地址。同一网络上的其他节点要发送信息到该组播地址时,I P组播包将被封装到链路层组播数据传输单元中。在以太网上,封装的单元指向以太网组播地址;在其他用点对点电路传输的网络上(如AT M ) ,通过其他某些机制将包发送给订户,通常通过某类服务器将包发送给每个订户。从本地网以外来的组播,用同样方法处理,只是传递给路由器,由路由器把包转发给预订节点。

1. 组播地址格式I P v 6组播地址的格式不同于I P v 6单播地址,采用更为严格的格式。组播地址只能用作目的地址,没有数据报把组播地址用作源地址。地址格式中的第1个字节为全“1”,标识其为组播地址。回顾图6 - 1,组播地址占了I P v 6 地址空间的整整1 / 2 5 6。组播地址格式中除第1字节外的其余部分,包括如下三个字段:

? 标志字段:由4 个单个位标志组成。目前只指定了第4 位,该位用来表示该地址是由I n t e r n e t编号机构指定的熟知的组播地址,还是特定场合使用的临时组播地址。如果该标志位为“0”,表示该地址为熟知地址;如果该位为“1”,表示该地址为临时地址。其他3个标志位保留将来用。

? 范围字段:长4位,用来表示组播的范围。即,组播组是只包括同一本地网、同一站点、同一机构中的节点,还是包括I P v 6全球地址空间中任何位置的节点。该4位的可能值为0 ~ 1 5

? 组标识符字段:长11 2 位,用于标识组播组。根据组播地址是临时的还是熟知的以及地址的范围,同一个组播标识符可以表示不同的组。永久组播地址用指定的赋予特殊含义的组标识符,组中的成员既依赖于组标识符,又依赖于范围

RFC2373中指定的IPv6组播范围值
RFC2373中指定的IPv6组播范围值

 

 

 

 

 

 

 

 

所有I P v 6组播地址以F F开始,表示地址的第1个8位为全“1”。目前,因为标志的其余位未定义,所以地址的第3个十六进制数字若为“0”,则表示熟知地址;若为“1”, 则表示临时地址。第4个十六进制数字表示范围,可以是未分配的值或保留的值,见上图。

组播组

I P v 4已具备使用组播的应用,由于这种应用将同样的数据发送到多个节点,例如,电视会议或财经新闻及股票行情的发布,因而需要高带宽。用分配的组播地址和组播范围进行组合,可以表现出多种含义,并用在其他应用上。一些早期注册的组播地址,包括成组的路由器、D H C P服务、音频和视频服务以及网络游戏服务,详情请参阅RFC2375(IPv6组播地址分配)。

考虑组播组标识符为“所有D H C P服务器”时可能发生的情况。用组标识符1 : 3来代表这个组。用2表示链路本地范围(本地网络链路),则I P v 6组播地址为F F 0 2 : 0 : 0 : 0 : 0 : 0 : 1 : 3。该地址可解释为:链路本地范围内的所有D H C P服务器,即,所有D H C P服务器在同一网络上。如果将范围改为站点本地,那么该地址的意思变为“同一站点上的所有D H C P服务器”。

保留的组播组标识符可用于扩展范围字段。如果范围字段值为1,表示组标识符所指定的所有特定类型的服务器只包括本地节点上的服务器。如果范围字段值为2,除了包括本地节点上的服务器外,再加上连接到同一网络的其他所有服务器。例如,只有当一个网络时间协议( N T P )服务器运行在本地节点上时,用组标识符标识范围值为1的该服务器将具有一个激活的成员;如果范围值增至2,则包括连接到同一网络的运行一个NTP 服务器的任何节点;如果范围值增至8,它将包括运行在整个机构的所有N T P服务器;如果范围值增至E (十进制为1 4 ), 它将包括互联网上任何地点的所有N T P服务器。

另一方面,对于临时组播地址的组标识符,在它们自己的范围以外没有意义。全球范围的临时组播组和链路本地的组,即使它们可能有相同的组标识符,也没有任何关系。

泛播

组播地址在某种意义上可以由多个节点共享。组播地址成员的所有节点均期待着接收发给该地址的所有包。一个连接5个不同的本地以太网网络的路由器,要向每个网络转发一个组播包的副本(假设每个网络上至少有一个预订了该组播地址)。泛播地址与组播地址类似,同样是多个节点共享一个泛播地址,不同的是,只有一个节点期待接收给泛播地址的数据报。
泛播对提供某些类型的服务特别有用,尤其是对于客户机和服务器之间不需要有特定关系的一些服务,例如域名服务器和时间服务器。名字服务器就是个名字服务器,不论远近都应该工作得一样好。同样,一个近的时间服务器,从准确性来说,更为可取。因此当一个主机为了获取信息,发出请求到泛播地址,响应的应该是与该泛播地址相关联的最近的服务器。

泛播地址的分配及其格式

泛播地址被分配在正常的I P v 6单播地址空间以外。因为泛播地址在形式上与单播地址无法区分开,一个泛播地址的每个成员,必须显式地加以配置,以便识别泛播地址。

泛播选路

了解如何为一个单播包确定路由,必须从指定单个单播地址的一组主机中提取最低的公共选路命名符。即,它们必定有某些公共的网络地址号,并且其前缀定义了所有泛播节点存在的地区。比如一个I S P可能要求它的每一个用户机构提供一个时间服务器,这些时间服务器共享单个泛播地址。在这种情况下,定义泛播地区的前缀,被分配给I S P作再分发用。

发生在该地区中的选路是由共享泛播地址的主机的分发来定义的。在该地区中,一个泛播地址必定带有一个选路项:该选路项包括一些指针,指向共享该泛播地址的所有节点的网络接口。上述情况下,地区限定在有限范围内。泛播主机也可能分散在全球Internet 上,如果是这种情况的话,那么泛播地址必须添加到遍及世界的所有路由表上。

IPV6的地址类型编辑本段回目录

IP地址有三种类型:单播、组播和任意点播。广播地址已不再有效。RFC2373中定义了三种IPv6地址类型:

?  单播:一个单接口的标识符。送往一个单播地址的包将被传送至该地址标识的接口上。
?  泛播:一组接口(一般属于不同节点)的标识符。送往一个泛播地址的包将被传送至该地址标识的接口之一(根据选路协议对于距离的计算方法选择“最近”的一个)。
?  组播:一组接口(一般属于不同节点)的标识符。送往一个组播地址的包将被传送至有该地址标识的所有接口上。

广播路在何方

广播地址从一开始就为IPv4网络带来了问题。广播被用来携带去向多个节点的信息或被那些不知信息来自何方的节点用来发出请求。但是,广播可能将为网络性能设置障碍。同一网络链路上的大量广播意味着该链路上的所有每个节点都必须处理所有广播,其中绝大部分节点最终都将忽略该广播,因为该信息与自己无关。把广播在子网之间进行转发将导致更多的问题,因为路由器上将充斥着这种业务流。

IPv6对此的解决办法是使用一个“所有节点”组播地址来替代那些必须使用广播的情况,同时,对那些原来使用了广播地址的场合,则使用一些更加有限的组播地址。通过这种方法,对于原来由广播携带的业务流感兴趣的节点可以加入一个组播地址,而其他对该信息不感兴趣的节点则可以忽略发往该地址的包。广播从来不能解决信息穿越Internet的问题,如选路信息,而组播则提供了一个更加可行的方法。

单播

单播地址标识了一个单独的IPv6接口。一个节点可以具有多个IPv6网络接口。每个接口必须具有一个与之相关的单播地址。单播地址可被认为包含了一段信息,这段信息被包含在128位字段中:该地址可以完整地定义一个特定的接口。此外,地址中数据可以被解释为多个小段的信息。但无论如何,当所有的信息被放在一起后,将构成标识一个节点接口的128位地址。

IPv6地址本身可以为节点提供关于其结构的或多或少的信息,这主要根据是由谁来观察这个地址以及观察什么。例如,节点可能只需简单地了解整个128位地址是一个全球唯一的标识符,而无须了解节点在网络中是否存在。另一方面,路由器可以通过该地址来决定,地址中的一部分标识了一个特定网络或子网上的一个唯一节点。例如,一个IPv6单播地址可看成是一个两字段实体,其中一个字段用来标识网络,而另一个字段则用来标识该网络上节点的接口。在后面讨论特定的单播地址类型时还会看到,网络标识符可被划分为几部分,分别标识不同的网络部分。IPv6单播地址功能与IPv4地址一样受制于CIDR,即,在一个特定边界上将地址分为两部分。地址的高位部分包含选路用的前缀,而地址的低位部分包含网络接口标识符。最简单的方法是把IPv6地址作为不加区分的一块128位的数据,而从格式化的观点来看,可把它分为两段,即接口标识符和子网前缀。接口标识符的长度取决于子网前缀的长度。两者的长度是可以变化的,这取决于谁对它进行解释。对于非常靠近寻址的节点接口(远离骨干网)的路由器可用相对较少的位数来标识接口。而离骨干网近的路由器,只需用少量地址位来指定子网前缀,这样,地址的大部分将用来标识接口标识符。下面要讨论的是可集聚的单播地址,它的结构更为复杂。

RFC2373中定义的IPv6单播地址的简单格式
RFC2373中定义的IPv6单播地址的简单格式

 

 

 

IPv6单播地址包括下面几种类型:
?可集聚全球地址
?未指定地址或全0地址
?回返地址
?嵌有IPv4地址的IPv6地址
?基于供应商和基于地理位置的供应商地址
?OSI网络服务访问点(NSAP)地址
?网络互联包交换(IPX)地址

单播地址格式

RFC1884给出了几种通用的不同类型的IPv6地址。给NSAPIPX分配的地址、基于OSI网络和NetWare地址都无缝地包含在IPv6体系结构中。分别占八分之一的地址空间的基于供应商和基于地理位置分配的地址组成了一批可分配的地址。链路本地和站点本地地址提供了10型网络地址转换的网络统一不变的版本。然而,RFC2373改变和简化了IPv6的地址分配。其中之一是取消了基于地理位置的地址分配,基于供应商的单播地址改变成可集聚全球单播地址。从名字的改变上就可看出,对于基于供应商的地址,允许前面定义的集聚以及基于交换局的新型集聚。这也反映了一种更平衡的地址分类。NSAP和IPX地址空间仍然保留着,且八分之一的地址分配给可集聚地址。另外,除了组播地址和某类保留地址外,IPv6地址空间的其余部分都是未分配的地址,为将来的发展预留了足够的空间。

1.接口标识符

在IPv6寻址体系结构中,任何IPv6单播地址都需要一个接口标识符。接口标识符非常像48位的介质访问控制(MAC)地址,MAC地址由硬件编码在网络接口卡中,由厂商烧入网卡中,而且地址具有全球唯一性,不会有两个网卡具有相同的MAC地址。这些地址能用来唯一标识网络链路层上的接口。IPv6主机地址的接口标识符基于IEEEEUI-64格式。该格式基于已存在的MAC地址来创建64位接口标识符,这样的标识符在本地和全球范围是唯一的。RFC2373包括的附录解释了如何创建接口标识符。这些64位接口标识符能在全球范围内逐个编址,并唯一地标识每个网络接口。这意味着理论上可多达264个不同的物理接口,大约有1.8×1019个不同的地址,而且这也只用了IPv6地址空间的一半。这至少在可预见的未来是足够的。

2.可集聚全球单播地址

此处已经提到了基于供应商的集聚,它的概念还会在第8章中再次提到。可集聚全球单播地址是另一种类型的集聚,它是独立于ISP的。基于供应商的可集聚地址必须随着供应商的改变而改变,而基于交换局的地址则由IPv6交换实体直接定位。由交换局提供地址块,而用户和供应商为网络接入签订合同。这样的网络接入或者是直接由供应商提供,或者通过交换局间接提供,但选路通过交换局。这就使得用户改换供应商时,无需重新编址。同时也允许用户使用多个ISP来处理单块网络地址。可集聚全球单播地址包括地址格式的起始3位为001的所有地址(此格式可在将来用于当前尚未分配的其他单播前缀)。地址格式化为下图所示的字段。

RFC2373中定义的IPv6全球可集聚单播地址格式
RFC2373中定义的IPv6全球可集聚单播地址格式

 

 

 

 

图中包括下列字段:
?FP字段:IPv6地址中的格式前缀,3位长,用来标识该地址在IPv6地址空间中属于哪类地址。目前该字段为“001”,标识这是可集聚全球单播地址。
?TLAID字段:顶级集聚标识符,包含最高级地址选路信息。这指的是网络互连中最大的选路信息。目前,该字段为13位,可得到最大8192个不同的顶级路由。
?RES字段:该字段为8位,保留为将来用。最终可能会用于扩展顶级或下一级集聚标识符字段。
?NLAID字段:下一级集聚标识符,24位长。该标识符被一些机构用于控制顶级集聚以安排地址空间。换句话说,这些机构(可能包括大型ISP和其他提供公网接入的机构)能按照他们自己的寻址分级结构来将此24位字段切开用。这样,一个实体可以用2位分割成4个实体内部的顶级路由,其余的22位地址空间分配给其他实体(如规模较小的本地ISP)。这些实体如果得到足够的地址空间,可将分配给它们的空间用同样的方法再子分。
?SLAID字段:站点级集聚标识符,被一些机构用来安排内部的网络结构。每个机构可以用与IPv4同样的方法来创建自己内部的分级网络结构。若16位字段全部用作平面地址空间,则最多可有65535个不同子网。如果用前8位作该组织内较高级的选路,那么允许255个高级子网,每个高级子网可有多达255个子子网。
?接口标识符字段:64位长,包含IEEEEUI-64接口标识符的64位值。现在很清楚,IPv6单播地址能包括大量的组合,甚至超过了将来RFC可能会指定的显式字段。不论是站点级集聚标识符,还是下一级集聚标识符都提供了大量空间,以便某些网络接入供应商和机构通过分级结构再子分这两个字段来增加附加的拓扑结构。

3.特殊地址和保留地址

在第一个1/256IPv6地址空间中,所有地址的第一个8位:00000000被保留。大部分空的地址空间用作特殊地址,这些特殊地址包括:
?未指定地址:这是一个“全0”地址,当没有有效地址时,可采用该地址。例如当一个主机从网络第一次启动时,它尚未得到一个IPv6地址,就可以用这个地址,即当发出配置信息请求时,在IPv6包的源地址中填入该地址。该地址可表示为0:0:0:0:0:0:0:0,如前所述,也可写成::。
?回返地址:在IPv4中,回返地址定义为127.0.0.1。任何发送回返地址的包必须通过协议栈到网络接口,但不发送到网络链路上。网络接口本身必须接受这些包,就好像是从外面节点收到的一样,并传回给协议栈。回返功能用来测试软件和配置。IPv6回返地址除了最低位外,全为0,即回返地址可表示为0:0:0:0:0:0:0:1或::1。
?嵌有IPv4地址的IPv6地址:有两类地址,一类允许IPv6节点访问不支持IPv6的IPv4节点,另一类允许IPv6路由器用隧道方式,在IPv4网络上传送IPv6包。这两类地址将在下面进行讨论。

4.嵌有IPv4地址的IPv6地址

不管人们是否愿意,逐渐向IPv6过渡已成定局。这意味着IPv4和IPv6节点必须找到共存的方法。当然两个不同IP版本最明显的一个差别是地址。最早由RFC1884定义,然后被带入RFC2373中,IPv6提供两类嵌有IPv4地址的特殊地址。这两类地址高阶80位均为0,低价32位包含IPv4地址。当中间的16位被置为FFFF时,则指示该地址为IPv4映象的IPv6地址。图6-4显示了这两类地址结构。IPv4兼容地址被节点用于通过IPv4路由器以隧道方式传送IPv6包。这些节点既理解IPv4又理解IPv6。IPv4映象地址则被IPv6节点用于访问只支持IPv4的节点。

5.链路本地和站点本地地址

对于不愿意申请全球唯一性的IPv4网络地址的一些机构,通过采用网络10型地址对IPv4网络地址进行翻译,可以为这些机构提供一个选项。位于机构之外,但由机构使用的路由器不应该转发这些地址,但是不能阻止转发这些地址,也不能区分这些地址和其他有效的IPv4地址。可以相对容易地配置路由器,使其能转发这些地址。

RFC2373定义的嵌有IPv4地址的IPv6地址
RFC2373定义的嵌有IPv4地址的IPv6地址

 

 

 

 

 

 

为实现这一功能,IPv6从全球唯一的Internet空间中分出两个不同的地址段。下图,源自RFC2373,显示了链路本地和站点本地地址的结构。

IPv6RFC2373中指定的链路本地和站点本地网络地址
RFC2373中指定的链路本地和站点本地网络地址

 

 

 

 

 

 

 

链路本地地址用于单网络链路上给主机编号。前缀的前10位标识的地址即链路本地地址。路由器在它们的源端和目的端对具有链路本地地址的包不予处理,因为永远也不会转发这些包。该地址的中间54位置成0。而64位接口标识符同样用如前所述的IEEE结构,地址空间的这部分允许个别网络连接多达(26的4次方-1)个主机。如果说链路本地地址只用于单个网络链路的话,那么站点本地地址则可用于站点。这意味着站点本地地址能用在内联网中传送数据,但不允许从站点直接选路到全球Internet。站点内的路由器只能在站点内转发包,而不能把包转发到站点外去。站点本地地址的10位前缀与链路本地地址的10位前缀略有区别,然后后面紧跟一连串“0”。站点本地地址的子网标识符为16位,而接口标识符同样是64位基于IEEE地址。

6.NSAP和IPX地址分配

IPng的目标之一是要统一整个网络世界,使IP、IPX和OSI网络间能进行互操作。为了支持这种互操作性,IPv6为OSI和IPX各保留了1/128地址空间。在本书写作时,IPX地址格式尚未精确定义;NSAP地址分配的描述见RFC10(OSINSAP和IPv6)。对OSI和NSAP的讨论已超出本书范围。

组播

像广播地址一样,组播地址在类似老式的以太网的本地网中特别有用,在这种网中,所有节点都能检测出线路上传输的所有数据。每次传输开始时,每个节点检查其目的地址,如果与本节点接口地址一致,节点就拾取该传输的其余部分。这使节点拾取广播和组播传输相对比较简单。如果是广播,节点只要侦听,无须做任何决定,因此简单。对组播来说,稍复杂一些,节点要预订一个组播地址,当检测出目的地址为组播地址时,必须确定是否是节点预定的那个组播地址。IP组播就更为复杂。一个重要的原因是IP并不是不加鉴别就将业务流放在Internet上转发至所有节点,这是IP成功之处。如果要这样做的话,它将迫使大多数甚至所有连接的网络屈服。这就是为什么路由器不应该转发广播包的原因。不过,对组播而言,只要路由器以其他节点的名义预订组播地址,就能有选择地转发它。

当节点预订组播地址时,它声明要成为组播的一个成员。于是任何本地路由器将以该节点的名义预订组播地址。同一网络上的其他节点要发送信息到该组播地址时,IP组播包将被封装到链路层组播数据传输单元中。在以太网上,封装的单元指向以太网组播地址;在其他用点对点电路传输的网络上(如ATM),通过其他某些机制将包发送给订户,通常通过某类服务器将包发送给每个订户。从本地网以外来的组播,用同样方法处理,只是传递给路由器,由路由器把包转发给预订节点。

1.组播地址格式IPv6组播地址的格式不同于IPv6单播地址,采用图6-6所示的更为严格的格式。组播地址只能用作目的地址,没有数据报把组播地址用作源地址。地址格式中的第1个字节为全“1”,标识其为组播地址。回顾上图,组播地址占了IPv6地址空间的整整1/256。组播地址格式中除第1字节外的其余部分,包括如下三个字段:

?标志字段:由4个单个位标志组成。目前只指定了第4位,该位用来表示该地址是由Internet编号机构指定的熟知的组播地址,还是特定场合使用的临时组播地址。如果该标志位为“0”,表示该地址为熟知地址;如果该位为“1”,表示该地址为临时地址。其他3个标志位保留将来用。

?范围字段:长4位,用来表示组播的范围。即,组播组是只包括同一本地网、同一站点、同一机构中的节点,还是包括IPv6全球地址空间中任何位置的节点。该4位的可能值为0~15,见下图

RFC2373中指定的IPv6组播地址格式
RFC2373中指定的IPv6组播地址格式

 

 

 

?组标识符字段:长112位,用于标识组播组。根据组播地址是临时的还是熟知的以及地址的范围,同一个组播标识符可以表示不同的组。永久组播地址用指定的赋予特殊含义的组标识符,组中的成员既依赖于组标识符,又依赖于范围。

RFC2373中指定的IPv6组播范围值
RFC2373中指定的IPv6组播范围值

 

 

 

 

 

 

 

 

所有IPv6组播地址以FF开始,表示地址的第1个8位为全“1”。目前,因为标志的其余位未定义,所以地址的第3个十六进制数字若为“0”,则表示熟知地址;若为“1”,则表示临时地址。第4个十六进制数字表示范围,可以是未分配的值或保留的值,见图6-7。

2.组播组

IPv4已具备使用组播的应用,由于这种应用将同样的数据发送到多个节点,例如,电视会议或财经新闻及股票行情的发布,因而需要高带宽。用分配的组播地址和组播范围进行组合,可以表现出多种含义,并用在其他应用上。一些早期注册的组播地址,包括成组的路由器、DHCP服务、音频和视频服务以及网络游戏服务,详情请参阅RFC2375(IPv6组播地址分配)。考虑组播组标识符为“所有DHCP服务器”时可能发生的情况。用组标识符1:3来代表这个组。用2表示链路本地范围(本地网络链路),则IPv6组播地址为FF02:0:0:0:0:0:1:3。该地址可解释为:链路本地范围内的所有DHCP服务器,即,所有DHCP服务器在同一网络上。如果将范围改为站点本地,那么该地址的意思变为“同一站点上的所有DHCP服务器”。保留的组播组标识符可用于扩展范围字段。如果范围字段值为1,表示组标识符所指定的所有特定类型的服务器只包括本地节点上的服务器。如果范围字段值为2,除了包括本地节点上的服务器外,再加上连接到同一网络的其他所有服务器。例如,只有当一个网络时间协议(NTP)服务器运行在本地节点上时,用组标识符标识范围值为1的该服务器将具有一个激活的成员;如果范围值增至2,则包括连接到同一网络的运行一个NTP服务器的任何节点;如果范围值增至8,它将包括运行在整个机构的所有NTP服务器;如果范围值增至E(十进制为14),它将包括互联网上任何地点的所有NTP服务器。另一方面,对于临时组播地址的组标识符,在它们自己的范围以外没有意义。全球范围的临时组播组和链路本地的组,即使它们可能有相同的组标识符,也没有任何关系。

泛播

组播地址在某种意义上可以由多个节点共享。组播地址成员的所有节点均期待着接收发给该地址的所有包。一个连接5个不同的本地以太网网络的路由器,要向每个网络转发一个组播包的副本(假设每个网络上至少有一个预订了该组播地址)。泛播地址与组播地址类似,同样是多个节点共享一个泛播地址,不同的是,只有一个节点期待接收给泛播地址的数据报。泛播对提供某些类型的服务特别有用,尤其是对于客户机和服务器之间不需要有特定关系的一些服务,例如域名服务器和时间服务器。名字服务器就是个名字服务器,不论远近都应该工作得一样好。同样,一个近的时间服务器,从准确性来说,更为可取。因此当一个主机为了获取信息,发出请求到泛播地址,响应的应该是与该泛播地址相关联的最近的服务器。

1.泛播地址的分配及其格式

泛播地址被分配在正常的IPv6单播地址空间以外。因为泛播地址在形式上与单播地址无法区分开,一个泛播地址的每个成员,必须显式地加以配置,以便识别泛播地址。

2.泛播选路

了解如何为一个单播包确定路由,必须从指定单个单播地址的一组主机中提取最低的公共选路命名符。即,它们必定有某些公共的网络地址号,并且其前缀定义了所有泛播节点存在的地区。比如一个ISP可能要求它的每一个用户机构提供一个时间服务器,这些时间服务器共享单个泛播地址。在这种情况下,定义泛播地区的前缀,被分配给ISP作再分发用。发生在该地区中的选路是由共享泛播地址的主机的分发来定义的。在该地区中,一个泛播地址必定带有一个选路项:该选路项包括一些指针,指向共享该泛播地址的所有节点的网络接口。上述情况下,地区限定在有限范围内。泛播主机也可能分散在全球Internet上,如果是这种情况的话,那么泛播地址必须添加到遍及世界的所有路由表上。

ICMPv6编辑本段回目录

IP节点需要一个特殊的协议来交换报文以了解与IP相关的情况。ICMP正好适用于这种需求。在IPv4升级到IPv6的过程中,ICMP也经历了一定的修改。ICMPv6在RFC1885中定义。ICMP报文可以用来报告错误和信息状态,以及类似于包的Internet探询(Ping)和跟踪路由的功能。

IGMP一开始就包含在ICMPv6规范中,并且在1997年11月发表的RFC2236中得到更新,1998年初秋,IGMP第3版也开始了讨论。IGMP可以用来支持组播传输,它为主机提供了向本地路由器报告其属于某个组播组的方法。

ICMPv6报文

ICMP报文的产生来源于一些错误情况。例如,如果一个路由器由于某些原因不能处理一个IP包,它就可能会产生某种类型的ICMP报文,并直接回送到包的源节点,然后源节点将采取一些办法来纠正所报告的错误状态。例如,如果路由器无法处理一个IP包的原因是由于包太长而无法将其发送到网络链路上,则路由器将产生一个ICMP错误报文来指出包太长,源节点在收到该报文后可以用它来确定一个更加合适的包长度,并通过一系列新的IP包来重新发送该数据。

RFC1885中定义了以下报文类型(没有包括该文档中定义的有关组的报文):

?目的地不可达。

?包太长。

?超时。

?参数问题。

?回声请求。

?回声应答。下面将详细介绍这些报文。

1.目的地不可达

这个报文由路由器或源主机在由于除业务流拥塞之外的原因而无法转发一个包的时候产生。这种错误报文有五个代码,包括:
?0:没有到达目的地的路由。这个报文在路由器没有定义IP包的目的地路由时产生,路由器将采用默认路由来发送无法利用路由器的路由表进行转发的包。

?1:与目的地的通信被管理员禁止。当被禁止的某类业务流欲到达防火墙内部的一个主机时,包过滤防火墙将产生该报文。

?2:不是邻居。当使用IPv6选路扩展头并严格限定路由时,将使用这个代码。当列表中的下一个目的地与当前正执行转发的节点不能共享一个网络链路时,将会产生该报文。

?3:地址不可达。这个代码指出在把高层地址解析到链路层(网络)地址时遇到了一些问题,或者在目的地网络的链路层上去往其目的地时遇到了问题。

?4:端口不可达。这种情况发生在高层协议(如DP)没有侦听包目的端口的业务量,且传输层协议又没有其他办法把这个问题通知源节点时。

2.包太长

当接收某包的路由器由于包长度大于将要转发到的链路的MTU,而无法对其进行转发时,将会产生包太长报文。该ICMPv6错误报文中有一个字段指出导致该问题的链路的MTU值。在路径MTU发现过程中这是一个有用的错误报文。

3.超时

当路由器收到一个跳极限为1的包时,它必须在转发该包之前减小这个数值。如果在路由器减小该数值后,跳极限字段的值变为0(或者是路由器收到一个跳限制字段为0的包),那么路由器必须丢弃该包,并向源节点发送ICMPv6超时报文。源节点在收到该报文后,可以认为最初的跳限制设置得太小(包的真实路由比源节点想象的要长),也可以认为有一个选路循环导致包无法交付。

在“跟踪路由”功能中这个报文非常有用。这个功能使得一个节点可以标识一个包在从源节点到目的节点的路径上的所有路由器。它的工作方式如下:首先,一个去往目的地的包的跳极限被设置为1。它所到达的第一个路由器将跳减少极限,并回送一个超时报文,这样一来源节点就标识了路径上的第一个路由器。然后如果该包必须经过第二个路由器的话,源节点会再发送一个跳极限为2的包,该路由器将把跳极限减小到0,并产生另一个超时报文。这将持续到包最终到达其目的地为止。同时源节点也获得了从每个中间路由器发来的超时报文。

4.参数问题

当IPv6头或扩展头中的某些部分有问题时,路由器由于无法处理该包而会将其丢弃。路由器的实现中应该可以产生一个ICMP参数错误报文来指出问题的类型(如错误的头字段、无法识别的下一个头类型或无法识别的IPv6选项),并通过一个指针值指出在第几个字节遇到这种错误情况。

5.ICMPv6回声功能

ICMPv6中包含了一个与错误情况无关的功能。所有IPv6节点都需要支持两种报文:回声请求和回声应答。回声请求报文可以向任何一个正确的IPv6地址发送,并在其中包含一个回声请求标识符、一个顺序号和一些数据。尽管二者都是可选项,但回声请求标识符和顺序号可以用来区分对应不同请求的响应。回声请求的数据也是一个选项,并可用于诊断。

当一个IPv6节点收到一个回声请求报文后,它必须回送一个回声应答报文。在应答中包含相同的请求标识符、顺序号和在最初的请求报文中携带的数据。ICMP回声请求/应答报文对是ping功能的基础。ping是一个重要的诊断功能,因为它提供了一种方法来决定一个特定的主机是否与其他一些主机连接在相同的网络上。

为IP增加安全性编辑本段回目录

IPv4的目的只是作为简单的网络互通协议,因而其中没有包含安全特性。如果IPv4仅作为研究工具,或者在包括研究、军事、教育和政府网络的相对严格的辖区中作为产品型网络协议而使用,缺乏安全性并不是一个严重的缺陷。但是,随着IP网络在商用和消费网络中的重要性与日俱增,攻击所导致的潜在危害将具有空前的破坏性。
本文主要内容包括:

?人们已经为IP定义的安全性目标。

?这些目标如何满足。

?这些目标和相关论题如何在IP中定义。下一节将介绍IP的安全性体系结构(又称为IPsec)本身的细节以及为完成上述目标而安装的一些工具。

应注意,RFC1825以及后续文档中所定义的IPsec提供的是IP的安全性体系结构,而不是Internet的安全性体系结构。两者的区别很重要:IPsec定义了在IP层使用的安全性服务,对IPv4和IPv6都可用。如果在适当的IPv4选项格式中实现AH和ESP头,IPv4也可以使用这种安全性功能,只是在IPv6中更容易实现。

安全性目标

对于安全性,可以定义如下三个公认的目标:

?身份验证:能够可靠地确定接收到的数据与发送的数据一致,并且确保发送该数据的实体与其所宣称的身份一致。

?完整性:能够可靠地确定数据在从源到目的地传送的过程中没有被修改。

?机密性:确保数据只能为预期的接收者使用或读出,而不能为其他任何实体使用或读出。完整性和身份验证经常密切相关,而机密性有时使用公共密钥加密来实现,这样也有助于对源端进行身份验证。
AH和ESP头有助于在IP上实现上述目标。很简单,AH为源节点提供了在包上进行数字签名的机制。AH之后的数据都是纯文本格式,可能被攻击者截取。但是,在目的节点接收之后,可以使用AH中包含的数据来进行身份验证。

另一方面,可以使用ESP头对数据内容进行加密。ESP头之后的所有数据都进行了加密,ESP头为接收者提供了足够的数据以对包的其余部分进行解密。

Internet安全性(实际上任何一种安全性)的问题在于很难创建安全性,尤其是在开放的网络中,包可能经过任意数量的未知网络,任一个网络中都可能有包嗅探器在工作,而任何网络都无法察觉。在这样的开放环境中,即使使用了加密和数字签名,安全性也将受到严重的威胁。对IP业务流的攻击也包括诸如侦听之类,致使从一个实体发往另一个实体的数据被未经授权的第三个实体所窃取。此外,IP安全性还应该解决下列安全性威胁:

?否认服务攻击:即实体使用网络传送数据,致使某个授权用户无法访问网络资源。例如,攻击者可能使某主机淹没于大量请求中,从而致使系统崩溃;或者重复传送很长的email报文,企图以恶意业务流塞满用户或站点带宽。

?愚弄攻击:即实体传送虚报来源的包。例如,有一种愚弄攻击是由攻击者发送e-mail报文,报头的“From:”指明该报文的发信人是美国总统。那些在在包头携带错误源地址的攻击则更加阴险。

密钥处理问题则更加复杂。为使身份验证和加密更可靠,IP安全性体系结构要求使用密钥。如何安全地管理和分配密钥,同时又能正确地将密钥与实体结合以避免中间者的攻击,这是Internet业界所面临的最棘手的问题之一。这种中间者的攻击是指,攻击者(假设为C)将自己置于两个通信实体(假设为A和B)之间,拦截A和B之间传送的所有数据,冒充A把数据重新发送给B,也冒充B把数据重新发送给A。如果C能够以类似B的公共密钥进行身份验证,从而让A确认它就是B,同样也让B误以为它就是A,那么A和B就会误认为他们之间的传送是安全的。

IPsec本身不能使Internet更加安全。本章只提出与Internet安全性相关的几个最迫切的问题。对Internet安全性的细节感兴趣的读者,请参考本书作者的另一本书《PersonalEncryptionClearlyExplained》(APProfessional,1998),书中讨论了加密、数字签名和Internet安全性问题。

RFC1825及建议的更新

RFC1825于1995年8月发布,共有22页;其第5版修改草案完成于1998年5月,已经达到66页。安全性的正确实现要求认真考虑细节问题,这是对原RFC进行扩充的主要原因。更新后的文档在最终发布时,在关于如何实现所有的IP协议(包括ICMP和组播)方面将提供更多的细节,同时将更详细讨论密钥管理相关问题和安全性关联问题。

IPsec

IPsec的目标是提供既可用于IPv4也可用于IPv6的安全性机制,该服务由IP层提供。一个系统可以使用IPsec来要求与其他系统的交互以安全的方式进行—通过使用特定的安全性算法和协议。IPsec提供了必要的工具,用于一个系统与其他系统之间对彼此可接受的安全性进行协商。这意味着,一个系统可能有多个可接受的加密算法,这些算法允许该系统使用它所倾向的算法和其他系统协商,但如果其他系统不支持它的第一选择,则它也可以接受某些替代算法。

IPsec中可能考虑如下安全性服务:

?访问控制。如果没有正确的密码就不能访问一个服务或系统。可以调用安全性协议来控制密钥的安全交换,用户身份验证可以用于访问控制。

?无连接的完整性。使用IPsec,有可能在不参照其他包的情况下,对任一单独的IP包进行完整性校验。此时每个包都是独立的,可以通过自身来确认。此功能可以通过使用安全散列技术来完成,它与使用检查数字类似,但可靠性更高,并且更不容易被未授权实体所篡改。

?数据源身份验证。IPsec提供的又一项安全性服务是对IP包内包含的数据的来源进行标识。此功能通过使用数字签名算法来完成。

?对包重放攻击的防御。作为无连接协议,IP很容易受到重放攻击的威胁。重放攻击是指攻击者发送一个目的主机已接收过的包,通过占用接收系统的资源,这种攻击使系统的可用性受到损害。为对付这种花招,IPsec提供了包计数器机制。

?加密。数据机密性是指只允许身份验证正确者访问数据,对其他任何人一律不准。它是通过使用加密来提供的。

?有限的业务流机密性。有时候只使用加密数据不足以保护系统。只要知道一次加密交换的末端点、交互的频度或有关数据传送的其他信息,坚决的攻击者就有足够的信息来使系统混乱或毁灭系统。通过使用IP隧道方法,尤其是与安全性网关共同使用,IPsec提供了有限的业务流机密性。

通过正确使用ESP头和AH,上述所有功能都有可能得以实现。

IPV6的选路问题编辑本段回目录

目前好像几乎人人都知道IPv4网络地址即将耗尽。另一个问题却不是如此显而易见,即非默认路由器,或者是列出Internet上所有路由的路由器,即在Internet骨干网上或骨干网附近、因而必须知道全部路由的路由器,它们如何处理日益庞大的路由表。路由表中必须列出到达所有独立网络的路由,因此CIDR广受欢迎。使用CIDR,一个上述骨干路由器可以用一个涵盖8位地址空间的CIDR路由代替256个C类网络的256条路由。所有的256条路由可以经由一个Internet访问供应商来选路,因此CIDR可以显著减少映射到Internet所需要的路由数目。

IPv6没有IPv4中的地址类别的概念。不论A、B、C类地址的存在对于IPv4如何有用,长期以来这种分类都是对地址的浪费,对于网络地址体系结构,子网或超网能力好像用处更多。而且出于选路目的,IPv6地址可以积累起来,理论上有很大潜力可以显著地减少非默认选路表的大小。

当然,这种高度集聚的体系结构也有缺点,即一旦一个机构改变其供应商,就必须对网络重新编号。同样,多宿主网络可能引起更多的问题。实际上,基于供应商的CIDR模式集聚方法的反对者把这个问题称为“专制”,他们已经提出了替代方案。很显然,这些替代方案在IPv6中没有采纳,但是这些方案有助于使自动配置和供应商移动性成为IPv6过渡策略的关键部分。

看起来IPv6选路协议和IPv4选路协议好像没有显著的不同,这一点也许会很令人吃惊。毕竟IPv6寻址体系结构自身将显著改进选路效率,并减少非默认选路表的大小,因此选路算法和协议只需要进行极少的修改便可取得更好的执行效果。为支持IPv6,对这些协议所做的修改大部分都与如何处理较长的IPv6地址有关。

IP选路协议

IP选路协议实质上可以分为链路状态协议和矢量距离(或路径矢量)协议两类,也可以按照内部选路和外部选路来分类。这两种分类方法看起来很简单,但足以满足本书的要求。

1.内部选路和外部选路

内部选路和外部选路的概念对Internet的结构非常重要。这两个概念与Internet以及相连的互联网络之间的交互方式密切相关。例如,某个公司的内联网通过一条链路与Internet相连,该内联网与全球Internet之间的全部业务流都经由该链路来传送。如果这条链路中断,内联网就不再有外部连接能力。这种类型的网络称为自治系统(AS),因为网络内部的一切都由单一的管理机构来管辖。这种系统的自治性体现在如果想要访问系统内的任何节点,全球Internet路由器只需要了解一条路由。同样,AS内的任何节点可以使用默认路由来向AS之外的任何节点发送包。默认路由用于标识链接该AS与全球Internet的路由器。

内部选路参与AS内部包的选路。换言之,在相对小型的互联网络内的选路,所谓小型是相对于全球Internet而言。AS内部的路由器保持的路由表相对较小,这些路由表包含到AS内部的子网和网络的路由,如果包要寻址的网络的地址没有明确列在路由表中,那么表中也包含一条或多条此时要选的默认路由。

另一方面,外部选路发生在AS环境之外。骨干路由器不能有默认路由。作为骨干路由器,如果要正确地发挥其作用,它就必须了解每个目的网络的显式路由。这意味着它的选路表将非常庞大,由此可见,使用诸如CIDR之类的集聚机制对于改善骨干选路性能极为重要。

如下所述,所有的选路协议都使用了链路状态选路算法和距离矢量选路算法中的一些要素。目前的IPv4外部路由器依靠RFC1771中定义的边界网关协议4(BGP-4),这是一种支持CIDR的距离矢量选路协议。尽管最初有一些评论(参见Huitema所著《IPv6TheNewInternetProtocol》)认为BGP非常适用于IPv4的32位地址,但完全不适于IPv6,但是BGP-4似乎仍将用于IPv6中的外部选路。有一个Internet草案中描述了为能够正确处理IPv6单播地址(链路本地地址、站点本地地址和全球地址)而进行的某些扩展,RFC2283中指出,经过上述扩展和为支持多协议选路所进行的相对少量的修改,BGP-4将能够处理IPv6外部选路。

另一个重要的外部选路协议是域间选路协议(IDRP),该协议源自ISO/OSI的努力。IDRP在描述实质上规模无限的网络和支持网络地址体系结构方面提供了更大的灵活性。有些人认为IDRP是更好的IPv6外部选路协议,但是随着Internet的进一步发展,IDRP是否能继续保持其重要性,这一点还存在质疑。

2.链路状态和矢量距离协议

通常矢量距离协议较简单。选路信息协议(RIP)就是一个重要的矢量距离协议,该协议很简单,但是,因为它要求互联网络中的每个路由器都要周期性地向网络中所有其他路由器广播自己的选路信息,故该协议有一定的局限性。正如其名称所示,每个路由器所广播的信息包括路由和表示该路由长度的整数的列表。见图8-2,网络中的路由器1到网络A的路径距离是1跳,到网络B、D、F的路径距离是2跳,到网络C和E的路径距离是3跳。图中路由器2到网络B是单跳路径,到网络A是一条2跳路径。

IPv6路由器使用RIP链接而成的一个简单互联网络
路由器使用RIP链接而成的一个简单互联网络

 

 

 

 

 

 

 

 

 

 

使用这个广播信息,路由器2得知任何要发往网络A的包应该向路由器1选路,因为其他路由器没有通告到网络A的更短路径。同样,路由器2知道应该避免把发往网络A的包转发给路由器5,因为该路由器与网络A的距离为3跳。路由器2也清楚路由器3与网络A的距离为3跳,与自己的距离也为3跳,因此如果经由路由器3来转发给网络A将需要6跳。

显而易见,RIP有一些缺陷。首先,该协议“噪音”很大。每个路由器都频繁地发送状态信息,默认情况下每30秒就发送一个报文,这样随着互联网络规模的扩充、路由器数目的增加,整个网络的业务流将急剧增长。其次,由于RIP定义的限制,它只能支持不超过16跳的互联网络,即,如果路由的长度超过16跳,就不能使用RIP来选路。虽然RIP头可以支持的跳长度多达232-1,但由于选路收敛问题,开发者们在早期就确定RIP应该限制在16跳之内。所谓选路收敛问题,是指在不正确的路由通过网络传播之前,有关连通性问题的报文无法转播给所有的路由器。

选路协议有必要允许包的选路独立于网络拓扑。这意味着源节点不必在内存中保留Internet的拓扑结构,也能够向网络中的任何目的地发送包。中间路由器应该了解网络的连通性,以便正确地转发包,但是它们也不必了解整个网络结构,只需要了解本地部分。因此,RIP之类的协议使得路由器能够获得来自其他路由器的有关它们的连接状态的通知。设计IP的目的是使其工作在既不完全可靠也不完全冗余的网络基础设施中。以上图为例,这意味着如果路由器6失效,来自网络E的包仍然可以发送到网络A,不是通过路由“路由器5-路由器6-路由器1”,而是通过替代路由“路由器5-路由器2-路由器1”。

问题是,如果路由器1到网络A的链接失效,网络A和互联网络之间就不再有连通性,即它被从互联网络切断了。但是,路由器1一直接收到有关其他路由器与网络A之间的链路的信息。所有这些路由至少是2跳,对于这些信息路由器1予以忽略,因为它自身到网络A只有1跳。为保证协议有效,必须矫正此问题及类似问题,但是相应地增加了复杂度。

上述问题并不说明RIP无用,对于小型或中型互联网(又称为内联网)而言,对网络带宽的限制并不重要,因而RIP还是很重要的选路协议。但是,对于大型内联网,RIP不适用;当有很多不同路由需要考虑时,对于选路骨干业务流,RIP也不适用。

针对矢量距离方法的缺陷,诸如开放的最短路径优先(OSPF)协议之类的链路状态协议得以大量引入。采用这种方法,路由器不是周期性地向所有其他路由器通知自己的所有路由,而是只通告自己的直接链路。见图8-2,路由器1通告自己和网络A、路由器2、路由器4及路由器6有直接连接。其他的路由器也通告它们的直接连接,这样所有的路由器根据这些通告的报文就可以产生合适且理想的路由。如果路由器5得知与自己直接连接的路由器2又连接到路由器1,而路由器1直接连接到网络A,那么它就可以产生一条从网络E到网络A的路由。路由器只在连接改变或其他路由器询问时才发出通告,这样使用诸如OSPF之类的协议会减少与选路相关的噪声。由于没有RIP的跳限制,也不会在路由器间产生大量业务流,因而OSPF能够支持较大型网络。但是,OSPF比RIP要复杂得多。对多层次的支持和对基于服务类型选路的支持也是OSPF的重要特性。

选路协议也可允许更多的选路信息。例如,路由器可以根据可用带宽、延时、甚至价格对某些链路分配不同的值。这样,对于要发送给网络A的业务流,如果到路由器4的链路在某方面看起来更优(例如更短、更快或价格更低),路由器5可能就倾向于通过路由器4来选路。

3.IPv6对选路协议的更新

如上所述,在为适合IPv6地址和地址范围而进行简单修改之后,BGP-4和IDRP很可能继续用作IP的外部选路协议。同样,在RFC2080(IPv6的RIPng)中描述的RIPng与现有协议很相似。OSPF版本2最近作为Internet标准在RFC2328中定义,而用于IPv6的OSPF版本还在定义中。预计用于IPv6的OSPF将保留OSPF的概貌,包括基本特性和功能,并使之适合于处理IPv6选路。

IPSEC编辑本段回目录

加密和身份验证算法

由于对安全性的攻击方法多种多样,设计者很难预计到所有的攻击方法,因此设计安全性算法和协议非常困难。普遍为人接受的关于安全性方法的观点是,一个好的加密算法或身份验证算法即使被攻击者了解,该算法也是安全的。这一点对于Internet安全性尤其重要。在Internet中,使用嗅探器的攻击者通过侦听系统与其连接协商,经常能够确切了解系统使用的是哪一种算法。
与Internet安全性相关的重要的密码功能大致有5类,包括对称加密、公共密钥加密、密钥交换、安全散列和数字签名。

1. 对称加密

大多数人都熟知对称加密这一加密方法。在这种方法中,每一方都使用相同的密钥来加密或解密。只要掌握了密钥,就可以破解使用此法加密的所有数据。这种方法有时也称作秘密密钥加密。通常对称加密效率很高,它是网络传送大量数据中最常用的一类加密方法。
常用的对称加密算法包括:

? 数据加密标准( DES )。DES首先由IBM公司在7 0年代提出,已成为国际标准。它有5 6位密钥。三重DES算法对DES略作变化,它使用DES算法三次加密数据,从而改进了安全性。

? RC2 、RC4和RC5。这些密码算法提供了可变长度密钥加密方法,由一家安全性动态公司,RSA数据安全公司授权使用。目前网景公司的Navigator浏览器及其他很多Internet客户端和服务器端产品使用了这些密码。

? 其他算法。包括在加拿大开发的用于Nortel公司Entrust产品的CAST、国际数据加密算法( IDEA )、传闻由前苏联安全局开发的GOST算法、由Bruce Schneier开发并在公共域发表的Blowfish算法及由美国国家安全局开发并用于Clipper芯片的契约密钥系统的Skipjack 算法。

安全加密方法要求使用足够长的密钥。短密钥很容易为穷举攻击所破解。在穷举攻击中,攻击者使用计算机来对所有可能的密钥组合进行测试,很容易找到密钥。例如,长度为4 0位的密钥就不够安全,因为使用相对而言并不算昂贵的计算机来进行穷举攻击,在很短的时间内就可以破获密钥。同样,单DES算法已经被破解。一般而言,对于穷举攻击,在可预测的将来,1 2 8位还可能是安全的。
对于其他类型的攻击,对称加密算法也比较脆弱。大多数使用对称加密算法的应用往往使用会话密钥,即一个密钥只用于一个会话的数据传送,或在一次会话中使用几个密钥。这样,如果会话密钥丢失,则只有在此会话中传送的数据受损,不会影响到较长时期内交换的大量数据。

2. 公共密钥加密

公共密钥加密算法使用一对密钥。公共密钥与秘密密钥相关联,公共密钥是公开的。以公共密钥加密的数据只能以秘密密钥来解密,同样可以用公共密钥来解密以秘密密钥加密的数据。这样只要实体的秘密密钥不泄露,其他实体就可以确信以公共密钥加密的数据只能由相应秘密密钥的持有者来解密。尽管公共密钥加密算法的效率不高,但它和数字签名均是最常用的对网络传送的会话密钥进行加密的算法。

最常用的一类公共密钥加密算法是RSA算法,该算法由Ron Rivest 、Adi Shamir 和LenAdleman开发,由RSA数据安全公司授权使用。RSA定义了用于选择和生成公共/秘密密钥对的机制,以及目前用于加密的数学函数。

3. 密钥交换

开放信道这种通信媒体上传送的数据可能被第三者窃听。在Internet这样的开放信道上要实现秘密共享难度很大。但是很有必要实现对共享秘密的处理,因为两个实体之间需要共享用于加密的密钥。关于如何在公共信道上安全地处理共享密钥这一问题,有一些重要的加密算法,是以对除预定接受者之外的任何人都保密的方式来实现的。

Diffie-Hellman密钥交换算法允许实体间交换足够的信息以产生会话加密密钥。按照惯例,假设一个密码协议的两个参与者实体分别是Alice和Bob,Alice使用Bob的公开值和自己的秘密值来计算出一个值;Bob也计算出自己的值并发给Alice,然后双方使用自己的秘密值来计算他们的共享密钥。其中的数学计算相对比较简单,而且不属于本书讨论的范围。算法的概要是Bob和Alice能够互相发送足够的信息给对方以计算出他们的共享密钥,但是这些信息却不足以让攻击者计算出密钥。

Diffie-Hellman算法通常称为公共密钥算法,但它并不是一种公共密钥加密算法。该算法可用于计算密钥,但密钥必须和某种其他加密算法一起使用。但是,Diffie-Hellman算法可用于身份验证。Network Associates公司的P G P公共密钥软件中就使用了此算法。

密钥交换是构成任何完整的Internet安全性体系都必备的。此外,IPsec安全性体系结构还包括Internet密钥交换( I K E )及Internet安全性关联和密钥管理协议( ISAKMP )。

4. 安全散列

散列是一定量数据的数据摘要的一种排序。检查数字是简单的散列类型,而安全散列则产生较长的结果,经常是1 2 8位。对于良好的安全散列,攻击者很难颠倒设计或以其他方式毁灭。安全散列可以与密钥一起使用,也可以单独使用。其目的是提供报文的数字摘要,用来验证已经收到的数据是否与发送者所发送的相同。发送者计算散列并将其值包含在数据中,接收者对收到的数据进行散列计算,如果结果值与数据中所携带的散列值匹配,接收者就可以确认数据的完整性。
常用的散列方法由RSA数据安全公司提出,包括MD2、MD4和MD5报文摘要函数。安全散列算法( SHA )是由美国国家标准和技术协会( NIST )所开发的标准摘要函数。散列可以单独使用,也可以和数字签名一起使用。

5. 数字签名

前面提到的公共密钥加密依赖于密钥对,而数字签名则依靠公共密钥加密的特性,即允许数据以实体密钥对中的秘密密钥来加密,以公共密钥来解密。发送者首先对于要签名的数据进行安全散列计算,然后对结果使用秘密密钥加密。而接收者首先进行相同的散列计算,然后对发送者所附加的加密值进行解密。如果两次计算的值能够匹配,接收者就可以确信公共密钥的主人就是对报文签名的实体,且报文在传送中并没有被修改。

RSA公共密钥加密算法可以用于数字签名。签名实体为待签名的数据建立散列,然后以自己的密钥对散列加密;证实实体则对接收到的数据进行相同的散列计算,使用签名实体的公共密钥对签名解密,并且比较所得的两个值。如果散列与解密的签名相同,则数据就得到证实。

数字签名有如下几种含义:

? 如果签名得到证实,说明所接收到的报文在从签名到接收的一段时间内未经任何改动。

? 如果不能证实签名,则说明或者是报文在传送过程中受到了破坏或篡改,或者是签名计算错误,又或者是签名在传送过程中被破坏或篡改。在上述任何情况下,未得到证实的签名并不一定是坏事,但是要求对报文重新签名并重传,以便最终能为接收者所接受。

? 如果签名得到证实,意味着与公共密钥相关联的实体是对报文签名的唯一实体。换言之,与公共密钥关联的实体不能否认自己的签名,这是数据签名的重要特性,称为不可抵赖。

还有其他机制可以实现数据签名,而RSA是其中应用最广泛的,并且已在大多数Internet产品中实现。

安全性关联

安全性关联是( SA ) IPsec的基本概念。安全性关联包含能够唯一标识一个安全性连接的数据组合。连接是单方向的,每个S A由目的地址和安全性参数索引( SPI )来定义。其中SPI是对RFC1825修改后的Internet草案中所要求的标识符,它说明使用SA的IP头类型,如AH或ESP。SPI为32位,用于对S A进行标识及区分同一个目的地址所链接的多个SA。进行安全通信的两个系统有两个不同的SA,每个目的地址对应一个。

每个S A还包括与连接协商的安全性类型相关的多个信息。这意味着系统必须了解其S A、与S A目的主机所协商的加密或身份验证算法的类型、密钥长度和密钥生存期。

密钥管理

如何管理密钥是Internet安全性专业人士面临的最复杂的问题之一。密钥管理不仅包括使用密钥协议来分发密钥,还包括在通信系统之间对密钥的长度、生存期和密钥算法进行协商。Internet工作组和研究团体对此已进行了大量工作,但是由于尚未达成一致,目前还没有发表任何R F C。

Internet安全性关联密钥管理协议( ISAKMP ) 为密钥的安全交换定义了整个基本构架。ISAKMP实际上是一个应用协议,协议中定义了用于系统之间协商密钥交换的不同类型报文,它在传输层使用UDP。

但是ISAKMP只是特定机制所使用的框架,而没有定义实际完成交换的机制和算法。这些年来在不同的建议中定义了大量的交换机制,通常以Diffie-Hellman密钥交换为基础。主要的提案包括:

? Photuris 。此提案基于Diffie-Hellman 算法,但增加了要求,即要求节点首先发送一个cookie (一个随机数),然后服务器给予应答,这样减少了否认服务攻击的威胁(否认服务攻击是由攻击者伪造源地址而导致的)。Photuris也要求通信各方都必须对协商好的密钥签名,以减少中间者攻击的危害(所谓中间者攻击,是指某个攻击者对系统的Alice冒充自己是Bob,又对另一个系统的Bob冒充自己是Alice )。

? Sun 公司的Internet协议的简单密钥管理( SKIP )。SKIP也是以Diffie-Hellman密钥交换为基础,但是它并不要求通信各方使用随机数来计算其密钥,而是要求使用静态的密码表。各方查找密码表中的秘密值,然后基于查到的秘密值来计算,并传送所算出的值。

? OAKLEY 。此机制与Photuris有某些相似特性,但在不考虑否认服务攻击的情形下,它提供不同的密钥交换模式。1998年秋,基于OAKLEY和SKEME ( Internet的安全密钥交换机制),Internet密钥交换最终在Internet密钥交换规范中得以定义。

读者应该注意到,人工密钥管理也是一个重要选项,而且在很多情况下是唯一的选项。人工方法要求个人单独交付密钥,并使用密钥来配置网络设备。即使在开放标准已经充分确定并且实现之后,人工
密钥管理仍将继续是一个重要选择,对于商业产品尤其如此。

实现IPsec

IP层安全性用于保护IP数据报。它不一定要涉及用户或应用。这意味着用户可以愉快地使用应用程序,而无需注意所有的数据报在发送到Internet之前,需要进行加密或身份验证,当然在这种情形下所有的加密数据报都要由另一端的主机正确地解密。

这样就引入了如何实现IPsec的问题,有如下三种可能方法:

? 将IPsec作为IPV4栈或IPV6栈的一部分来实现。这种方法将IP安全性支持引入IP网络栈,并且作为任何IP实现的一个必备部分。但是,这种方法也要求对整个实体栈进行更新以反映上述改变。

? 将IPsec作为“栈中的一块”( BITS )来实现。这种方法将特殊的IPsec代码插入到网络栈中,在现有IP网络软件之下、本地链路软件之上。换言之,这种方法通过一段软件来实现安全性,该软件截获从现有IP栈向本地链路层接口传送的数据报,对这些数据报进行必要的安全性处理,然后再交给链路层。这种方法可用于将现有系统升级为支持IPsec 的系统,且不要求重写原有的IP栈软件。

? 将IPsec作为“线路的一块”( BITW )来实现。这种方法使用外部加密硬件来执行安全性处理功能。该硬件设备通常是作为一种路由器使用的IP设备,或者更确切一些,是安全性网关,此网关为位于它后面的所有系统发送的IP数据报服务。如果这样的设备只用于一个主机,其工作情况与BITS方法类似,但如果一个BITW设备为多个系统服务,实现相对要复杂得多。

上述各种方法的差别不在于字面上,而在于它们的适用情况不同。要求高级别安全性的应用最好使用硬件方法实现;而如果系统不具备与新的IPsec兼容的网络栈,应用最好选择BITS方法。

隧道模式与透明模式

下图两个系统建立了S A,以便在Internet上安全地通信。其中一个系统产生网络业务流,经过加密或者签名,然后发送给目的系统。而在接收方,首先对收到的数据报进行解密或者身份验证,把净荷向上传送给接收系统的网络栈,由使用数据的应用进行最后的处理。两个主机之间的通信如同没有安全性头一样简单,而且数据报实际的IP头必须要暴露出来以便在Internet选路,因此这种方法称为使用S A的透明模式。

IPv6一对主机使用IPsec进行透明通信
一对主机使用IPsec进行透明通信

 

 

 

 

 

 

 

S A也可以用来将安全IP以隧道方式通过互联网络。见下图,来自系统A的所有IP包首先转发到安全性网关X,由X建立一条跨越Internet、目的地为安全性网关Y的隧道,由Y对经隧道方式传来的数据拆包并转发。安全性网关Y可能将包转发给本地互联网络内的任一主机B、C或D,也可能转发给外部主机,如M。这取决于源主机如何为这些包定向。如果S A目的节点是安全性网关,则称为隧道关联。即,隧道传送既可以在两个安全性网关之间进行(下图), 也可以在正规节点和安全性网关之间进行。因此,图中的主机M可以与安全性网关X或Y建立隧道连接,M所发送的数据报首先传送给安全性网关,然后经过网关解密或身份验证之后,再进行正确地转发,由此可见这是一种隧道方式。

IPv6IP安全性隧道
IP安全性隧道

 

 

 

 

 

 

 

 

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: IPV6

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。