当前位置: 首页 > news >正文

IPv6简介

IPv6是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议。目前IP协议的版本号是4(简称为IPv4),它的下一个版本就是IPv6。

一、简介

目前我们使用的第二代互联网IPv4技术,核心技术属于美国。它的最大问题是网络地址资源有限,从理论上讲,编址1600万个网络、40亿台主机。但采用A、B、C三类编址方式后,可用的网络地址和主机地址的数目大打折扣,以至目前的IP地址近乎枯竭。其中北美占有3/4,约30亿个,而人口最多的亚洲只有不到4亿个,中国截止2010年6月IPv4地址数量达到2.5亿,落后于4.2亿网民的需求。地址不足,严重地制约了中国及其他国家互联网的应用和发展。

一方面是地址资源数量的限制,另一方面是随着电子技术及网络技术的发展,计算机网络将进入人们的日常生活,可能身边的每一样东西都需要连入全球因特网。在这样的环境下,IPv6应运而生。单从数量级上来说,IPv6所拥有的地址容量是IPv4的约8×10^28倍,达到2^128(算上全零的)个。这不但解决了网络地址资源数量的问题,同时也为除电脑外的设备连入互联网在数量限制上扫清了障碍。

但是与IPv4一样,IPv6一样会造成大量的IP地址浪费。准确的说,使用IPv6的网络并 没有2^128个能充分利用的地址。首先,要实现IP地址的自动配置,局域网所使用的子网的前缀必须等于64,但是很少有一个局域网能容纳2^64个网络 终端;其次,由于IPv6的地址分配必须遵循聚类的原则,地址的浪费在所难免。

但是,如果说IPv4实现的只是人机对话,而IPv6则扩展到任意事物之间的对话,它不仅可以为人类服务,还将服务于众多硬件设备,如家用电器、传感器、远程照相机、汽车等,它将是无时不在,无处不在的深入社会每个角落的真正的宽带网。而且它所带来的经济效益将非常巨大。

当然,IPv6并非十全十美、一劳永逸,不可能解决所有问题。IPv6只能在发展中不断完善,也不可能在一夜之间发生,过渡需要时间和成本,但从长远看,IPv6有利于互联网的持续和长久发展。目前,国际互联网组织已经决定成立两个专门工作组,制定相应的国际标准。

二、特点

(1)IPV6地址长度为128位,地址空间增大了2的96次方倍;

(2)灵活的IP报文头部格式。使用一系列固定格式的扩展头部取代了IPV4中可变长度的选项字段。IPV6中选项部分的出现方式也有所变化,使路由器可以简单路过选项而不做任何处理,加快了报文处理速度;

(3)IPV6简化了报文头部格式,字段只有8个,加快报文转发,提高了吞吐量;

(4)提高安全性。身份认证和隐私权是IPV6的关键特性;

(5)支持更多的服务类型;

(6)允许协议继续演变,增加新的功能,使之适应未来技术的发展;

三、与IPv4相比的优势

1、IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,最大地址个数为2^32;而IPv6中IP地址的长度为128,即最大地址个数为2^128。与32位地址空间相比,其地址空间增加了2^128-2^32个。

2、IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。

3、IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。

4、IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。

5、IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,在IPV6中的加密与鉴别选项提供了分组的保密性与完整性。极大的增强了网络的安全性。

6、允许扩充。如果新的技术或应用需要时,IPV6允许协议进行扩充。

7、更好的头部格式。IPV6使用新的头部格式,其选项与基本头部分开,如果需要,可将选项插入到基本头部与上层数据之间。这就简化和加速了路由选择过程,因为大多数的选项不需要由路由选择。

8、新的选项。IPV6有一些新的选项来实现附加的功能。

四、IPv6数据包

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

其中的各个字段分别为:

Version(版本号):4位,IP协议版本号,值= 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(生命期)字段,用包在路由器之间的转发次数来限定包的生命期。包每经过一次转发,该字段减1,减到0时就把这个包丢弃。

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

Destination Address(目的地址):128位,在大多数情况下,目的地址即信宿地址。但如果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口。

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

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

目前,RFC 2460中定义了以下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协议包头

提供加密服务。

五、IPv6 编址

从IPv4到IPv6最显著的变化就是网络地址的长度。RFC 2373 和RFC 2374定义的IPv6地址,就像下面章节所描述的,有128位长;IPv6地址的表达形式一般采用32个十六进制数。

IPv6中可能的地址有3.4×10^38个。

在很多场合,IPv6地址由两个逻辑部分组成:一个64位的网络前缀和一个64位的主机地址,主机地址通常根据物理地址自动生成,叫做EUI-64(或者64-位扩展唯一标识)。   

IPv6地址表示

IPv6地址为128位长,但通常写作8组,每组为四个十六进制数的形式。例如:

2001:0db8:85a3:08d3:1319:8a2e:0370:7344是一个合法的IPv6地址。

如果四个数字都是零,可以被省略。例如:

2001:0db8:85a3:0000:1319:8a2e:0370:7344

等价于

2001:0db8:85a3::1319:8a2e:0370:7344

遵从这些规则,如果因为省略而出现了两个以上的冒号的话,可以压缩为一个,但这种零压缩在地址中只能出现一次。因此:

2001:0DB8:0000:0000:0000:0000:1428:57ab

2001:0DB8:0000:0000:0000::1428:57ab

2001:0DB8:0:0:0:0:1428:57ab

2001:0DB8:0::0:0:1428:57ab

2001:0DB8::1428:57ab都是合法的地址,并且他们是等价的。但 2001::25de::cade是非法的。(因为这样会使得搞不清楚每个压缩中有几个全零的分组)

同时前导的零可以省略,因此:   2001:0DB8:02de::0e13等价于2001:DB8:2de::e13

一个IPv6地址可以将一个IPv4地址内嵌进去,并且写成IPv6形式和平常习惯的IPv4形式的混合体。

IPv6有两种内嵌IPv4的方式:IPv4映像地址和IPv4兼容地址。

IPv4映像地址有如下格式:::ffff:192.168.89.9

这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:ffff:c0a8:5909的另外一种写法罢了。IPv4映像地址布局如下:

| 80bits |16 | 32bits |

+---------------------------- +--------+------------------------|

0000....................0000 | FFFF | IPv4 address |

+---------------------------- +--------+----------------------- |

IPv4兼容地址写法如下:::192.168.89.9

如同IPv4映像地址,这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:0000:c0a8:5909的另外一种写法罢了。

IPv4兼容地址布局如下:

| 80bits |16 | 32bits |

+---------------------------- +--------+------------------------|

0000....................0000 | 0000 | IPv4 address |

+---------------------------- +--------+----------------------- |

IPv4兼容地址已经被舍弃了,所以今后的设备和程序中可能不会支持这种地址格式。

六、地址类型

地址中的前导位定义特定的 IPv6 地址类型。包含这些前导位的变长字段称作格式前缀 (FP)。

IPv6 单播地址被划分为两部分。第一部分包含地址前缀,第二部分包含接口标识符。表示 IPv6 地址/前缀组合的简明方式如下所示:ipv6 地址/前缀长度。

以下是具有 64 位前缀的地址的示例:

3FFE:FFFF:0:CD30:0:0:0:0/64.

此示例中的前缀是 3FFE:FFFF:0:CD30。该地址还可以以压缩形式写入,如 3FFE:FFFF:0:CD30::/64。   IPv6 定义以下地址类型:

单播地址(Unicast) 用于单个接口的标识符。发送到此地址的数据包被传递给标识的接口。通过高序位八位字节的值来将单播地址与多路广播地址区分开来。多路广播地址的高序列八位字节具有十六进制值 FF。此八位字节的任何其他值都标识单播地址。

以下是不同类型的单播地址:

链路本地地址。这些地址用于单个链路并且具有以下形式:FE80::InterfaceID。链路-本地地址用在链路上的各节点之间,用于自动地址配置、邻居发现或未提供路由器的情况。链路-本地地址主要用于启动时以及系统尚未获取较大范围的地址之时。

站点本地地址。这些地址用于单个站点并具有以下格式:FEC0::SubnetID:InterfaceID。站点本地地址用于不需要全局前缀的站点内的寻址。

可聚集全球地址。这些地址可用在 Internet 上并具有以下格式:001(FP,3 位)TLA ID(13 位)Reserved(8 位)NLA ID(24 位)SLA ID(16 位)InterfaceID(64 位)。

镶有IPv4地址的IPv6地址。这些地址主要是用在自动隧道上,这类节点即支持IPv4也支持IPv6,兼容的地址通过设备以隧道方式传送报文。

任播地址(Anycast) 任播,也叫泛播。一组接口的标识符(通常属于不同的节点)。发送到此地址的数据包被传递给该地址标识的所有接口(根据路由走最近的路线)。任播地址类型代替 IPv4 广播地址。

通常,节点始终具有链路本地地址。它可以具有站点本地地址和一个或多个全局地址。

组播地址(Multicast) IPv6中的组播在功能上与IPv4中的组播类似:表现为一组接口对看到的流量都很感兴趣。

组播分组前8比特设置为FF。接下来的4比特是地址生存期:0是永久的,而1是临时的。接下来的4比特说明了组播地址范围(分组可以达到多远):1为节点,2为链路,5为站点,8为组织,而E是全局(整个因特网)。

七、在服务器上的配置

1、Windows XP/Windows 2003 操作系统

(1) IPv6 协议栈的安装

在 开始 --> 运行 处执行 ipv6 install

(2) IPv6 地址设置

在 开始 --> 运行 处执行 netsh 进入系统网络参数设置环境,然后执行 : interface ipv6

画面显示:netsh interface ipv6>

然后再执行 :add address “本地连接” 2001:da8:207::9402

(3) IPv6 默认网关设置

在上述系统网络参数设置环境中执行 :add route ::/0 “本地连接” 2001:da8:207::9401 publish=yes

(4) 网络测试命令   ping6 、 tracert6

2. Linux 操作系统

(1) 安装ipv6协议

#modprobe ipv6

(2)IPv6 地址设置

ifconfig eth0 inet6 add 2001:da8:207::9402

(3) IPv6 默认网关设置

route -A inet6 add ::/0 gw 2001:da8:207::9401

(4) 网络测试命令

ping6 、 traceroute6

3. Solaris 操作系统   

(1) 创建 IPv6 接口

touch /etc/hostname6.hme0

(2)添加 IPv6 地址

在 /etc/inet/ipnodes 文件中 , 加入如下一行 :2001:da8:207::9402 ipv6.********.bnu-ipv6

(3)设置 dns 查找顺序

在 /etc/nsswitch.conf 文件中 , 修改 hosts 和 ipnodes 项如下 :

hosts: files dns

ipnodes: files dns

(4) 添加默认路由

route add -inet6 default 2001:da8:207::9401 -interface

(5) 测试命令

ping -A inet6 IPv6 目标地址   traceroute -A inet6 IPv6 目标地址

 

本文讲解了IPv6的一些基础知识,希望对IPv6感兴趣的朋友有所帮助,想了解跟多的内容,可以看下《IPv6详解 卷1:核心协议实现》和《IPv6详解,卷2:高级协议实现》,这两本书对IPv6的技术做了很详细的说明。

相关文章:

  • 什么是MAC地址
  • ARP协议详解
  • iptables防DDOS攻击和CC攻击设置
  • 华为路由器交换机VLAN配置实例
  • Cisco 路由配置语句汇总
  • Apache如何防止DDOS攻击—mod_evasive模块的配置
  • 利用JK连接Apache与Tomcat,实现负载均衡
  • Ubuntu配置和修改IP地址
  • 几个有用的Apache下.htaccess设置
  • Linux查看硬件信息的方法
  • Linux下优化Apache保证web服务器安全
  • 从零开始学习Linux 基础(二)—磁盘、分区与文件系统
  • apache中开启Gzip和expires,优化页面访问速度
  • Technicolor TG582n 后门
  • Alcatel-Lucent 无限制后门
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Asm.js的简单介绍
  • ES6--对象的扩展
  • gcc介绍及安装
  • iOS编译提示和导航提示
  • Java读取Properties文件的六种方法
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Swift 中的尾递归和蹦床
  • 关于springcloud Gateway中的限流
  • 排序算法之--选择排序
  • 使用Swoole加速Laravel(正式环境中)
  • 算法-图和图算法
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #{}和${}的区别是什么 -- java面试
  • #vue3 实现前端下载excel文件模板功能
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)常见O(n^2)排序算法解析
  • (2020)Java后端开发----(面试题和笔试题)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (一)基于IDEA的JAVA基础10
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)程序员疫苗:代码注入
  • (转载)Google Chrome调试JS
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .htaccess 强制https 单独排除某个目录
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 项目指定SDK版本
  • .Net Core与存储过程(一)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET关于 跳过SSL中遇到的问题
  • .ui文件相关
  • ?