![19b2f8bd2a28fddf601a987f2fa17d38.gif](https://i-blog.csdnimg.cn/blog_migrate/020ebd97a55401a07592ac7334b402f4.gif)
IPv6
1. IPv6地址优势
随着Internet规模的扩大,由IANA分配的IPv4地址空间已经消耗殆尽。针对IPv4的地址短缺问题,曾先后出现过CIDR和NAT等临时性解决方案,减缓了IPv4地址地耗尽,但也破环了IP端到端的完整性,并不能作为IPv4地址短缺问题的彻底解决方案。
所以提出了IPv6,它具有如下优点:
a)拥有2^128的地址(IPv4只有2^32个);
b)更简洁的报文头部;
c)内置的安全性;
d)更好的QoS支持;
e)更好的移动性。
2. IPv6地址表示
2.1 IPv6的表示方式
IPv4 用二进制或十进制来表示地址,IPv6 采用十六进制表示。IPv6地址 = 前缀 + 接口标识。
前缀:相当于IPv4地址中的网络ID。前缀长度用“/xx”来表示如:2001:da8:207::8207/64。
接口标识:相当于IPv4地址中的主机ID。
2.2转化方法
将原先的128 位分为8 个部分,每个部分16 位;再将每部分的16 位二进制以4 位为整体转化成16 进制数,如1000 00000000 0001 转化为 16 进制的 8001 ;得到的 IPv6 地址,可将每部分全 0 缩写为一个 0 ,连续部分的全 0 可使用一次双冒号“ :: ”表示。3. IPv6地址分类
IPv6地址分为单播地址、组播地址、任播地址。
3.1单播地址:用来唯一标识一个接口
全球单播地址:2000::/3。
站点本地地址:FEC0::/10。
链路本地地址:FE80::/10。
唯一本地地址:FC00::/7。
3.2组播地址:用来标识一组接口
组播地址形式:FF00::/8。
3.3任播地址
用来标识一组接口,与单播地址使用相同的地址空间。目前任播地址目前只被用作目的地址使用。3.4特殊地址
未指定地址:::/128。
环回地址:::1/128。
4. IPv6报文格式
IPv6 数据包由一个基本报头、0 个或多个扩展报头和上层协议单元构成。4.1 IPv6的基本报头
Version:占4位,用来指明IP的版本号,IPv6版本值是6。
Traffic Class:占8位,指明了IPv6包的类型或者优先级。流量类型字段提供了与IPv4服务类型字段中相似的功能。
Flow Label:占20位,流标志用于非默认性质的连接服务,例如有实时性需要的数据(声音和图像)。对于默认路由器处理,流标志被设置成0。在一个源站和目的站之间能有多种流量,由非零流标志区分。
Payload Length:占16位,指明IPv6有效载荷的长度。有效流量载荷字段包括了扩展头和上层PDU。对于有效载荷长度超过65535字节的就被设置成0。
Next Header:占8位,指明了第一个扩展报头或者高层UDP(例如TCP,UDP或者ICMPv6)中的协议。
Hop Limit:相似于IPv4的 TTL字段。
Source Address:128位,源IPv6地址。
Destination Address:128位,目的IPv6地址。
Possible Extension Header(s):扩展报头,可以有多个。
Payload:有效载荷,即除去数据报头和尾部校验的原始数据。
4.2 IPv4与IPv6报头区别
a)去除部分:
IHL(IP头部长度。IPv6基本报头的长度固定,不需要IHL对报文头部进行描述);
Identification(标识);
Flags(标志);
Frag.Offset(片偏移);
option(扩展功能。该功能移到扩展报头)。
b)改名部分:
Service Type---traffic class;
packet length---payload length;
ttl---hop limit;
Protocol---next header;
c)新增部分:
Flow label (流标签:可对实时流量进行分类) 。
4.3 IPv6的扩展报头
IPv6支持多个扩展报头,各扩展报头中都含有一个下一个报头字段,用于指明下一个扩展报头的类型。这些报头必须按照以下顺序出现:
1)IPv6 基本报头,协议号41 ;2) 逐跳选项扩展报头Hop-by-Hop Options header ,协议号0 ;3) 目的选项扩展报头Destination Options header ;4) 路由扩展报头Routing header ,协议号43 ;5) 分片扩展报头Fragment header ,协议号44 ;6) 认证扩展报头Authentication header ,协议号51 ;7) 封装安全有效载荷扩展报头Encapsulating Security Payload header ,协议号50 ;8) 目的选项扩展报头( 用于最终目标) ,协议号60 ;9) 上层协议数据报文。5. IPv6过渡技术
IPv6 的过渡技术包括双栈、隧道、网络地址转换。5.1双栈
双栈技术是指在网络节点上同时运行IPv4 和IPv6 两种协议,应用程序根据DNS 解析地址类型来选择使用IPv6 或IPv4 协议。优点:互通性好,实现简单,允许应用逐渐从IPv4过渡到IPv6。
缺点:只适用于双栈节点本身;对每个IPv4节点都要升级,成本较大,没有解决IPv4地址紧缺问题。
5.2隧道技术
隧道技术指将另外一个协议数据包的报头直接封装在原数据报报头前,从而实现不同协议在网络上直接进行传输。 如GRE 隧道技术在IPv6 报文前加上GRE 报头,再加上IPv4 报头。优点:通用性好;技术成熟,易于理解。
缺点:转发效率低;无法实现IPv4和IPv6互通;无法解IPv4短缺问题。
5.3地址转换
包括NAT64与DNS64技术。
NAT64 :是一种有状态的网络地址与协议转换技术,一般只支持通过IPv6网络侧用户发起连接访问IPv4侧网络资源。但NAT64也支持通过手工配置静态映射关系,实现IPv4网络主动发起连接访问IPv6网络。NAT64可实现TCP、UDP、ICMP协议下的IPv6与IPv4网络地址和协议转换。
DNS64:主要是配合NAT64工作,主要是将DNS查询信息中的A记录(IPv4地址)合成到AAAA记录(IPv6地址)中,返回合成的AAAA记录用户给IPv6侧用户。
以IPv6客户端访问IPv4服务端为例,来解释DNS64和NAT64的配合工作原理:
1)IPv6客户端向DNS64服务器请求www.abc.com的AAAA记录,即请求对应的IP地址;
2)DNS64服务器将请求转发给DNS服务;
3)DNS服务器缓存里并没有www.abc.com的AAAA记录,就无法回复IP地址;
4)DNS64服务器就换成请求www.abc.com的A记录;
5)此时DNS服务器有www.abc.com的A记录,就回复对应的IP地址;
6)DNS64服务器将收到的IPv4地址加上64:FF98:0:0的前缀,构成IPv6地址回复给IPv6客户端;
7)IPv6客户端尝试与该IPv6地址建立TCP连接,中途需经过NAT64服务器进行IPv4与IPv6的TCP转化回复。
扫码关注
图文:郑泽辉
排版:陈海心