当前位置:文档之家› IPv6基本原理

IPv6基本原理

IPv6基本原理
IPv6基本原理

一、IPv6地址

1.格式简介

IPv6地址大小为128位。首选的IPv6地址表示为:

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个x是代表一个4位的十六进制数字。IPv6地址范围从0000:0000:0000:0000:0000:0000:0000:0000至ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff。即使在转换成十六进制格式,IPv6地址仍然漫长。IPv6提供了一些规则来缩短地址。这些规则是:规则1:丢弃前导零(ES):

比如2001:0000:3238:DFE1:0063:0000:0000:FEFB地址中,第五部分的数值0063前面的两个零可以省略,即:

2001:0000:3238:DFE1:63:0000:0000:FEFB

规则2:如果两个以上的块包含连续的零,忽略所有这些,并用双冒号::替换:

上述地址中第六部分和第七部分为全零,因此可以简写,即:

2001:0000:3238:DFE1:63::FEFB

注意:为了确保地址表达的唯一性,一个IPv6地址中只允许出现一个“::”,其他位置如出现全零,可以简写为一个零,即:

2001:0:3238:DFE1:63::FEFB

2.格式分类

1)全球单播地址

这种地址类型是等同于IPv4公网地址。在IPv6全球单播地址是全球识别和独特的寻址。

2)本地链路地址

自动配置的IPv6地址被称为链路本地地址。这个地址总是以FE80开头。链路本地地址的前16位总是被设置为1111111010000000(FE80),接下来的48位都设置为0。链路本地地址用于在链路(广播业务)只有IPv6主机之间的通信。本地链路地址用于同一个链路中的不同主机之间,主机可以在不通过DHCP的情况下自动获取到本地链路地址,与同一链路内的其他主机进行通信。

二、IP报文格式

IPv6包扩展包头中的分段包头中指明了IPv6包的分段情况。其中不可分段部分包括:IPv6包头、Hop-by-Hop选项包头、目的地选项包头(适用于中转路由器)和路由包头;可分段部分包括:认证包头、ESP协议包头、目的地选项包头(适用于最终目的地)和上层协议数据单元。但是需要注意的是,在IPv6中,只有源节点才能对负载进行分段,并且IPv6超大包不能使用

该项服务。

1.IPv6包头

图1IPv6报文格式

IPv6包头长度固定为40字节,去掉了IPv4中一切可选项,只包括8个必要的字段,因此尽管IPv6地址长度为IPv4的四倍,但IPv6包头长度仅为IPv4包头长度的两倍。

Version(版本号):4位,IPv4协议版本号,值=6。

Traffic Class(通信类别):8位,指示IPv6数据流通信类别或优先级。功能类似于IPv4的服务类型(TOS)字段。

Flow Label(流标记):20位,IPv6新增字段,标记需要IPv6路由器特殊处理的数据流。该字段用于某些对连接的服务质量有特殊要求的通信,诸如音频或视频等实时数据传输。在IPv6中,同一信源和信宿之间可以有多种不同的数据流,彼此之间以非"0"流标记区分。如果不要求路由器做特殊处理,则该字段值置为"0"。

Payload Length(负载长度):16位负载长度。负载长度包括扩展头和上层PDU,16位最多可表示65535字节负载长度。超过这一字节数的负载,该字段值置为"0",使用扩展头逐个跳段(Hop-by-Hop)选项中的巨量负载(Jumbo Payload)选项。

Next Header(下一包头):8位,识别紧跟IPv6头后的包头类型,如扩展头(有的话)或某个传输层协议头(诸如TCP,UDP或者ICMPv6)。

Hop Limit(跳段数限制):8位,类似于IPv4的TTL(生命期)字段。与IPv4用时间来限定包的生命期不同,IPv6用包在路由器之间的转发次数来限定包的生命期。包每经过一次转发,该字段减1,减到0时就把这个包丢弃。

Source Address(源地址):128位,发送方主机地址。

Destination Address(目的地址):128位,在大多数情况下,目的地址即信宿地址。但如

果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口。

2.IPv6扩展包头

IPv6包头设计中对原IPv4包头所做的一项重要改进就是将所有可选字段移出IPv6包头,置于扩展头中。由于除Hop-by-Hop选项扩展头外,其他扩展头不受中转路由器检查或处理,这样就能提高路由器处理包含选项的IPv6分组的性能。

通常,一个典型的IPv6包,没有扩展头。仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,以便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。但是为了提高处理选项头和传输层协议的性能,扩展头总是8字节长度的整数倍。

目前,RFC2460中定义了以下6个IPv6扩展头:Hop-by-Hop(逐个跳段)选项包头、目的地选项包头、路由包头、分段包头、认证包头和ESP协议包头。

(1)Hop-by-Hop选项包头包含分组传送过程中,每个路由器都必须检查和处理的特殊参数选项。其中的选项描述一个分组的某些特性或用于提供填充。这些选项有:Pad1选项(选项类型为0),填充单字节;

PadN选项(选项类型为1),填充2个以上字节;

Jumbo Payload选项(选项类型为194),用于传送超大分组。使用Jumbo Payload选项,分组有效载荷长度最大可达4,294,967,295字节。负载长度超过65,535字节的IPv6包称为"超大包"

路由器警告选项(选项类型为5),提醒路由器分组内容需要做特殊处理。路由器警告选项用于组播收听者发现和RSVP(资源预定)协议。

(2)目的地选项包头指明需要被中间目的地或最终目的地检查的信息。有两种用法:

如果存在路由扩展头,则每一个中转路由器都要处理这些选项;

如果没有路由扩展头,则只有最终目的节点需要处理这些选项。

(3)路由包头

类似于IPv4的松散源路由,IPv6的源节点可以利用路由扩展包头指定一个松散源路由,即分组从信源到信宿需要经过的中转路由器列表。

(4)分段包头

提供分段和重装服务。当分组大于链路最大传输单元(MTU)时,源节点负责对分组进行分段,并在分段扩展包头中提供重装信息。

(5)认证包头

提供数据源认证、数据完整性检查和反重播保护。认证包头不提供数据加密服务,需要加密服务的数据包,可以结合使用ESP协议。

(6)ESP协议包头

提供加密服务。

三、ICMPv6

1.协议简介

ICMPv6是Internet Control Message Protocol Version6的简称,译为第六版互联网控制信息协议。

ICMP是IP协议的一个重要组成部分。通过IP包发送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。ICMP包发送是不可靠的,所以主机不能依靠接收ICMP包解决任何网络问题。ICMP的主要功能如下:

(1)通过网络错误。比如,某台主机或整个网络由于某些故障不可达。如果有指向某个端口号的TCP或UDP包没有指明接收端,这也由ICMP报告。

(2)通告网络拥塞。当路由器缓存太多包,由于传输速度无法达到它们的接收速度,将会生成“ICMP源结束”信息。对于发送者,这些信息将会导致传输速度降低。当然,更多的ICMP源结束信息的生成也将引起更多的网络拥塞,所以使用起来较为保守。

(3)协助解决故障。ICMP支持Echo功能,即在两个主机间一个往返路径上发送一个包。Ping是一种基于这种特性的通用网络管理工具,它将传输一系列的包,测量平均往返次数并计算丢失百分比。

(4)通告超时。如果一个IP包的TTL降低到零,路由器就会丢弃此包,这时会生成一个ICMP包通告这一事件。

2.协议结构

ICMP在IPv6定义中重新修订。此外,IPv4组成员协议(IGMP)的多点传输控制功能也嵌入到ICMPv6中。ICMPv6协议结构如图2所示。

图2ICMPv6协议结构

Type——消息类型。包括:Echo Request、Echo Reply、Group Membership Query、Group Membership Report、Group Membership Reduction等;

Code——每种消息类型具有多种不同的代码;

Checksum——计算校验和;

Identifier——帮助匹配Request/Reply的标识符,值可能是0;

Sequence Number——帮助匹配Request/Reply的序列号,值可能是0;

Address Mask——32位掩码地址。

四、IPv6Neighbor Discovery

1.协议简介

IPv6邻居发现协议(IPv6NDP)是IPv6的一种基础协议,它利用Neighbor Advertiser (NA)、Neighbor Solicitor(NS)、Router Advertiser(RA)、Router Solicitor(RS)和重定向五种类型的ICMPv6消息,来确定邻居节点之间关系和地址信息,实现地址解析、验证邻居是否可达、重复地址检测、路由器发现(前缀发现)、地址自动配置和重定向等功能。

NDP代替了IPv4中的ARP、ICMP路由器发现(Router Discovery)和ICMP重定向消息(Redirect Message),并提供了一系列增强功能,保障了设备的安全性。

2.相关协议

NDP需要用到5种ICMPv6包:

(1)路由器请求(Router Solicitor)。当节点不愿意等待下一次周期性路由器宣告,希望路由器立刻发送路由器宣告时发送的多播包。一个正在初始化的节点可以发送路由器请求,这样它可以马上得到链路上路由器的配置参数。(RS是类型为133的ICMP包。源地址是分配给发送主机的地址。如果还没有分配地址,则使用未指定地址0:0:0:0:0:0:0:0即::目的

地址是所有路由器的多播地址——FF02::2)

(2)路由器宣告(Router Advertiser)。周期性发送或对请求作应答。路由器报告他们的存在,并提供节点配置自己所需要的信息。(RA是类型为134的ICMP包。源地址是发送路由器的本地链路地址,目的地址是发送路由器请求的节点地址或链路范围所有节点多播地址——FF02::1RA中包含路由器生存时间。路由器生存时间告诉节点他们能将路由器作为默认路由器多久。其值为0表示该路由器不是候选的默认路由器,不能出现在节点的默认路由器表中。收到RA的节点构造一个默认路由器表。所有发送RA且生存时间不为0的路由器都出现在该列表中)

(3)邻居请求(Neighbor Solicitor)。允许节点确定邻居的链路层地址,或者判断邻居是否还能从缓存的链路层地址可达。同时允许节点判断链路上是否存在重复的IP地址。(邻居解析消息用来获得邻居的链路层地址、提供本机的链路层地址以及验证邻居的可达性。它是一个类型为135的ICMP消息。IP包的源地址是发请求的节点的单播地址。用作获得链路层地址时,目的地址是关联在目的IP地址的被请求节点的多播地址;用作可达性确认时,目的地址是单薄地址)

(4)邻居宣告(Neighbor Advertiser)。对邻居请求所回复的应答或者在链路层地址改变时不经请求发送。(邻居宣告用作应答NS或者在没有被请求时立即传播如链路层地址已改变等新消息。NA是类型为136的ICMP包。源地址是分配给发送接口的任意有效单播地址。当应答NS时,目的地址是请求包的源地址,或者当请求源地址是未指定地址时目的地址是所有节点地址FF02::1。而未经请求的宣告的目的地址也是所有节点地址)

(5)重定向。有时节点选择的转发路由器对于待转发的包而言并非最佳。这种情况下,该转发路由器可以对节点进行重定向,以将包发给最佳的路由器。例如,节点将发往Internet 的包发送给为节点的Intranet网服务的默认路由器,该Intranet网路由器可以对节点进行重定向,以将包发送给连接在同一本地链路上的Internet路由器。

(6)用RS和RA替代ARP:

(7)在IPv6中,对节点链路层地址的确定使用RS、RA和被请求节点多播地址(FF02::1:FFxx::XXXX)的组合。IPv6中使用的NDP比IPv4中的ARP更加高效。在IPv6中,只有关心这个机制的邻居节点才会在它们的协议栈中处理RS和RA的公告消息。而在IPv4中,ARP广播使本链路上所有节点把ARP消息发送给IPv4协议栈。在IPv6中,节点在相同的请求中相互交换链路层地址。在IPv4中,需要两个ARP广播消息才能得到相同的结果。

相关主题
文本预览
相关文档 最新文档