设为首页收藏本站language 语言切换
查看: 3274|回复: 25
收起左侧

[书籍] IPV6原理详解指南

[复制链接]
 成长值: 63385
发表于 2022-1-24 10:14:01 | 显示全部楼层 |阅读模式
IPv6简介
介绍IPv6的定义、由来和作用。

定义
IPv6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation)。它是Internet工程任务组IETF(Internet Engineering Task Force)设计的一套规范,是IPv4(Internet Protocol Version 4)的升级版本。

目的
IPv4协议是目前广泛部署的因特网协议。在因特网发展初期,IPv4以其协议简单、易于实现、互操作性好的优势而得到快速发展。但随着因特网的迅猛发展,IPv4设计的不足也日益明显,IPv6的出现,解决了IPv4的一些弊端。相比IPv4,IPv6具有如下优势:

表8-1  IPv6、IPv4对比表
问题

IPv4的缺陷

IPv6的优势

地址空间

IPv4地址采用32比特标识,理论上能够提供的地址数量是43亿(由于地址分配的原因,实际可使用的数量不到43亿)。另外,IPv4地址的分配也很不均衡:美国占全球地址空间的一半左右,而欧洲则相对匮乏;亚太地区则更加匮乏。与此同时,移动IP和宽带技术的发展需要更多的IP地址。目前IPv4地址已经消耗殆尽。

针对IPv4的地址短缺问题,也曾先后出现过几种解决方案。比较有代表性的是无类别域间路由CIDR(Classless Inter-Domain Routing)和网络地址转换NAT(Network Address Translator)。但是CIDR和NAT都有各自的弊端和不能解决的问题,由此推动了IPv6的发展。

IPv6地址采用128比特标识。128位的地址结构使IPv6理论上可以拥有(43亿×43亿×43亿×43亿)个地址。近乎无限的地址空间是IPv6的最大优势。

报文格式

IPv4报头包含可选字段Options,内容涉及Security、Timestamp、Record route等,这些Options可以将IPv4报头长度从20字节扩充到60字节。携带这些Options的IPv4报文在转发过程中往往需要中间路由转发设备进行软件处理,对于性能是个很大的消耗,因此实际中也很少使用。

IPv6和IPv4相比,去除了IHL、Identifier、Flag、Fragment Offset、Header Checksum、 Option、Paddiing域,只增加了流标签域,因此IPv6报文头的处理较IPv4更为简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念,新增选项时不必修改现有结构,理论上可以无限扩展,体现了优异的灵活性。

自动配置和重新编址

由于IPv4地址只有32比特,并且地址分配不均衡,导致在网络扩容或重新部署时,经常需要重新分配IP地址,因此需要能够进行自动配置和重新编址,以减少维护工作量。目前IPv4的自动配置和重新编址机制主要依靠DHCP协议。

IPv6协议内置支持通过地址自动配置方式使主机自动发现网络并获取IPv6地址,大大提高了内部网络的可管理性。

路由聚合

由于IPv4发展初期的分配规划问题,造成许多IPv4地址分配不连续,不能有效聚合路由。日益庞大的路由表耗用大量内存,对设备成本和转发效率产生影响,这一问题促使设备制造商不断升级其产品,以提高路由寻址和转发性能。

巨大的地址空间使得IPv6可以方便的进行层次化网络部署。层次化的网络结构可以方便的进行路由聚合,提高了路由转发效率。

对端到端的安全的支持

IPv4协议制定时并没有仔细针对安全性进行设计,因此固有的框架结构并不能支持端到端的安全。

IPv6中,网络层支持IPSec的认证和加密,支持端到端的安全。

对QoS(Quality of Service)的支持

随着网络会议、网络电话、网络电视迅速普及与使用,客户要求有更好的QoS来保障这些音视频实时转发。IPv4并没有专门的手段对QoS进行支持。

IPv6新增了流标记域,提供QoS保证。

对移动特性的支持

随着Internet的发展,移动IPv4出现了一些问题,比如:三角路由,源地址过滤等。

IPv6协议规定必须支持移动特性。和移动IPv4相比,移动IPv6使用邻居发现功能可直接实现外地网络的发现并得到转交地址,而不必使用外地代理。同时,利用路由扩展头和目的地址扩展头移动节点和对等节点之间可以直接通信,解决了移动IPv4的三角路由、源地址过滤问题,移动通信处理效率更高且对应用层透明。

IPv6地址IPv6地址的表示方法
IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。例如:FC00:0000:130F:0000:0000:09C0:876A:130B,这是IPv6地址的首选格式。
为了书写方便,IPv6还提供了压缩格式,以上述IPv6地址为例,具体压缩规则为:
  • 每组中的前导“0”都可以省略,所以上述地址可写为:FC00:0:130F:0:0:9C0:876A:130B。
  • 地址中包含的连续两个或多个均为0的组,可以用双冒号“::”来代替,所以上述地址又可以进一步简写为:FC00:0:130F::9C0:876A:130B。

                               
登录/注册后可看大图
说明:
需要注意的是,在一个IPv6地址中只能使用一次双冒号“::”,否则当计算机将压缩后的地址恢复成128位时,无法确定每个“::”代表0的个数。



IPv6地址的结构
一个IPv6地址可以分为如下两部分:
  • 网络前缀:n比特,相当于IPv4地址中的网络ID
  • 接口标识:128-n比特,相当于IPv4地址中的主机ID


                               
登录/注册后可看大图
说明:
对于IPv6单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位;如果地址的前三位是000,则没有此限制。


接口标识可通过三种方法生成:手工配置、系统通过软件自动生成或IEEE EUI-64规范生成。其中,EUI-64规范自动生成最为常用。
IEEE EUI-64规范是将接口的MAC地址转换为IPv6接口标识的过程。如图8-1所示,MAC地址的前24位(用c表示的部分)为公司标识,后24位(用m表示的部分)为扩展标识符。从高位数,第7位是0表示了MAC地址本地唯一。转换的第一步将FFFE插入MAC地址的公司标识和扩展标识符之间,第二步将从高位数,第7位的0改为1表示此接口标识全球唯一。
图8-1  EUI-64规范示意图

                               
登录/注册后可看大图


例如:MAC地址:000E-0C82-C4D4;转换后:020E:0CFF:FE82:C4D4。
这种由MAC地址产生IPv6地址接口标识的方法可以减少配置的工作量,尤其是当采用无状态地址自动配置时,只需要获取一个IPv6前缀就可以与接口标识形成IPv6地址。但是使用这种方式最大的缺点是任何人都可以通过二层MAC地址推算出三层IPv6地址。

IPv6的地址分类
IPv6地址分为单播地址、任播地址(Anycast Address)、组播地址三种类型。和IPv4相比,取消了广播地址类型,以更丰富的组播地址代替,同时增加了任播地址类型。
IPv6单播地址
IPv6单播地址标识了一个接口,由于每个接口属于一个节点,因此每个节点的任何接口上的单播地址都可以标识这个节点。发往单播地址的报文,由此地址标识的接口接收。
IPv6定义了多种单播地址,目前常用的单播地址有:未指定地址、环回地址、全球单播地址、链路本地地址、唯一本地地址ULA(Unique Local Address)。
  • 未指定地址
    IPv6中的未指定地址即 0:0:0:0:0:0:0:0/128 或者::/128。该地址可以表示某个接口或者节点还没有IP地址,可以作为某些报文的源IP地址(例如在NS报文的重复地址检测中会出现)。源IP地址是::的报文不会被路由设备转发。
  • 环回地址
    IPv6中的环回地址即 0:0:0:0:0:0:0:1/128 或者::1/128。环回与IPv4中的127.0.0.1作用相同,主要用于设备给自己发送报文。该地址通常用来作为一个虚接口的地址(如Loopback接口)。实际发送的数据包中不能使用环回地址作为源IP地址或者目的IP地址。
  • 全球单播地址
    全球单播地址是带有全球单播前缀的IPv6地址,其作用类似于IPv4中的公网地址。这种类型的地址允许路由前缀的聚合,从而限制了全球路由表项的数量。
    全球单播地址由全球路由前缀(Global routing prefix)、子网ID(Subnet ID)和接口标识(Interface ID)组成,其格式如图8-2所示:
    图8-2  全球单播地址格式

                                   
    登录/注册后可看大图


    Global routing prefix:全球路由前缀。由提供商(Provider)指定给一个组织机构,通常全球路由前缀至少为48位。目前已经分配的全球路由前缀的前3bit均为001。
    Subnet ID:子网ID。组织机构可以用子网ID来构建本地网络(Site)。子网ID通常最多分配到第64位。子网ID和IPv4中的子网号作用相似。
    Interface ID:接口标识。用来标识一个设备(Host)。
  • 链路本地地址
    链路本地地址是IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。它使用了特定的本地链路前缀FE80::/10(最高10位值为1111111010),同时将接口标识添加在后面作为地址的低64比特。
    当一个节点启动IPv6协议栈时,启动时节点的每个接口会自动配置一个链路本地地址(其固定的前缀+EUI-64规则形成的接口标识)。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。所以链路本地地址广泛应用于邻居发现,无状态地址配置等应用。
    以链路本地地址为源地址或目的地址的IPv6报文不会被路由设备转发到其他链路。链路本地地址的格式如图8-3所示:
    图8-3  链路本地地址格式

                                   
    登录/注册后可看大图


  • 唯一本地地址
    唯一本地地址是另一种应用范围受限的地址,它仅能在一个站点内使用。由于本地站点地址的废除(RFC3879),唯一本地地址被用来代替本地站点地址。
    唯一本地地址的作用类似于IPv4中的私网地址,任何没有申请到提供商分配的全球单播地址的组织机构都可以使用唯一本地地址。唯一本地地址只能在本地网络内部被路由转发而不会在全球网络中被路由转发。唯一本地地址格式如图8-4所示:
    图8-4  唯一本地地址格式

                                   
    登录/注册后可看大图


    Prefix:前缀;固定为FC00::/7。
    L:L标志位;值为1代表该地址为在本地网络范围内使用的地址;值为0被保留,用于以后扩展。
    Global ID:全球唯一前缀;通过伪随机方式产生。
    Subnet ID:子网ID;划分子网使用。
    Interface ID:接口标识。
    唯一本地地址具有如下特点:
    • 具有全球唯一的前缀(虽然随机方式产生,但是冲突概率很低)。
    • 可以进行网络之间的私有连接,而不必担心地址冲突等问题。
    • 具有知名前缀(FC00::/7),方便边缘设备进行路由过滤。
    • 如果出现路由泄漏,该地址不会和其他地址冲突,不会造成Internet路由冲突。
    • 应用中,上层应用程序将这些地址看作全球单播地址对待。
    • 独立于互联网服务提供商ISP(Internet Service Provider)。


IPv6组播地址
IPv6的组播与IPv4相同,用来标识一组接口,一般这些接口属于不同的节点。一个节点可能属于0到多个组播组。发往组播地址的报文被组播地址标识的所有接口接收。例如组播地址FF02::1表示链路本地范围的所有节点,组播地址FF02::2表示链路本地范围的所有路由器。
一个IPv6组播地址由前缀,标志(Flag)字段、范围(Scope)字段以及组播组ID(Global ID)4个部分组成:
  • 前缀:IPv6组播地址的前缀是FF00::/8。
  • 标志字段(Flag):长度4bit,目前只使用了最后一个比特(前三位必须置0),当该位值为0时,表示当前的组播地址是由IANA所分配的一个永久分配地址;当该值为1时,表示当前的组播地址是一个临时组播地址(非永久分配地址)。
  • 范围字段(Scope):长度4bit,用来限制组播数据流在网络中发送的范围,该字段取值和含义的对应关系如图8-5所示。
  • 组播组ID(Group ID):长度112bit,用以标识组播组。目前,RFC2373并没有将所有的112位都定义成组标识,而是建议仅使用该112位的最低32位作为组播组ID,将剩余的80位都置0。这样每个组播组ID都映射到一个唯一的以太网组播MAC地址(RFC2464)。

IPv6组播地址格式如图8-5所示:
图8-5  IPv6组播地址格式

                               
登录/注册后可看大图


  • 被请求节点组播地址
    被请求节点组播地址通过节点的单播或任播地址生成。当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。一个单播地址或任播地址对应一个被请求节点组播地址。该地址主要用于邻居发现机制和地址重复检测功能。
    IPv6中没有广播地址,也不使用ARP。但是仍然需要从IP地址解析到MAC地址的功能。在IPv6中,这个功能通过邻居请求NS(Neighbor Solicitation)报文完成。当一个节点需要解析某个IPv6地址对应的MAC地址时,会发送NS报文,该报文的目的IP就是需要解析的IPv6地址对应的被请求节点组播地址;只有具有该组播地址的节点会检查处理。
    被请求节点组播地址由前缀FF02::1:FF00:0/104和单播地址的最后24位组成。

IPv6任播地址
任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
任播地址设计用来在给多个主机或者节点提供相同服务时提供冗余功能和负载分担功能。目前,任播地址的使用通过共享单播地址方式来完成。将一个单播地址分配给多个节点或者主机,这样在网络中如果存在多条该地址路由,当发送者发送以任播地址为目的IP的数据报文时,发送者无法控制哪台设备能够收到,这取决于整个网络中路由协议计算的结果。这种方式可以适用于一些无状态的应用,例如DNS等。
IPv6中没有为任播规定单独的地址空间,任播地址和单播地址使用相同的地址空间。目前IPv6中任播主要应用于移动IPv6。

                               
登录/注册后可看大图
说明:
IPv6任播地址仅可以被分配给路由设备,不能应用于主机。任播地址不能作为IPv6报文的源地址。


  • 子网路由器任播地址
    子网路由器任播地址是已经定义好的一种任播地址(RFC3513)。发送到子网路由器任播地址的报文会被发送到该地址标识的子网中路由意义上最近的一个设备。所有设备都必须支持子网任播地址。子网路由器任播地址用于节点需要和远端子网上所有设备中的一个(不关心具体是哪一个)通信时使用。例如,一个移动节点需要和它的“家乡”子网上的所有移动代理中的一个进行通信。
    子网路由器任播地址由n bit子网前缀标识子网,其余用0填充。格式如图8-6所示:
    图8-6  子网路由器任播地址格式

                                   
    登录/注册后可看大图




游客,如果您要查看本帖隐藏内容请回复







发表于 2022-1-24 10:30:31 | 显示全部楼层
来学习学习
沙发 2022-1-24 10:30:31 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2022-1-24 10:40:36 | 显示全部楼层
谢谢,学习学习
板凳 2022-1-24 10:40:36 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2022-1-24 10:52:47 | 显示全部楼层
谢谢楼主分享
5# 2022-1-24 10:52:47 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2022-2-14 16:20:06 | 显示全部楼层
·111111111111111
15# 2022-2-14 16:20:06 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-1 17:44 , Processed in 0.077387 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表