前言
随着Internet规模的扩大,IPv4地址空间已经消耗殆尽。针对IPv4的地址短缺问题,曾先后出现过CIDR和NAT等临时性解决方案,但是CIDR和NAT都有各自的弊端,并不能作为IPv4地址短缺问题的彻底解决方案。另外,安全性、QoS(服务质量)、简便配置等要求也表明需要一个新的协议来根本解决目前IPv4面临的问题。
IETF在20世纪90年代提出了下一代互联网协议-IPv6,IPv6支持几乎无限的地址空间。IPv6使用了全新的地址配置方式,使得配置更加简单。IPv6还采用了全新的报文格式,提高了报文处理的效率、安全性,也能更好的支持QoS。
一、IPv6的基本概念
1. IPv6地址
2. IPv6基本报头
IPv6的基本报头在IPv4报头的基础上,增加了流标签域,去除了一些冗余字段,使报文头的处理更为简单、高效。
IPv6报文由IPv6基本报头、IPv6扩展报头以及上层协议数据单元三部分组成。
基本报头中的各字段解释如下:
- Version:版本号,长度为4bit。对于IPv6,该值为6。
- Traffic Class:流类别,长度为8bit,它等同于IPv4报头中的TOS字段,表示IPv6数据报文的类或优先级,主要应用于QoS。
- Flow Label:流标签,长度为20bit,它用于区分实时流量。流可以理解为特定应用或进程的来自某一源地址发往一个或多个目的地址的连续单播、组播或任播报文。IPv6中的流标签字段、源地址字段和目的地址字段一起为特定数据流指定了网络中的转发路径。这样,报文在IP网络中传输时会保持原有的顺序,提高了处理效率。随着三网合一的发展趋势,IP网络不仅要求能够传输传统的数据报文,还需要能够传输语音、视频等报文。这种情况下,流标签字段的作用就显得更加重要。
- Payload Length:有效载荷长度,长度为16bit,它是指紧跟IPv6报头的数据报文的其它部分。
- Next Header:下一个报头,长度为8bit。该字段定义了紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型。
- 跳数限制(Hop Limit),长度为8bit,该字段类似于IPv4报头中的Time to Live字段,它定义了IP数据报文所能经过的最大跳数。每经过一个路由器,该数值减去1;当该字段的值为0时,数据报文将被丢弃。
- Source Address:源地址,长度为128bit,表示发送方的地址。
- Destination Address:目的地址,长度为128bit,表示接收方的地址。
与IPv4相比,IPv6报头去除了IHL、Identifier、Flags、Fragment Offset、Header Checksum、 - Options、Padding域,只增了流标签域,因此IPv6报文头的处理较IPv4大大简化,提高了处理效率。另外,IPv6为了更好支持各种选项处理,提出了扩展头的概念。
3. IPv6扩展报头
IPv6扩展报头是跟在IPv6基本报头后面的可选报头,可以有一个或多个。
IPv6增加了扩展报头,使得IPv6报头更加简化。一个IPv6报文可以包含0个、1个或多个扩展报头,仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。IPv6支持多个扩展报头,各扩展报头中都含有一个下一个报头字段,用于指明下一个扩展报头的类型。这些报头必须按照以下顺序出现:
- IPv6基本报头
- 逐跳选项扩展报头
- 目的选项扩展报头
- 路由扩展报头
- 分片扩展报头
- 认证扩展报头
- 封装安全有效载荷扩展报头
- 目的选项扩展报头(指那些将被分组报文的最终目的地处理的选项)
- 上层协议数据报文
除了目的选项扩展报头外,每个扩展报头在一个报文中最多只能出现一次。目的选项扩展报头在一个报文中最多也只能出现两次,一次是在路由扩展报头之前,另一次是在上层协议扩展报头之前。
二、IPv6地址格式和地址类型