IPv6概述

IPv4现状

2011年2月3日,IANA(Internet Assigned Numbers Authority,因特网地址分配组织)宣布将其最后的468万个IPv4地址平均分配到全球5个RIR(Regional Internet Registry,区域互联网注册管理机构),此后IANA再没有可分配的IPv4地址。

IANA,是负责全球互联网IP地址编号分配的机构。IANA将部分IPv4地址分配给大洲级的RIR,再由各RIR进行所辖区域内地址分配,五大RIR包括:

RIPE:Reseaux IP Europeans,欧洲IP地址注册中心,服务于欧洲、中东地区和中亚地区;

LACNIC:Latin American and Caribbean Internet Address Registry,拉丁美洲和加勒比海Internet地址注册中心,服务于中美、南美以及加勒比海地区;

ARIN:American Registry for Internet Numbers,美国Internet编号注册中心,服务于北美地区和部分加勒比海地区;

AFRINIC:Africa Network Information Centre,非洲网络信息中心,服务于非洲地区;

APNIC:Asia Pacific Network Information Centre,亚太互联网络信息中心,服务于亚洲和太平洋地区。

IPv6优势

近乎无限的地址空间:与IPv4相比,这是最明显的好处。IPv6地址是由128 bit构成,单从数量级来说,IPv6所拥有的地址容量是IPv4的约8×1028倍,号称可以为全世界的每一粒沙分配一个网络地址。这使得海量终端同时在线,统一编址管理,变为可能,为万物互连提供了强有力的支撑。

层次化的地址结构:正因为有了近乎无限的地址空间,IPv6在地址规划时就根据使用场景划分了各种地址段。同时严格要求单播IPv6地址段的连续性,禁止出现IPv4的地址“打洞”现象,便于IPv6路由聚合,缩小IPv6地址表规模。

即插即用:任何主机或者终端要获取网络资源,传输数据,都必须有明确的IP地址。传统的分配IP地址方式是手工或者DHCP自动获取,除了上述两个方式外,IPv6还支持SLAAC(Stateless Address Autoconfiguration,无状态地址自动配置)。

端到端网络的完整性:大面积使用NAT技术的IPv4网络,从根本上破坏了端到端连接的完整性。使用IPv6之后,将不再需要NAT网络设备,上网行为管理、网络监管等将变得简单,与此同时,应用程序也不需要开发复杂的NAT适配代码。

安全性得到增强:IPsec( Internet Protocol Security,因特网协议安全协议)最初是为IPv6设计的,所以基于IPv6的各种协议报文(路由协议、邻居发现等),都可以端到端地加密,当然该功能目前应用并不多。而IPv6的数据面报文安全性,跟IPv4+IPsec的能力,基本相同。

可扩展性强:IPv6的扩展属性报文头部,并不是主数据包的一部分,但是在必要的时候,这些扩展头部会插在IPv6基本头部和有效载荷之间,能够协助IPv6完成加密功能、移动功能、最优路径选路、QoS等,并可提高报文转发效率。

移动性改善:当一个用户从一个网段移动到另外一个网段,传统的网络会产生经典式“三角式路由”,IPv6网络中,这种移动设备的通信,可不再经过原“三角式路由”,而做直接路由转发,降低了流量转发的成本,提升了网络性能和可靠性。

QoS可得到进一步增强:IPv6保留了IPv4所有的QoS属性,额外定义了20 Byte的流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源,目前该机制并没有得到充分的开发和应用。

IPv6报文构成

从图中可以看出IPv6数据报文由以下几个部分组成:

IPv6基本报头(IPv6 Header

每一个IPv6数据报文都必须包含报头,其长度固定为40字节。

基本报头提供报文转发的基本信息,会被转发路径上的所有路由器解析。

扩展报头(Extension Headers

IPv6扩展报头是可能跟在基本IPv6报头后面的可选报头。IPv6数据包中可以包含一个或多个扩展报头,当然也可以没有扩展头,这些扩展报头可以具有不同的长度。IPv6报头和扩展报头代替了IPv4报头及其选项。新的扩展报头格式增强了IPv6的功能,使其具有极大的扩展性。与IPv4报头中的选项不同,IPv6扩展报头没有最大长度的限制,因此可以容纳IPv6通信所需要的所有扩展数据。扩展报头提供报文转发的扩展信息,并不会被路径上所有的路由器解析,一般只会被目的路由器解析处理。

上层协议数据单元(Upper Layer Protocol Data Unit

上层协议数据单元一般由上层协议报头和它的有效载荷构成,有效载荷可以是一个ICMPv6报文、一个TCP报文或一个UDP报文。

Ipv6基本报头

IPv6基本报头也称之为固定报头。固定报头包含8个字段,总长度为40Byte。这8个字段分别为:版本(Version)、流量类型(Traffic Class)、流标签(Flow Label)、净荷长度(Payload Length)、下一个报头(Next Header)、跳数限制(Hop Limit)、源IPv6地址、目的IPv6地址。

IPv6基本包头字段解释如下:

Version:版本号,长度为4 bit。对于IPv6,该值为6。

Traffic Class:流类别,长度为8 bit。等同于IPv4中的ToS字段,表示IPv6数据包的类或优先级,主要应用于QoS。

Flow Label:流标签,长度为20 bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。

Payload Length:有效载荷长度,长度为16 bit。有效载荷是指紧跟IPv6包头的数据包的其他部分(即扩展包头和上层协议数据单元)。

Next Header:下一个包头,长度为8 bit。该字段定义紧跟在IPv6包头后面的第一个扩展包头(如果存在)的类型,或者上层协议数据单元中的协议类型(类似于IPv4的Protocol字段)。

Hop Limit:跳数限制,长度为8 bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据包将被丢弃。

Source Address:源地址,长度为128 bit。表示发送方的地址。

Destination Address:目的地址,长度为128 bit。表示接收方的地址。

IPv6拓展包头

IPv6报头设计中对原IPv4报头所做的一项重要改进就是将所有可选字段移出IPv6报头,置于扩展头中。IPv6扩展报头是可能跟在基本IPv6报头后面的可选报头。为什么在IPv6中要设计扩展报头呢?因为在IPv4的报头中包含了所有的选项,每个中间路由器都必须检查这些选项是否存在,如果存在,就必须处理它们。这种设计方法会降低路由器转发IPv4数据包的效率。为了解决转发效率问题,在IPv6中,相关选项被移到了扩展报头中。中间路由器就不需要处理每一个可能出现的选项,这种处理方式提高了路由器处理数据包的速度,也提高了其转发性能。  

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

目前,RFC 2460中定义了以下6个IPv6扩展头:

逐跳选项报头:该扩展头被每一跳处理,可包含多种选项,如路由器告警选项。

目的选项报头:目的地处理, 可包含多种选项,如Mobile IPv6的家乡地址选项。

路由报头:指定源路由,类似IPv4源路由选项,IPv6源节点用来指定信息报到达目的地的路径上所必须经过的中间节点。IPv6基本报头的目的地址不是分组的最终目的地址,而是路由扩展头中所列的第一个地址。

分段报头:IP报文分片信息,只由目的地处理。

认证报头:IPSec用扩展头, 只由目的地处理。

封装安全净载报头:IPSec用扩展头,只由目的地处理。

逐跳选项扩展头和目的地选项扩展头内部提供选项功能,支持扩展性(如对移动性支持)。选项采用TLV方式。

如果数据报中没有扩展报头,也就是说数据包只包含基本报头和上层协议单元,基本报头的下一个报头(Next Header)字段值指明上层协议类型。在上例中,基本报头的下一个报头字段值为6,说明上层协议为TCP;如果报文有一个扩展报头,则基本报头的下一个报头(Next Header)字段值为扩展报头类型(在上例中,指明紧跟在基本报头后面的扩展报头为43,也就是路由报头),扩展报头的下一个报头字段指明上层协议类型;以此类推,如果数据报中报括多个扩展报头,则每一个扩展报头的下一个报头指明紧跟着自己的扩展报头的类型,最后一个扩展报头的下一个报头字段指明上层协议。

IPv6报文处理机制

IPv6地址

地址格式

IPv4地址使用点隔开的4段十进制数加上掩码来表示,例如192.168.1.1/24。IPv6的地址有128位,沿用IPv4的十进制表示方法就显得太笨拙了,所以在RFC2373中定义了不同于IPv4的格式。

为了书写方便,IPv6可采用以下规则进行缩写。

为什么IPv6协议的地址长度是128bit?

CPU处理字长发展至今分别经历了4bit、8bit、16bit、32bit、64bit等,当数据能用2的指数幂字长的二进制数表示时,CPU对数值的处理效率最高。

IPv4地址长度为32bit,原因之一就是当时互联网上的主机CPU字长为32bit。从处理效率和未来网络扩展性上考虑,将IPv6的地址长度定为128bit是十分合适的。

IPv6的128bit地址是一个什么概念?

IPv4有(2的32方)=  4,294,967,296个地址。

IPv6有(2的128方   )= 340,282,366,920,938,463,463,374,607,431,768,211,456个地址(340万亿万亿万亿个地址),相当夸张的说,地球上每一粒沙子都可以分配到一个IPv6地址。

IPv6地址结构

一个IPv6地址可以分为如下两部分:

网络前缀:nbit,相当于IPv4地址中的网络ID。

接口标识:(128-n)bit,相当于IPv4地址中的主机ID。

IPv6单播地址示例:2001:0DB8:6101:0001:5ED9:98FF:FECA:A298/64。

IPv6地址前缀

IPv6地址接口标识

目前有三种方式可以产生IPv6接口ID:

IEEE EUI-64规范

接口ID的典型长度是64位,IEEE EUI-64规范给出了一个由48位MAC地址自动生成64位Interface ID的方法。

具体的转换算法为:将上述的第7bit0取反,在MAC地址的中间(24bit处)插入两个字节:FFFE。(111111111111110)

这种由MAC地址产生IPv6地址接口ID的方法可以减少配置的工作量,只需要获取一个IPv6前缀就可以与接口ID形成IPv6地址。

使用这种方式最大的缺点就是某些恶意者可以通过二层MAC推算出三层IPv6地址。

设备随机生成

设备采用随机生成的方法产生一个接口ID,目前Windows操作系统使用该方式。

手动配置

顾名思义,手动配置就是人为指定接口ID来实现。

IPv6地址分类

根据IPv6地址前缀,可将IPv6地址分为为单播地址、组播地址和任播地址。

单播地址(Unicast Address:标识一个接口,目的地址为单播地址的报文会被送到被标识的接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。除了全球单播地址、唯一本地地址、链路本地地址这三种地址之外,IPv6还有一些特殊单播地址的存在:

未指定地址: 0:0:0:0:0:0:0:0/128 或者::/128。该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻居请求报文(NS)的源地址,或者DHCPv6初始化过程中客户端所发送的请求报文的源地址。

环回地址:0:0:0:0:0:0:0:1/128 或者::1/128,与IPv4中的127.0.0.1作用相同,用于本地回环,发往::/1的数据包实际上就是发给本地,可用于本地协议栈环回测试。

组播地址(Multicast Address:标识多个接口,目的地址为组播地址的报文会被送到被标识的所有接口。只有加入相应组播组的设备接口才会侦听发往该组播地址的报文。

任播地址(Anycast Address:任播地址标识一组网络接口(通常属于不同的节点)。目标地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。

IPv6没有定义广播地址(Broadcast Address)。在IPv6网络中,所有广播的应用层场景将会被IPv6组播所取代。

IPv6单播地址结构

一个IPv6单播地址可以分为如下两部分:

网络前缀(Network Prefix):n bit,相当于IPv4地址中的网络ID。

接口标识(Interface Identify):(128-n)bit ,相当于IPv4地址中的主机ID。

常见的IPv6单播地址如全球单播地址、链路本地地址等,要求网络前缀和接口标识必须为64 bit。

全球单播地址中,高位前3 bit为000的地址可以采用非64 bit的网络前缀

IPv6常见单播地址 - GUA

全局路由前缀:由提供商指定给一个组织机构,一般至少为48bit。目前已经分配的全局路由前缀的前3bit均为001。因此前缀为2000::/3。

子网:组织机构可以用子网ID来构建本地网络(Site),与IPv4中的子网号作用相似。子网ID通常最多分配到第64位。

主机位:用来标识一个设备(Host),与IPv4中的主机ID作用相似。

可以向运营商申请GUA或者直接向所在地区的IPv6地址管理机构申请。

地址范围2000到3FFF

单播地址规划

IPv6常见单播地址 - ULA

IPv6常见单播地址 - LLA

·

IPv6组播地址

IPv6组播地址各字段值对应的组播组类型和范围:

Flags:

0000表示永久分配或众所周知 ;

0001表示 临时的。

Scope:

0:预留;

1:节点本地范围;单个接口有效,仅用于Loopback通讯。

2:链路本地范围;例如FF02::1。

3:站点本地范围;

4:组织本地范围;

5:全球范围;

6:预留。

IPv6组播MAC

以太网传输单播IP报文的时候,目的MAC地址是下一跳的MAC地址。但是在传输组播数据包时,其目的地不再是一个具体的接收者,而是一个成员不确定的组,所以要使用组播MAC地址。

IPv4组播MAC地址

IANA规定,IPv4组播MAC地址的高24bit为0x01005E,第25bit为0,低23bit为IPv4组播地址的低23bit映射。

由于IPv4组播地址的高4bit是1110,代表组播标识,而低28bit中只有23bit被映射到IPv4组播MAC地址,这样IPv4组播地址中就有5bit信息丢失。于是,就有32个IPv4组播地址映射到了同一个IPv4组播MAC地址上,因此在二层处理过程中,设备可能要接收一些本IPv4组播组以外的组播数据,而这些多余的组播数据就需要上层进行过滤了。

IPv6组播MAC地址

在以太网链路上发送IPv6组播数据包时,对应的MAC地址是0x3333-A-A-A-A,其中A-A-A-A是组播IP地址的后32bit的直接映射。

被请求节点组播地址

当一个节点具有了单播或任播地址,就会对应生成一个被请求节点组播地址,并且加入这个组播组。该地址主要用于邻居发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。

被请求节点组播组地址的应用场景举例:在IPv6中,ARP及广播都被取消,当设备需要请求某个IPv6地址对应的MAC地址时,设备依然需要发送请求报文,但是该报文是一个组播报文,其目的IPv6地址是目标IPv6单播地址对应的被请求节点组播地址,由于只有目标节点才会侦听这个被请求节点组播地址,所以该组播报文可以被目标节点所接收,同时不会占用其他非目标节点的网络性能。

被请求节点组播地址 - 示例

类似于IPv4,IPv6同样有一些特殊的组播地址,这些地址由特别的含义,这里举几个例子(还有很多类似的特殊地址):

  • FF01::1(节点本地范围组播地址)
  • FF02::1(链路本地范围所有节点组播地址)
  • FF01::2(节点本地范围所有路由器组播地址)
  • FF02::2(链路本地范围所有路由器组播地址)
  • FF05::2(站点本地范围所有路由器组播地址)

IPv6任播地址

任播过程涉及一个任播报文发起方和一个或多个响应方。

任播报文的发起方通常为请求某一服务(例如,Web服务)的主机。

任播地址与单播地址在格式上无任何差异,唯一的区别是一台设备可以给多台具有相同地址的设备发送报文。

网络中运用任播地址有很多优势:

业务冗余。比如,用户可以通过多台使用相同地址的服务器获取同一个服务(例如,Web服务)。这些服务器都是任播报文的响应方。如果不是采用任播地址通信,当其中一台服务器发生故障时,用户需要获取另一台服务器的地址才能重新建立通信。如果采用的是任播地址,当一台服务器发生故障时,任播报文的发起方能够自动与使用相同地址的另一台服务器通信,从而实现业务冗余。

提供更优质的服务。比如,某公司在A省和B省各部署了一台提供相同Web服务的服务器。基于路由优选规则,A省的用户在访问该公司提供的Web服务时,会优先访问部署在A省的服务器,提高访问速度,降低访问时延,大大提升了用户体验。

IPv4与IPv6的对比

对比项

IPv6

IPv4

地址长度

128 bit

32 bit

报文格式

固定40 Byte的基本包头,变长的拓展字段来实现一些IPv6的特性

通过在基本头部上增加option字段的方式支持

拓展特性

地址类型

单播、组播、任播

单播、组播、广播

地址配置

静态、DHCP、SLAAC

静态、DHCP

重复地址检测

通过ICMPv6实现

通过免费ARP实现

地址解析

通过ICMPv6实现

通过ARP实现

IPv4

IPv6

地址空间

2的32次方

2的128次方

表示方式

点分十进制

冒号隔开的十六进制

地址类型

单播、组播、广播

单播、组播、任播

其它

A、B、C等主类地址

IPv6中无此概念

组播地址(224.0.0.0/4)

IPv6组播地址(FF00::/8)

广播地址

IPv6中无此概念

未指定的地址0.0.0.0/32

未指定的地址::/128

环回地址127.0.0.0/8

环回地址是::1/128

公网IP地址

全球单播地址

私网IP地址(10.0.0.0/8,172.16.0.0/12以及192.168.0.0/16)

唯一本地地址(FD00::/8)

APIPA地址(169.254.0.0/16)

链路本地地址(FE80::/10)

IPv6地址使用建议

华为数通笔记-IPV6基础相关推荐

  1. 华为数通笔记-OSPF基础

    OSPF简介 定义 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol ...

  2. 华为数通笔记-ISIS基础

    ISIS 英文全称:(Intermediate System to Intermediate System,中间系统到中间系统,一种动态路由协议) IS-IS是一种链路状态路由协议,IS-IS与OSP ...

  3. 华为数通笔记-路由基础

    IP路由基础 通过IP地址能够寻找到一个唯一的网络节点,每个IP都有自己所属的网段,这些网络可能分布在世界各地,共同组成了全球的网络. 为了实现不同网段之间的相互通信,网络设备需要能够转发来自不同网段 ...

  4. 华为数通笔记-ISIS高级特性

    ISIS收敛步骤 IGP的收敛可以总体描述为如下状态D+O+F+SPT+RIB+DD RIB状态和DD状态一般与路由器的硬件有关,如主CPU.线卡CPU.内存.网络处理器有关,这两个状态人为无法对收敛 ...

  5. 华为数通笔记-文件传输协议FTP

    文件传输协议 主机之间传输文件是IP网络的一个重要功能,如今人们可以方便地使用网页.邮箱进行文件传输. 然而在互联网早期,Web(World Wide Web,万维网)还未出现,操作系统使用命令行的时 ...

  6. 华为数通笔记-网络参考模型及数据通信过程

    OSI参考模型 7. 应用层 对应用程序提供接口. 6. 表示层 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解. 5. 会话层 在通信双方之间建立.管理和终 ...

  7. 华为数通笔记VXLANBGP EVPN

    VXLAN简介 定义 RFC定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网).VXLAN采用MAC in UDP(User ...

  8. 华为数通笔记-PPP

    PPP简介 通常,同步传输是以数据块为传输单位.每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,以固定时钟节拍发送数据信号. 通常,异步传输是以字符为传输单位,每个 ...

  9. 华为数通笔记-NDP原理

    概述: 节点使用NDP,可以确定连接在同一链路上的邻居的链路层地址,快速清除已经变成无效的缓存值.主机也使用NDP发现能为其转发报文的路由器.最后,节点使用此协议主动跟踪哪一个邻居可达,哪一个邻居不可 ...

最新文章

  1. [CF816B] Karen and Coffee(前缀和,思维)
  2. 腾讯开源首个医疗AI项目,业内首个3D医疗影像大数据预训练模型
  3. Design Pattern IDisposable Pattern C
  4. Emotion英语学习
  5. seo技巧-2015/10/05
  6. 云考古 | Azure 自建 RDS 让 iPad 跑 Office 97
  7. JavaFX技巧30:带有DropShadow的ScrollPane
  8. java 集成kafka单机版 适配jdk1.8
  9. 大神!有人花两年开发了一个新notebook,支持实时协作还更快
  10. 笨方法教你学python_笨方法学Python(1)
  11. VBA_Excel_教程:分枝循环结构
  12. 《云周刊》69期:开门红利!阿里云2月活动来袭
  13. c语言写俄罗斯方块(源码)
  14. DialogBox不显示对话框的原因分析
  15. 接口测试面试题及参考答案,轻松拿捏面试官
  16. 【学习笔记】《网络安全态势感知》第三章:网络安全数据采集与融合
  17. STM32CubeMX工程提示未定义变量LL_APB1_GRP1_PERIPH_BKP
  18. 蓝桥杯2014java_【图片】2014-2016蓝桥杯java本科B组省赛题_蓝桥杯吧_百度贴吧
  19. 流媒体播放器EasyPlayer.js如何实现动态设置解码H.265音频?
  20. vue 脚手架启动html,vue脚手架项目创建步骤详解

热门文章

  1. oracle 指定账套建表,FAQ-EAS账套备份恢复方法(oracle)
  2. 解决百度地图内存泄露问题
  3. Win7桌面怎么显示我的电脑图标
  4. 产品需求文档到底该怎么写?【转】
  5. 在北京信息科技大学的发言
  6. mac远程登录虚拟机
  7. Jenkins免密码登录
  8. php操作Word之com组件-获取word文档页码和更新目录
  9. 商品管理系统SSM练习开发详细手册
  10. php保存视频,使用php输出mp4视频