ICMPv6相关协议分析在linux下验证

4星(超过85%的资源)
所需积分/C币:37 2014-01-20 19:52:41 18.14MB PDF
19
收藏 收藏
举报

06年的研究生论文 报文总体上被分为两种类型�差错报文和信息报文,看看吧,会有收获
西南交通大学硕士研究生学位论文第1页 第一章绪论 1.1课题的国内外研究现状 Pv6协议最初的草案是19年由Cso公司的 Steve Deering和Noka公 司的 Robert hinden起草完成的(即RFC883)。198年,ITF对其进行了 较大改进,形成了现有的PPv6协议(RFC24602).v6的其他标准也陆续 由卫TF的相关工作组制定出来。CMPv6作为mv6整体中的一部分,1995 年12月 ICMPV6的第一个协议规范RCl88出台,1998年,改进之后形成 了现有的 ICMPv6协议(RFC24653),其它相关协议如邻居发现协议 (RFC24614)、mv6无状态地址自动配置协议(RFC2462)、组播侦听报 文协议(RFC2710)、逆向邻居发现协议(RFC31228)也先后制定出来。 随着对mPv研究的深入,国内外越来越多的厂商开发了适于Pv6的软硬 件产品,硬件方面如在2002年12月, Xelerated正式推出了业界第一款支持 IPv6的商用网络处理器,同时该公司还提供了Pv相关开发工具以及代码库 软件。软件方面目前支持v的操作系统包括 Solans、Linx、BSD、 SunOs、 Digital UNⅸX、 windowsⅫP等,路由软件有 Gated、MRT、zeba、COS、 Nokia、 Telebit等就mv6中的 ICMPv6来说, freeBSD, REDHAT Linux、微软 Windows 2005上版本中都随IPv6协议栈带有CMPv6代码。国外的研究组织一直 没有停止对它的研究奴Kame主要从事BSD操作系统下Pv6协议的研究、 USAG1从事 Linux操作系统下mv6协议的研究:而国内目前对v6的协 议进行分析研究的只有清华大学和中国科技大学等几所大学,专门对 ICMPv6 协议的研究相对更少,目前只有兰州理工大学在 Windows操作系统下对其进 行了分析研究;在Inux操作系统下的研究工作目前还没有。基于以上情 况,本文将结合一系列RFC标准文档,对 ICMPV6相关协议进行分析,并完 成在Lux平台下的协议验证。 1.2论文主要研究内容 论文研究工作如下 对 ICMPy6协议、邻居发现协议、组播侦听者发现协议的报文格式、 报文字段、处理规则的综述; ●对 ICMPv6协议、邻居发现协议、组播侦听者发现协议内容的介绍; 西南交通大学硕士研究生学位论文 第2页 ●对 ICMPy6协议、邻居发现协议、组播侦听者发现协议主要功能、工 作过程的详细分析 ●编写 ICMPv6报文侦听与发现程序,为验证各协议做准备; 在 Linux下搭建实验平台,向中国教育网v6试验床提出加入申请, 利用所获得的IPv6地址网段配置实验主机和路由器,通过 Tunnel broker12 以隧道方式连入PPv6试验床,利用 ICMPye报文侦听与发现程序及其它辅助 工具对 ICMPv6相关协议的工作过程、主要功能进行验证,与RFC文档做对 1.3论文结构安排 论文结构安排如下: 第一章绪论讲述了ICMv6及其相关协议的国内外研究情况,本论文的 主要研究内容。 第二章对 ICMPv6协议的报文格式、处理规则做介绍,详细分析 ICMPV6 协议的差错报文和信息报文,并对 ICMPV6和ICMP做比较 第三章简要介绍邻居发现协议的内容及其报文格式,对邻居发现协议的 主要功能进行分析。 第四章简要介绍组播侦听发现协议的内容及其报文格式,对组播侦听发 现协议的工作过程作了描述。 第五章是 ICMPv6侦听与发送程序的设计与实现部分,它们用来对 ICMPV6相关协议在 Linux下进行验证。 第六章是对 ICMPV6相关协议的验证过程。 结束语部分对本论文的主要工作做总结,对实验结果做分析,并提出该 课题进一步研究的个人见解。 本文对协议描述时引用了一些专用术语和简称,参见附录B 西南交通大学硕士研究生学位论文第3页 第二章 ICMPVI6协议分析与比较 2.11CMP6简介 在网络体系的设计中,PP报文的发送机制并不是设计得绝对可靠,而是 遵循“尽力而为”的原则。这个原则实施的结果就是:当网络出现问题时, 可以返回报错或反馈消息等控制信息,由信源地址重新发送或改变报文的结 构再重新发送;也不保证理数据报文一定正确到达;很可能一些亚P数据报 文在没有任何控制信息报告的情况下丢失。在这种状况下,上层协议只有使 用固有的差错控制应用程序来加以判断。ICMP协议报文就是这样的控制信 息,在原有的Pv4结构体系中它的主要功能就是进行错误报告和网络诊断。 ICMP协议使用P作为底层支持,好象它是一个高层协议,而实际上它是P 的一部分,必须由其它P模块实现314。 随着P由Pv4发展到mPv6,作为控制信息的CMP不能适应IPv6的需 要,1998年正F提出了新的CMP协议 ICMPv6(RFC2453)以适应v6 的需要。 ICMPvI6是Pv体系结构总体的一个组成部分,由所有v6实现支 持。ICMP6具备了Iv4中的ICMP所有基本功能,抛弃了一些不再使用的 过时消息类型,综合了原IPv4中分属不同协议完成的功能,包括组播偵听发 现协议(RFC2710)、邻居发现协议(RFC2461)和逆向邻居发现协议 (RFC3122),其中组播侦听发现协议(MLD)用 ICMPyi6消息取代了IPV4 所用的网际组管理协议(IGMP),管理组播成员资格;邻居发现协议用 ICMPV6 消息取代了Pv4所用的地址解析协议(ARP),并实现了一些新的功能;逆 向邻居发现协议用 ICMPv6消息取代了y4所用的逆向地址解析协议 (RARP)。 ICMPve增加了主机无状态地址自动配置功能,由无状态地址自 动配置协议(RFC2462)实现。 目前, ICMPy6实现并提供了多种网络功能,有错误报告消息、网终诊断 消息、邻居发现消息以及组播侦听消息,本章以下几节将从各个方面进行介 绍,其中2.2节介绍 ICMPy6报文的总体格式;23节介绍节点接收、发送 ICMPV6报文时的规则;24节介绍 ICMPV6的4个差错报文;25节介绍 ICMPvi6的10个信息报文;2.6节将对 ICMPV6与IMP进行比较。 ICMPV6的10个信息报文;26节将对 ICMPY6与IMP进行比较 西南交通大学硕士研究生学位论文 第4页 2.2报文格式 ICMPvi6报文总体上被分为两种类型:差错报文和信息报文。差错报文的 识别是通过在消息类型字段值的最高比特位中设置0。因此,差错报文的报 文类型从0到127;信息报文的类型从128到255。 ICMPVE6报文的传送依赖于IPv6报文的传送,也即 ICMPye6报文是在Pv6 报文中一起传送的。每一个 ICMPV6报文在传送时都是附加在一个Pv基本 报头和若干(或没有)v6扩展报头之后。 ICMPve报头的识别是通过在它 之前并且离它最近的报头中的下一报头字段 Next header的标识来加以识别 的, ICMPV6在该字段中对应的值为58(注意:这和在Pv4中ICMP的标识 值是不同的)。 ICMPv6报文的通用格式如图21所示: 类型(8bt 代码(8)「校验和(③ 报文内容 图21 ICMPv6报文格式 ●类型:表示CMPv报文的类型,此字段的长度为8位。在 ICMPV6 差错报文中,此字段的最高位为0。在 ICMPV6信息报文中,此字段的最 高位为1 ●代码:代码字段从属于类型字段,它以报文类型字段为基础,可以在 这些最基本的类型上再细分出新的类型,此字段的长度为8位。 ●校验和:用于ICMP6报文的校验,此字段的长度为16位。当计算 校验和时,Pv6的伪报头被加到 ICMPy6报文之前。 报文: ICMPYI6报文专有的数据。 已经定义的 ICMPVE报文类型如表21所示 2.3报文处理规则 当一个节点接收到某个 ICMPvE6报文信息时,该节点必须根据这个 ICMPvE6报文的消息类型进行相应的应答。 一般来说,节点对待MPv6报文信息,应遵循以下基本规范: ●如果收到一个无法判别其类型的CMPv6差错报文,则送到上层协议 西南交通大学硕士研究生学位论文 第5页 表21CMPv6报文的类型 类型字段值 所对应的类型 目的不可达报文 234 数据包过大报文 超时报文 参数错误报文 128 回应请求报文 129 回应应答报文 130 组播侦听查淘报文 131 组播侦听报告报文 132 组播侦听已完成报文 133 路由器请求报文 134 路由器通告报文 135 邻居请求报文 136 邻居通告报文 137 重定向报文 进行处理 ●如果收到一个无法判别其类型的CMPv信息报文,则直接丢弃 ●在不超过最小mPv6MTU的情况下, ICMPy6差错报文应包含尽可能 大的引起出错的mPv6报文 在以上的情况中,网络层协议把MP6差错报文传送到上层协议的 进程。原包中的上层协议字段(在 ICMPv6差错报文的报文体中)被取 出,用来选择合适的上一层进程来处理错误。如果原包含有一个很大的 扩展首部,那么有可能上层协议类型并没有包含在 ICMPv6差错报文中。 原因是为了满足最小Pv6最大传输单元的限制,原包被切断了。在这种 情况下,丢弃差错报文。 ·如果接收到以下情况之一,则不允许发送CMPV6差错报文: ◆接收到的是一个CMPv6差错报文。 ◆接收到的是一个发送到组播地址的数据报文但这种情况下有两种 例外:分组过大报文,这是为了允许路径MTU发现在IPV6组播 模式下工作;代码为2的参数出错报文,这是为了报告一个不认 识的mPv6选项。 ◆接收到的是一个作为链路层组播的数据报文两种例外情况在这里 也适用。 西南交通大学硕士研究生学位论文第6页 ◆接收到的是一个作为链路层广播的数据报文。两种例外情况在这里 也适用。 ◆接收到的是一个源地址不能唯一标识某节点的数据报文,比如:末 指定地址,Pv5组播地址,或一个 ICMPV6报文发送者知道的v6 任播地址。 为了节约网络带宽,减少因为发送CMPv6报文增加的转发费用。每 个网络节点都应该限制发送 ICMPv6差错报文的频率。 ICMPV6并不是每 遇到一个错误都发送一个 ICMPV6差错报文。 ICMPv6差错报文有频率限 制,常用的有基子定时器与基于带宽两种方式。基于定时器时,规定每 个或任何一个发送方每隔T毫秒才能发送一个差错报文。在RFC2463中 建议T的值取1000ms。基于带宽时,规定每个接口发送差错报文的速率 占整个带宽的百分比P,在RFC2463中建议P取值2% 241GMPv6差镨报文 24.1目的不可达报文 当数据包由于除拥塞以外的其它原因而不能到达指定目的地时,路由器 或者源节点的Pv6层将产生目的不可达报文。由于拥塞而丢弃数据包时不会 产生目的不可达报文因为这时产生任何反馈信息会使网络变得更加拥塞, 并只会产生负作用。目的不可达报文的格式如图22所示; 类型(8bis=1 代码(8bits)=04 校验和(0 未用(3bi) 在不超过最小Pv6MU的情况下,尽可能多地被丢弃的数据包的内容 图22目的不可达报文的格式 其中,对于IPv报文而言,信源地址字段就是所发 ICMPv6报文的接口 PY地址,信宿地址就是被丢弃理v报文信源地址。在 ICMPv6的目的不可 达报文中,类型字段值为1,代码字段取值范围为04未用字段的32位目 前还没有使用,在信源节点发送时,该字段将被初始化为0,在信宿节点接 收时则被忽略不计,代码字段的含义为 ●0:没有能到达目标的路由——在路由表中,没有与目的地址相匹配 的路由; 西南交通大学硕士研究生学位论文第7页 ●1:与目标的通信被管理策略禁止——一管理上禁止与目标地址通信。 通常在数据包被防火墙丢弃时,发送该类型的报文 ●2:超出源站的地址范围—目的地址不在源站地址的范围内 ●3:地址不可到达一—目的地址不可到达。通常在无法解析目的地址 的链路层地址时,发送该类型报文; ●4端口不可到达—目的端口不可到达。发送该类型报文,通常是 由于包含LDP报文的IPv6数据包到达了目的地址节点,但是却没有应 用程序侦听UDP端口。当节点接收到 ICMPV6目的不可达报文时,必须 发送到上一层进程,移交处理 242数据包过大报文 当路由器收到一个超过了链路MTU大小的Pv6报文后,因为不能转发 这个Pv6报文,于是,该路由器发出数据报文过大的差错报文。这个报文中 的信息在发现路径MU的过程中使用。数据包过大报文与其它报文相比, 在处理规则上是个例外,它的发送是作为接收到Pv6组播地址、链路层组播 地址或链路层广播地址的报文的回应。数据包过大报文是由路由器产生的 数据包过大报文格式如图23所示: 类型(8bits=2 代码(8bis=0 校验和(16b 链路最大传送单元(3ht 在不超过最小卫Pv6MTU的情况下,尽可能多地被丢弃的数据包的内容 图23数据包过大报文的格式 其中,对于v报文而言,信源地址字段就是所发LMPv报文的接 Pv6地址,信宿地址就是被丢弃Pv报文信源地址。在ICM6的数据包过 大报文中,类型字段值为2,代码字段在发送方取值为0,在接收方忽略。链 路最大传送单元内容为下一跳链路的最大传送单元。 当节点接收到CMPv6数据包过大报文时,必须发送到上一层进程,移 交处理。 243超时报文 当一个路由器接收到一个跳数限制为0或是它将跳数限制减去1后变为 西南交通大学硕士研究生学位论文 第B页 0时的报文,该路由器必须丢弃这个报文,并且发送一个代码为0的 ICMPv6 超时报文给信源节点这种情况,超时报文表明出现了一个路由环路或是初 始的跳数限制值太小。超时报文是由路由器产生的,超时报文的格式如图24 所示: 类型(8bc)=3 1代码()01校验和 未用32bits 在不超过最小业 Py6MTU的情况下,尽可能多的被丢弃数据包的内容 图24超时报文的格式 其中,对于mPv6报文而言,信源地址字段就是所发 ICMP6报文的接口 IPv6地址,信宿地址就是被丢弃mv6报文信源地址。在IMPv6的超时报文 中,类型字段值为3,代码字段取值范围为0和1。未用字段的32位目前还 没有使用,在信源节点发送时,该字段将被初始化为0,在信宿节点接收时 则被忽略不计。代码字段的含义为: 0;传输中超越了跳限制—由路由器设置,当mv6报头中的跳限制 字段减小为0时,或者在收到的数据包的v6报头中的跳限制字段的值 本身就为0时设置 :片段重组超时—由主机设置,当目标主机的片段重组时间耗尽 时设置。RFC2460规定片段重组的时间为60秒。 当节点接收到 ICMPv6超时报文时,必须发送到上一层进程,移交处理。 244参数错误报文 当一个节点发现了PPv6基本报头或者其扩展报头中的某个字段有问 题,从而导致对报文的处理失败时,该节点必须丢弃这个报文,并发送一个 ICMPY6参数错误报文给信源地址,表明出错的位置和出错的类型。参数错 误报文是由节点产生的。参数错误报文的格式如图25所示: 类型8bs=4 代码@)02枚验和( 指针(32bits 在不超过最小Pv6MU的情况下,尽可能多的被丢弃数据包的内容 图25参数错误报文的格式

...展开详情
试读 81P ICMPv6相关协议分析在linux下验证
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
zhuang5683 很有趣,挺详细,中文的看起来就是好一些
2014-06-29
回复
tainhecloud 对icmpv6分析挺详细。学习了
2014-04-18
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 签到新秀

  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
ICMPv6相关协议分析在linux下验证 37积分/C币 立即下载
1/81
ICMPv6相关协议分析在linux下验证第1页
ICMPv6相关协议分析在linux下验证第2页
ICMPv6相关协议分析在linux下验证第3页
ICMPv6相关协议分析在linux下验证第4页
ICMPv6相关协议分析在linux下验证第5页
ICMPv6相关协议分析在linux下验证第6页
ICMPv6相关协议分析在linux下验证第7页
ICMPv6相关协议分析在linux下验证第8页
ICMPv6相关协议分析在linux下验证第9页
ICMPv6相关协议分析在linux下验证第10页
ICMPv6相关协议分析在linux下验证第11页
ICMPv6相关协议分析在linux下验证第12页
ICMPv6相关协议分析在linux下验证第13页
ICMPv6相关协议分析在linux下验证第14页
ICMPv6相关协议分析在linux下验证第15页
ICMPv6相关协议分析在linux下验证第16页
ICMPv6相关协议分析在linux下验证第17页

试读结束, 可继续读3页

37积分/C币 立即下载 >