




已阅读5页,还剩112页未读, 继续免费阅读
(通信与信息系统专业论文)icmpv6协议及其在linux下的接口技术.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c m p v 6 啡l 义及j c 化l i n u x 下的接u 拉术 摘要 在传统的i p v 4 体系中,为了提供麓错报告或差错纠f 机制,i c m p v 4 发挥 了重要的作用。 i p v 6 对i p v 4 的取代不能缺少i c m p 的支持,针对i p v 6 的特点,i e f t 提出 了i c m p v 6 的协议草案。1 c m p v 6 既是1 c m p v 4 、i g m p 、a r p 、r a r p 的超集, 同时也针对i p v 6 的具体特点,羽上述n 协议作了必要的优化和简化。 本文对1 c m p v 6 协议及相关技术知i p v 6 协议、组播监听者发现、邻居发现、 无状态地址自动配置等进行了比较广泛的研究,尤其对邻居发现协议及其在 u n i x 环境下的实现技术进行的深入的探讨。并提供了在l i n u x 环境下s o c k e t 接口编程的方法和实例,为今后的i p v 6 路由器的研究和丌发提供了一定的基础 和依据。 关键词:i c m p v 6 、邻居发现、瞒i 始套接口,p a c k e t 套接口,l i n u x c m i v 6 汕i 义艟il ( 1 il i m l x 下的接u 技术 a b s t r a c t i nt h et r a d i t i o n a li n t e r n e tp r o t o c 0 1v e r s i o n4 ( i p v 4 1h i e r a c h y , t h ei n t e r n e t c o n t r o lm e s s a g ep r o t o c o l ( 1 c m p ) h a sp l a y e da ni m p o r t a n tr o l ei ne r r o rr e p o r t i n g a n de r r o rc o r r e c t i o n t h e 】p v 6i san e wv e r s i o no fl pi p v 6u s e st h ei n t e r n e tc o n t r o l m e s s a g ep r o t o c o l ( i c m p ) a s d e f i n e df o ri p v 4 ,w i t han u m b e ro f c h a n g e s a c c o r d i n g t ot h ed r a f ts t a n d a r do fi c m p v 6p r o p o s e db yi e t ei ti sn o to n l yt h es u p e r s e to f i c m p v 4 ,i g m p ,a r pa n dr a r p ,b u ta l s ot a k e ss o m en e c e s s a r ys i m p l i f i c a t i o na n d o p t i m i z a t i o nb a s e do n t h ec h a r a c t e r i s t i c so fi p v 6 i ti sa ni n t e g r a lp a r to fi p v 6 t h i st h e s i st a k e se x t e n s i v er e s e a r c ho nt h ei c m p v 6p r o t o c o la n dt h er e l a t e d t e c h n o l o g i e ss u c ha sm u l t i c a s tg r o u pm e m b e r s h i pm a i n t e n a n c e ,n e i g h b o rd i s c o v e r y a n ds t a t e l e s sa d d r e s s a u t o c o n f i g u r a t i o n ,e s p e c i a l l y o nt h e n e i g h b o rd i s c o v e r y p r o t o c o la n dt h ei m p l e m e n t a t i o nd e t a i l si n t h eu n i xe n v i o m m e n t i ta l s og i v e st h e s o c k e t p r o g r a m m i n gi n t e r f a c em a d s o l l l e e x a m p l e su n d e rt h e l i n u xi no r d e rt o p r o v i d es o m eg r o u n d w o t kf o rf u r t h e rr e s e a r c ha n dd e v e l o p m e n to nt h ei p v 6r o u t e r k e y w o r d s :i c m p v 6 ,n e i g h b o rd i s c o v e l y ,r a ws o c k e t ,p a c k e ts o c k e t ,l i n u x v c m p v 6 协泌及其在l i n u x 下的接口技术 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献己在论文中作了明确的说明并表示谢意。 签名 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅 和借阅。本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复印手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:垃导师签名:继 f i 期:) 舯辱年如月巧日 c m p v 6m 议及1 c ml i n u 一f 的接口技术 第一章概述 i p v 4 ( i n t e r n e tp r o t o c o lv e r s i o n4 ,网际协议版本4 ) 应用在互联网已经2 0 多年,获得了巨大的成功。但是随着应用范围的扩大和应用层次的深入,i p v 4 也暴露出了它的不足之处,比如地址空间匮乏,不能提供良好的q o s ,移动性 不好等等。 为了解决i p v 4 所存在的一些问题,i e t f ( 互联网工程任务组,i n t e r a c t e n g i n e e r i n gt a s kf o r c e ) 于1 9 9 5 年所发布的r f c l 8 8 3 制定了一种新型的i p 协 议i p v 6 ( i n t e r a c tp r o t o c o lv e r s i o n6 ,网际协议版本6 ) ,1 9 9 8 年又发布r f c 2 4 6 0 1 1 对其进行了优化。这个协泌也被称作1 p n g ( 下一代网际协议,i p n e x t g e n e r a t i o n ) 。 对比i p v 4 ,i p v 6 有如下的特点,这些特点也可以称作是i p v 6 的优点:更 多的地址空间、简化的报头和灵活的扩展;层次化的地址结构;“即插即用”的 连网方式:网络层的认证与加密:服务质量的满足;对移动通信更好的支持。 i c m p ( 因特网控制报文协议,i n t e m e tc o n t r o lm e s s a g ep r o t o c 0 1 ) 是i p v 4 不可分割的组成部分,它为i p v 4 提供差错报告和差错纠正机制,以及主机和管 理查询的机制。网络软件在实现i p 的同时将i c m p 和i p 作为一个整体一起实 现。 在i p 发展的同时,i c m p v 6 ( 因特网控制报文协议,版本6 ,i c m pf o ri p v 6 ) 作为i p v 6 的一个补充被提出,在1 9 9 8 年i e t f 以草案标准( d r a f ts t a n d a r d ) 的 形式将这个协议发布f 4 。 下图比较出i p v 4 和i p v 6 的网络层总体结构,左右两图的中间层均为网 络层( n e t w o r kl a y e r ) 。 传输层( t r a n s p o r tl a y e r ) l 竺叫。:| 叫 l p v 4 j 漤; 嚣鞭; ! 薯i 蠢 j 器;1 、“一厂习| f 碓 数据链路堪( d a t al i n kl a y e r ) 图1版本4 和版本6 的网络层比较 i c m p v 6 协以及其在l i n u x 下的接口技术 在版本4 中,由于i p 在以太网的应用需要一个i p 地址和物理地址的映射 方法,人们提出了a r p ( 地址解析协议,a d d r e s sr e s o l u t i o np r o t o c 0 1 ) 来解决 这个问题。此后又为了解决自动配置i p 地址的问题,产生了r a r p ( 逆向地址 解析协议,a d d r e s s r e s o l u t i o n p r o t o c 0 1 ) 。这两个协议都位于网络层和数据链路 层之间,解决这两层之间的地址映射算法。而i g m p ( 因特网组管理协议,i n t e m e t g r o u p m a n a g e m e n tp r o t o c 0 1 ) 是为了i p v 4 的组播应用而提出的,在层次结构上 位于传输层与网络层之间。 在版本6 中,由于组播功能作为i p v 6 的必选功能出现,所以也就没有单独 的i g m p 协议:i c m p v 6 的邻居发现协议( n d p , n e i g h b o rd i s c o v e r yp r o t o c 0 1 ) 2 】代替了a r p ;r a r p 协议在某些文献 9 】中被认为已经取消,并由b o o t p 完 成其功能,但是i e t f 在2 0 0 1 年推出一个提案标准( p r o p o s e ds t a n d a r d ) 【1 5 , 作为i c m p v 6 的补充协议,它可以完成这个功能。在版本4 中4 个协议的功能 将由i c m p v 6 一个协议柬进行归纳,从其分组结构看来位于网络层之上,从其 功能看来位于传输层之下。 i c m p v 6 是i c m p v 4 的一个超集。从宏观上看来,i c m p v 6 在层次上更加清 晰;从具体实现上看来,无论是操作系统还是应用程序,处理i c m p v 6 都显得 效率更高。 i c m p v 6 的差错报文取消了源站抑制报文因为i p v 6 的优先级和流标签 允许路由器控制拥塞,丢弃最不重要的报文,不需要通知发送端放慢速率 9 ; 增加了分组过大报文。 i c m p v 6 增加了主机( h o s t ) 无状态地址自动配置和路由器发现功能,对于 i p v 6 的组网和移动性支持做出了极大的贡献。 目前的路由器使用的操作系统从过去的专用操作系统向通用操作系统进行 转变,这些通用操作系统很多都是u n i x 的分支,研究u n i x 环境下尤其是 l i n u x 环境下的i c m p v 6 接口技术具有重要的意义。 i e t f 所发布的r f c 3 4 9 3 2 0 0 3 1 6 年nr f c 3 5 4 2 2 0 0 3 7 】对u n i x 环境下的 i p v 6 编程接口作了规范性的建议,但是u n i x 各个分支操作系统的具体实现不 尽相同,本文以l i n u x 为例研究其具体实现的方法。 随着i p v 6 技术的进步和完善,i c m p v 6 也必然会有内容的扩充和功能的扩 c m p v 6 洳泌及儿柏:l i n u x 下的接口技术 展,例如:1 9 9 8 年i e t f 发布的i c m p v 6 还没有包括逆向邻居发现,但是在2 0 0 1 年i e t f 就推出了逆向邻居发现协议来作为邻居发现协议的扩展。 与此同时操作系统也在更新。r e d h a tl i n u x9 0 除了实现所有的邻居发现报 文,还增加了新的支持移动i p 的路由器通告间隔选项和家乡代理信息选项。本 文对i c m p v 6 接口技术的研究仅仅只是个丌端,更详细和深入的讨论和实现有 待于更多人的加入和实践。 本文经常提到主机、节点、路由器这三个概念。严格地说,这三者所涌盖 的外延有所交叉在这里进行规范:节点指的是网络拓扑示意图中具有网络数 据的发送功能和接收功能的,位于网络之间的汇接点以及网络的终端连接点; 主机特指没有网络数掘的转发功能的节点,路由器特指专门用来转发网络数据 的节点。 本文在描述各种报文的格式的时候会用到“字节”和“长字”的单位概念, 为避免引起混淆,本文规定字节为8 比特,长字为3 2 比特。 本文在对协议的描述上引用了一些专用术语和简称,索引在附录c 。 本文所涉及的源代码均附在附录a 。 i c m p v 6 协泌艘其在l i n u x 下的接口技术 第二章i p v 6 协议简介 i p v 6 是继i p v 4 以后,i p 协议一个新版本。由i p v 4 到i p v 6 的改变主要集中 在以下几个方面: 分组头的简化对分组头进行了简化和优化,下图是 p v 4 分组格 式: 图2i p v 4 分组格式 除了版本字段以外,所有的字段在i p v 6 中都有改变: 头部长度字段被去掉i p v 6 头部长度是固定的4 0 个字节,这样有利 于路由器快速处理分组报文; 服务类型( s e r v i c et y p e ) 被改为传输类型( t r a f f i cc l a s s ) ; 报文总长度字段改为净荷长度,即i p 分组报文的载荷长度: 标识字段、标志字段以及分段偏移量字段由于在i p v 6 中不支持中继节 点的分段而取消。r f c 2 4 6 0 1 9 9 8 1 1 要求,所有使用1 p v 6 的链路上的 m t u 值不小于1 2 8 0 ,如果某条链路无法达到这一要求,那么在比i p 更低的层上应该有相应的分片和重组机制 1 。r f c 2 4 6 1 - 1 9 9 8 1 2 强烈建 c m p v 6 协议技c “l i n u x 下的接口授术 议i p v 6 的节点实现“路径m t u 发现协议”,以便于发现和利用大于 1 2 8 0 的m t u 值。r f c 2 4 6 0 1 9 9 8 1 1 1 还规定,不允许报文在到达目的之 前被中间节点或者路由器将其分片,分片的工作必须由源节点来完成, 分片的重组则由目的节点来完成: 生存期字段明确地改为跳限字段; 协议字段被i p v 6 中的下一头部字段所代替,这在下节中有详细描述: i p v 6 没有头部校验和: 源i p 地址和目的i p 地址扩展为新的1 2 8 比特的i p v 6 地址。 地址容量的扩展一一i p v 6 把i p 地址的大小从3 2 位增至1 2 8 位,可以支持更多的地址层次,更大数量的节点,以及更简单的地址 自动配置,关于i p v 6 的地址结构将在第三章介绍,地址自动配置将在 第七章介绍; 支持扩展和选项的改进一一i p 头选项编码方式的修改导致更加高 效的传输,在选项长度方面更少的限制,以及将来引入新的选项时更 强的适应性; 数据流标签的能力加入一个新的能力,使得那些发送者要求特 殊处理的属于特别的传输”流”的报文能够贴上”标签”,比如非缺省质量 的服务或者”实时”服务; 认证和保密的能力为支持认证,数据完整性以及( 可选的) 数据 保密的扩展都在i p v 6 中说明。 2 1i p v 6 分组头格式 版本i传输类型l流标签 净荷长度f 一头部跳限 源地址( 4 个长字。为节省篇幅,i p v 6 地址在以后的示意图中只用一行表示) 目的地址( 4 个长字) 图3i p v 6 分组头的格式 i c m p v 6 协议及其在l i n u x 下的接口技术 传输类型( t r a f f i cc l a s s ) 字段8 比特,该字段被初始节点和( 或) 转发路由器用于标识和区分不同i p v 6 报文的类别或优先级。这个字段 在目前为止还没有成熟的应用,这是一个发展中的课题,本文不做讨 论。; 流标签( f l o wl a b e l ) 字段2 0 比特,该字段用于源节点标识那 些需要i p v 6 路由器特殊处理的报文的序号( s e q u e n c e s ) ,比如非缺 省质量的服务或者“实时”服务。流标签的应用一般来说就是q o s 的 问题,这也是一个很大的课题,本文也不做讨论。; 净荷长度字段1 6 比特,无符号整数。i p v 6 报文的有效载荷长度, 也就是以字节为单位,在这个报文中i p v 6 头后面的其余部分的长度。 注意,扩展头将被认为是有效载荷的一部分,计算在长度里; 下一头部字段8 比特选择器。标识紧接在i p v 6 头后面的下一 个头扩展头的类型。使用与i p v 4 协议字段( 由r f c l 7 0 0 1 9 9 4 1 9 所指 定,后来改由w w - 9 4 i a n a o r g 来维护) ; 跳限字段8 比特,无符号整数。在每个传输此报文的节点处递 减1 。如果跳数限制减为零,就抛弃此报文; 源i p 地址字段1 2 8 比特,i p 报文发送者的地址: 目的i p 地址1 2 8 比特,i p 报文的预期接收者的地址( 如果存在 路由头的话,可能不是最终的接收者) 。 2 2i p v 6 扩展头 根据r f c 2 4 6 0 - 1 9 9 8 1 规定,在i p v 6 头与上层协议头之间,可以包含可选的 网络层信息,这些信息以特定的格式出现,被称之为扩展头。一个i p v 6 头可以 不携带扩展头,也可以携带多个扩展头,每个扩展头由前一个头中的“下一头部” 字段标识。具体的扩展头选择器代码请参阅r f c 2 4 6 0 - 1 9 9 8 1 1 。 以下是一个i p v 6 分组报文的例子: 6 c m p v 6 悱泌及j l :l i n u x 下的接口技术 版本 i 传输类型 l 流标签 净荷睦度下一头= o ( 逐跳)跳限 源地址 目的地址 下头= 4 3 ( 路由)扩展头长度 逐划选项 下一头- - 4 4 ( 分片)扩展头长度 路由信息 下一头= 5 1 ( 认证)保留分段偏移拦 lm 分配标识符 f 一头= 6 ( t c p )扩展头长度 认证数据 t c p 头及数据 图4一个i p v 6 报文的例子 除了逐跳选项头和某些情况之下的目的选项头之外,在到达目的节点之前, 递送报文的路径上的其它节点不会检查和处理报文的扩展头。节点对i p v 6 头的 “下一头部”字段的常规处理将是调用处理模块来处理第一个扩展头,或者,如 果不存在扩展头,就处理上层头( 这旱的“上层”不单指传输层,i c m p 也是“上 层”的一种) 。每个扩展头的内容和语义决定是否处理下一个头。因此,扩展头 必须严格按照它们在报文中出现的次序来处理,不允许接收者搜索整个报文来寻 找某个特定类型的头,并且在处理所有曲面的头之前处理它 1 】。 逐跳选项头携带了报文的传送路径中的每个节点都必须检测和处理的信息, 包括源节点和目的节点。逐跳选项头如果存在,就必须紧跟在i p v 6 头后面。i p v 6 头中“下一头”字段的值为零表示存在这个头。 如果一个头的处理结果要求节点处理下一个头,但是节点无法识别这个头的 “下一头”字段值,那么节点就应陔抛弃这个报文,并且给报文的源节点发送一 个i c m p “参数出错”的报文,i c m p 指针字段包含那个无法识别的值在原报文 中的偏移量。如果节点遇到i p v 6 头以外的其他头中的“下一头”字段的值为零 的情况,应做相同的处理【1 。 关于i p v 6 的扩展头的详细描述请参阅r f c 2 4 6 0 1 9 9 8 t 】,这里不做详细探 讨。 c m p v 6 协议及其在l i n u x 下的接1 3 技术 第三章i p v 6 地址结构 i p v 6 的地址结构是i p v 6 协议的基石。它继承了i p v 4 地址结构中成熟的部分, 例如地址的层次结构;同时也抛弃了i p v 4 地址中有缺陷的部分,例如广播地址。 t p v 6 地址从逻辑上浣大致归为三种。 单播地址( u n i c a s ta d d r e s s ) :标识一个单独的接口。递交给一个单 播地址的报文通过递交给用这个地址标识的接口来实现。 任播地址( a n y e a s ta d d r e s s ,又译为泛播地址) :标识一组( 一般 来说从属于不同的节点) 接口。发送给一个任播地址的报文实际上被 递交给用任播地址标识的多个接口中的一个。 组播地址( m u l t i c a s ta d d r e s s ,又译为多播地址) :标识一组( 一般 来说属于不同的节点) 接口。发送给一个组播地址的报文实际上被递 交给用组播地址标识的每个接口。i p v 6 没有广播地址,所有需要用广 播来实现的功能将由组播来取代。 各种类型的i p v 6 地址针对接口而不是节点。 i p v 6 的单播地址指向的是一个接口。由于接1 3 是属于节点的,那么这个节 点上的任何一个接口的单播地址都可以标识该节点。 所有的接口都必须至少有一个本地链路单播地址,但是它可以有许多其它类 型和各种范围的i p v 6 地址,比如全球单播地址、任播地址、组播地址。对于那 些不接收非邻居节点的i p v 6 报文以及不向非邻居节点发送i p v 6 报文的接口来 说,它不需要一个比本地链路地址范围更广的单播地址,这样更便于点对点接口 的通信。但是有一个例外:一个应用为了某种目的把多个物理接口看成是一个逻 辑接口。这种情况出现在需要把负载均衡地分配给各个物理接口的时候,这时, 多个接口就可能共用一个单播地址。 i p v 6 沿用了i p v 4 子网前缀( p r e f i x ) 的结构,一个子网前缀与一个链路相关 联,一个链路可以对应多个子网前缀。 y x ,其中y 是前缀的1 6 进制表达式 3 1i p v 6 地址划分 子网前缀在本文中用以下的表示方法 x 是前缀的比特数。 从i p v 6 地址的数字格式上来看,有以下的类别划分 c m p v 6 协议及祚l i n u x 下的接口技术 地址类型二进制前缀i p v 6 符号表示 未指派地址 0 0 0 ( 1 2 8 比特) :1 2 8 回环地址 0 0 i ( 1 2 8 比特) :1 1 2 8 组播地址1 1 1 1 1 1 1 1 ( 8 比特)f f 0 0 :,8 本地链路单播地址 1 1 1 11 1 1 01 0 ( 1 0 比特)f e 8 0 :,1 0 本地网点单橘地址 1 1 1 11 1 1 0 1 1 ( 、o 比特)f e c 0 :,1 0 全球单捅地址其他 图5i p v 6 地址的划分 任播地址取自单播地址的范围,不能从语法上与其他单播地址相区分。 3 1 1 单播地址 单播地址由予网前缀和接口标识符( i n t e r f a c ei d e n t i f i e r s ) 组成。与i p v 4 的 无类域问路由相似,i p v 6 的单播地址可以由任意长度的前缀来聚合。 i p v 6 的单播地址有三种:全球单播地址( o l o b a lu n i c a s ta d d r e s s ) 、本地链 路单播地址( l i n k 1 0 c a lu n i c a s t a d d r e s s ) 和本地网点单播地址( s i t e l o c a l u n i c a s t a d d r e s s ) 。而全球单播地址又根据一些特定的目的分为几类,如嵌入i p v 4 地址 的i p v 6 地址、n s a p 地址等等。 本地链路地址用于一个孤立链路的连接以及在没有分配全球单播地址时节 点之间的连接。本地链路地址的格式是“f e 8 0 :x x x x :x x x x :x x x x :x x x x ”, 后面8 个字节是接口标识符。 本地网点地址用于一个孤立的网点的连接。二进制格式为“1 1 1 1 1 1 1 0 1 ll s u b n e ti di 接口标识符”,“l ”是连号符。当然路由器不会转发以本地网点地址 为源地址和目的地址的报文。 地址0 :o 为末指派她址( u n s p e c i f i e d a d d r e s s ) ,它不能被分配给任何节点, 因为它表示没有i p 地址。它也不能作为任何i p 报文的目的地址和任何i p 路由 扩展头的目的地址。一般来说它用在地址的自动配置上。 地址0 :1 被称为回环地址( l o o p b a c ka d d r e s s ) 。它也不能分配给任何物理 接1 2 1 ,一般来说它用于节点给自己发送报文。这个地址被看作是具有本地链路范 围,并且被当作是一个虚拟接口( 标准称呼就是回环接口) 的本地链路单播地址。 3 1 1 。1接口标识符 i p v 6 单播地址中的接口标识符部分用来标识链路上的接口,有时候,这个 标识符来自于链路层地址。在个相对更大的范围内,这个标识符应该是唯一的。 c m p v 6 协议及其在l i n u x 下的接口技术 r f c 3 5 1 3 2 0 0 3 5 建议在一个链路上不要给不同节点的接口赋予相同的标识符, 除非这些节点属于不同的子网。当然多个接口分配一个标识符这种情况有时是不 可避免的,比如多个物理接口位于一个节点上,而应用中要求这个节点上的若干 个接口有同样的标识符。 除了那些以“0 0 0 ”( 二进制) 开始的单播地址以外,所有的单播地址的接口 标识符都是6 4 比特长的。这个标识符将构造成修正e u i 6 4 ( m o d i f i e de u i 一6 4 ) 格式而作为i p v 6 地址的一部分。基于接口标识符的修正e u i 一6 4 格式可能是全局 范围的,也可能是局部范围的。这取决于接口标识符是否是全局性的。 从i e e ee u i 6 4 格式转化为修正e u i 。6 4 格式的方法参见r f c 3 5 1 3 2 0 0 3 5 1 的附录a 。 3 l 1 1全球单播地址 全球单播地址的格式如下: fn 位m 位1 2 8 i 1 m 位 l 全球路由前缀子网标识接口标识符 图6全球单播地址的格式 全球路由前缀是分配给某个网点( 比如子网或者链路的聚合) 的前缀值。子 网标识就是这个网点内的某个链路的标识符。接口标识符前面已经介绍。 对于那些不是以二进制的“0 0 0 ”开始的全球单播地址而言,n + m = 6 4 。其它 的全球单播地址没有这个限制。 3 1 2 任播地址 任播地址指定的是多个接口,这些接口一般来说在不同的节点。发送给一个 任播地址的报文,将被发送给路出意义上最“近”的一个接口。任播地址在单播 地址的范围内,并且不能从它的格式上与其他单播地址区分。一旦某个单播地址 被分配给多个接口,那么这些接口就属于这个任搔地址。这些接口所在的所有节 点必须清除地意识到这是一个任播地址。 对于任何的任播地址,它都应该有一个尽可能长的p 前缀来识别这个任播地 址所涵盖的拓扑结构。在这个拓扑结构内,这个任播地址必须保证路由系统入口 的唯一性。从这个拓扑域外看来,这个任播地址必须能够聚合成为唯一的路由入 口。 0 c m p v 6 协泌发j e 托l i n u x 下的接口技术 最坏的情况是:p 前缀为0 ,也就是说任播地址没有拓扑域的限制。那么这 个任播地址以及路由系统必须能够保证报文在穿越整个i n t e r n e t 的时候的路径的 唯一性。可以想象这样的任播地址的要求是非常严格的。 任播地址的一个可能的应用是标识一个i n t e m e t 服务供应组织的一组路由 器。携带以这些地址作为中问地址的i p v 6 路由扩展头的i p v 6 报文可以递交给这 个组织的路由器。还有一个可能应用就是任播地址标识一组通往某个子网的路由 器,或者一组提供某个路由域的入口。目前有一些i p v 6 移动局域网的技术也应 用了任播地址来简化移动节点的漫游问题。 3 1 3 组播地址 i p v 6 组播地址标识一组接口,一般来说是不同节点的多个接口。一个接口 可以属于多个组,组播地址的格式如下: 8 位 4 位f l a g4 位s c o p 1 1 2 位 1 1 1 1 1 1 1 1 0 0 0 t s t o p 组标识符 图7组播地址格式 f l a g :0 0 0 1 临时:0 0 0 0 永久。 s c o p : 卜保留; l 限于本节点的接口,仅仅在回环组播的时候使用 2 限于本地链路,这与单播的情形类似: 3 保留; 4 限于管理域,范围基于管理配制; 5 限于网点,这与单播的情形类似; 6 7 未指派; 8 限于组织; 9 p 一末指派: e i 一全局: f 保留。 组标识符标识在s c o p 指定域内的组播组a c m p v 6 协议及其在l i n u x 下的接口技术 对于永久分配的组播地址,不同的s e o p 域有一定的逻辑关系。比如: f f 0 1 :1 0 1 表示本地接口上所有的n t p 服务器;f f 0 2 :1 0 l 表示本地链路上所有 的n t p 服务器;f f 0 5 :1 0 l 表示本地网点上所有的n t p 服务器;f f o e :1 0 l 表 示i n t e m e t 上所有的n t p 服务器。它们之间有一定的逻辑关系,比如f f o e :1 0 l 包含了f f 0 5 :1 0 1 。 但是临时分配的组播地址只有在给定s c o p 域内有其意义。也就是说某个网 点上的f f l 5 :1 0 1 这样一个组播地址不仅与另一个网点上的f f l 5 :1 0 l 没有任 何关系,也与f f i e :1 0 1 、f f l 2 :1 0 1 这样的仅仅是s c o p 域不同的组播地址不 相关,甚至和f f 0 5 :1 0 1 这个永久分配的组播地址都没有任何逻辑上的牵连。 路由器不会转发那些超出组播域的组播报文,而节点也不应该发起s t o p 域 为0 ( 保留) 的组播报文,如果收到这样的报文,应当丢弃。节点也不应该发起 s c o p 域为0 x f ( 保留) 的组播报文,对于这样的报文,其处理方式类似于对于s c o p 为o x e ( 全局) 的报文。 已经预定义的组播地址有: 保留组播地址f f 0 0 :,f f 0 l :,f f 0 2 :,f f 0 3 :,f f 0 4 :,f f 0 5 :,f f 0 6 :,f f 0 7 :, f f 0 8 :,f f 0 9 :,f f o a :,f f o b :f f o c :f f o d :,f f o e :,f f o f : 所有节点f f 0 1 :1 ,f f 0 2 :1 所有路由器 f f 0 1 :2 ,f f 0 2 :2 f f 0 5 :2 被请求节点 f f 0 2 :1 :f f 0 0 :0 0 0 0 f f 0 2 :1 :f f f f :f f f f 图8预定义的组播地址 如果其它的组播地址要用以上这些组播地址的组标识( 1 1 2 比特) 并且s c o p 域并非表中所列举,那么不允许t 标志为0 ( 永久) 。 被请求节点组播地址是节点的任播地址或者单播地址的函数。在 r f c 2 4 6 1 1 9 9 8 1 2 中的描述比较精确:“该地址是被请求目标节点的i p v 6 地址的 函数,它本身是一个本地链路的组播地址”。实际上就是简单地把i p 地址的最后 2 4 b i t 补在f f 0 2 :1 :f f 1 0 4 这个前缀后面。由于它不包含i p 地址的高位信息, 那么就有多个接口对应到同一个被请求节点组播地址的可能性。 3 2 标识节点所需的地址 实现i p v 6 的主机必须组织以下的地址来标识自己 c m p v 6 协议及j 在l i n u x 下的接口技术 每个接口上的本地链路地址: 节点的单播地址以及任播地址: 回环地址: “所有节点”组播地址; 每一个单播地址和任播地址所对应的“被请求节点”组播地址 本节点所属的其它组播组的组播地址。 相应的,支持i p v 6 的路由器必须有以下的地址: 除了那些主机必须组织的地址之外,路由器还需要有以下地址柬标识自己 扮演路由器角色的每个接口的子网路由器任播地址; 其它被配置好的任播地址: “所有路由器”组播地址。 c m p v 6 协议及其在l i n u x 下的接口技术 第四章i c m p v 6 协议 节点使用i p 协议发送数据。为了保证i p 能够成功完成这个任务,最初的 i c m p 作为配套的协议来实现差错报告、路由发现和诊断等等。 i e t f 把r f c 7 9 2 1 9 8 1 所定义的i c m p 协议作了大量的修改,最终形成了一 个新的协议,称之为i c m p v 6 。协议主体在r f c 2 4 6 3 - 1 9 9 8 1 4 1 中描述,此外还有 一些应用协议,比如邻居发现协议( 第七章) 和无状态地址自动配置协议( 第六 章) ,本章描述r f c 2 4 6 3 1 9 9 8 4 1 的规定。 i c m p v 6 除了实现差错报告、路由发现( 由邻居发现协议实现) 和诊断外, 还实现了传送组播组成员信息的任务,这个功能在先前由i g m p 实现:另外, i c m p v 6 实现了地址解析( 由邻居发现协议实现) ,在这之前由a r p 实现。所有 i c m p v 6 协议及其配套协议都使用i c m p v 6 报文,在i p v 6 分组头及扩展头中用 5 8 来标识。 i p v 6 的节点使用t c m p v 6 的差错报文来反映处理分组时遇到的错误,用信息 报文来完成其它网络层的功能比如用“p i n g ”来进行诊断。以下介绍基本的 i c m p v 6 报文格式。 4 1 报文格式 i c m p v 6 报文总体上被分为两种类型:差错报文( e r r o r m e s s a g e s ) 和信息报 文( i n f o r m a t i o nm e s s a g e s ) 。两种报文的区别在于报文类型字段值的最高比特位, 为0 则是差错报文,反之则为信息报文。因此,差错报文的报文类型从0 到1 2 7 : 信息报文的类型从1 2 8 到2 5 5 。 所有的i c m p v 6 消息前面都有一个i p v 6 头( 以及某些扩展头) ,i c m p v 6 报 文头由与它相邻的前一个头中的“下一头”字段值5 8 所标识( 这个值与i c m p v 4 有所不同) 。i c m p v 6 消息都有相同的格式: i堕塑! 堂星堡 l 图9i c m p 扩展头的格式 已经定义的i c m p v 6 报文类型有 c m p v 6 咖波及j i 机l i n u x 下的接1 5 1 技术 1目的不可达; 2 报文太长: 3超时; 4 参数错: 1 2 8 回应请求: 1 2 9 回应应答; 1 3 0 组成员关系查询: 1 3 1 组成员关系报告: 1 3 2 组成员关系中止 1 3 3 路由器请求; 1 3 4 路由器通告: 1 3 5 邻居请求; 1 3 6 邻居通告: 1 3 7 重定向消息 4 2 源地址 一个送出i c m p v 6 报文的节点在计算校验和以前要在i p v 6 头中决定源i p 地 址和目的i p 地址。如果节点有多个的单播地址,它必须按以下的原则选定源地 址: 如果报文是对发往该节点的某单播地址进行响应的,那应答报文 的源地址必须是这个单播地址; 如果报文是对发往以该节点为组员的组播组或任播组的报文进行响 应的,那麽应答报文的源地址必须是一个属于该组播组或任播组的接 口的单播地址: 如果报文是对发往一个并不属于浚节点地址的报文进行响应的,那 麽源地址必须是属于该节点且最有利于诊断错误的那个单播地址。比 如,如果报文是对一个不能正常转发包的行为进行响应的,源地址就 是那个属于转发包失败的接口的单播地址; 另外,在转发报文到目的地时,必须使用节点的路由表来决定由哪 个接1 2 1 转发报文,属于浚接口的单播地址作为报文的源地址。 c m p v 6 协议及其在l i n u x 下的接口技术 4 3 报文处理规则 应用程序应该按以下规则处理接收到的i c m p v 6 报文: 将不知道类型的1 c m p v 6 差错报文送往上层协议; 丢弃不知道类型的i c m p v 6 信息报文; 所有的i c m p v 6 差错报文在不超过最小m t u 的情况下,包括尽可 能大的引起出错的报文; 在以上的情况中,i p 层应用程序把i c m p v 6 差错报文传送到上层协 议的进程。取出原报文中的上层协议字段( 在i c m p v 6 差错报文的报 文体中) ,用来选择合适的上一层进程来处理错误。如果原报文含有 一个很大的扩展头,那麽有可能上层协议类型并没有包含在i c m p v 6 差错报文中。原因是为了满足最小m t u 的限制,原报文被切断了。在 这种情况下,丢弃差错报文。 应用程序在发送i c m p v 6 报文的时候,则应遵循以下原则: 如果接收情况为下列之一,则不允许发送i c m p v 6 差错报文: 一个i c m p v 6 差错报文: 一个预定发往i p v 6 组播地址的报文( 这种情况有两个例外: 分组过大报文这是为了允许路径m t u 发现在i p v 6 组播模式 下工作;代码为2 的参数出错报文报告一个不认识的i p v 6 选项) : 一个链路层的组播报文,或者链路层的广播报文( 以上的 两种例外情况在这里也适用) ,或者 一个源地址并不能唯一标识某节点的包,比如:未指派地 址,i p v 6 组播地址,或一个i c l d p v 6 报文发送者知道的i p v 6 任播 地址。 为了限制由于发送i c m p v 6 差错报文引起的带宽和转发的代价,一 个i p v 6 节点必须限制它发送的1 c m p v 6 差错报文的频度。当源站发送 一串错误的包,并且没有注意到由此产生的i c m p v 6 差错报文的时候, 这种情况就可能发生。 6 i c m p v 6 协 义及l e d :l i n u x 下的接口技术 4 4 i c m p v 6 差错报文 4 4 1 目的不可达报文 当i p 报文因为除了拥塞之外的原因而不能发送到其指定目的地的时候,路 由器,或者源节点的i p 层,将产生目的不可达报文。由于拥塞而丢弃i p 报文不 会产生目的不可达报文,这一点和i c m p v 4 不同。 类型= 1 1代码1校验莆 保留= o 在不超过最小i p v 6 m t u 的情况r ,包括了尽可能大的引起山错的包。 图1 0目的不可达i c m p 报文格式 已经定义的代码字段有: 0 :没有路由到目的传送失败的原因是由于转发节点上的路出表 中缺少对应的表项: 1 :同目的的通讯由于管理被禁止,比如:防火墙过滤: 3 地址不可达,比如:不能把i p v 6 地址映射成相应的链路层地址, 或某种链路层特定的错误: 4 端口不可达对收到的包传输层协议( 如u d p ) 没有监听者且 传输层协议没有别的措施来通知发送者: 当节点收到i c m p v 6 目的不可达报文时,必须通知上一层进程。 4 4 2 分组过大报文 本报文只能由路由器发出作为对因为分组过大超过了出口链路的m t u 而 不能转发的回应。这个报文中的信息在发现路径m t u 的过程中使用。 类型= 2l代码= o1校验和 晟火传输单元= r 一跳链路的最大传输单元。 在不超过最小i p v 6 m t u 的情况l 、,包括了尽可能人的引起出错的包。 图1 1分组过大消启、i c m p 报文格式 发送本报文是i c m p v 6 差错报文处理规则所插述到的例外之一。园为不象其 c m p v 6 协泌及其在l i n u x 下的接口技术 它的报文,它的发送是作为接收到有着i p v 6 组播地址、链路层组播地址和链路 层广播地址的包的回应。 节点接收到分组过大报文必须将其送到上层进程。 4 4 3 超时报文 如果路由器收到一个跳数限制为0 的i p v 6 报文,或是它将跳数限制减去1 后变为o ,那这个路由器会丢弃这个报文,并且发一个代码为0 的i c m p v 6 超时 报文给源站点。这种情况通常意味着一个路由环路或是初始的跳限数值太小。 类型= 3 l代码l校验和 保留= o 在不超过最小i p v 6 m t u 的情况下,包括了尽可能大的引起出错的包。 图1 2超时i c m p 报文格式 该消息中已经定义的代码有: o - 传送过程中超过了跳数限制; 1 分片重组超时。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京市平谷区教育委员会所属事业单位面向应届毕业生招聘教师140人考前自测高频考点模拟试题及答案详解(夺冠)
- 2025福建厦门市集美区海凤实验幼儿园非在编人员招聘1人考前自测高频考点模拟试题及答案详解(夺冠)
- 2025广东佛山市顺德区公办中小学招聘教师92人(编制)考前自测高频考点模拟试题及答案详解(考点梳理)
- 2025年甘肃省平凉市崆峒区殡仪馆招聘合同制工作人员模拟试卷附答案详解(完整版)
- 2025年金华市卫生健康委员会所属金华市中医医院招聘工作人员7人(第一批)模拟试卷及答案详解(网校专用)
- 2025年湖南省郴州桂阳县龙潭街道城镇公益性岗位招聘模拟试卷及答案详解(名校卷)
- 2025年甘肃省兰州市西固区中医医院招聘12人模拟试卷附答案详解(黄金题型)
- 2025贵州文化旅游职业学院第十三届贵州人才博览会引才模拟试卷及答案详解(名校卷)
- 2025年福建省宁德人民医院招聘1人考前自测高频考点模拟试题及1套参考答案详解
- 2025年临沂莒南县教体系统部分事业单位公开招聘教师(1名)考前自测高频考点模拟试题及答案详解(新)
- 麻醉恢复室护理要点
- 心力衰竭的全程管理
- DB4201∕T 630.1-2020 中小学生研学旅行 第1部分:服务机构评定与服务规范
- 初中英语英语3500个单词分类大全
- 数学评比活动方案
- 三年级上册《快乐读书吧》阅读练习题
- TCPUMT 034-2025 工业数字孪生 数字模型与数据集成交换要求
- 2025年餐饮外卖行业绿色包装解决方案及市场前景研究报告
- 曹植的故事课件小学生
- 【课件】工作危害分析法(JHA)专项培训课件丨
- 中医理疗课件
评论
0/150
提交评论