IPv6 是Internet Protocol Version 6的缩写,其中Internet Protocol译为“互联网协议”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,号称可以为全世界的每一粒沙子编上一个网址。

由于IPv4最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。

IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。

IPv6

地址长度:128位

地址数量:2^128(约3.4×10^38)

 

IPv6 头结构

版本号 表示协议版本.值为6
流量等级 主要用于QoS
流标签 用来标识同一个流里面的报文
载荷长度 表明该IPv6包头部后包含的字节数,包含扩展头部
下一报头 该字段用来指明报头后接的报文头部的类型,若存在扩展头,表示第一个扩展头的类型,否则表示其上层协议的类型,它是IPv6各种功能的核心实现方法
跳数限制 该字段类似于IPv4中的TTL,每次转发跳数减一,该字段达到0时包将会被丢弃
源地址 标识该报文的来源地址
目的地址 标识该报文的目的地址

 

IPv6 扩展头部

IPv6报文中不再有“选项”字段,而是通过“下一报头”字段配合IPv6扩展报头来实现选项的功能。

使用扩展头时,将在IPv6报文下一报头字段表明首个扩展报头的类型,再根据该类型对扩展报头进行读取与处理。

每个扩展报头同样包含下一报头字段,若接下来有其他扩展报头,即在该字段中继续标明接下来的扩展报头的类型,从而达到添加连续多个扩展报头的目的。

在最后一个扩展报头的下一报头字段中,则标明该报文上层协议的类型,用以读取上层协议数据

 

IPv4

地址长度:32位

地址数量:2^32(约4×10^9)

 

IPv4 头结构

IPv4数据报文由首部和数据两部分组成。

首部头部,前一部分是固定长度,共20个字节,是所有IPv4数据报必须具有的。

可选字段,在首部的固定部分的后面是一些可选字段,其长度是可变的。

字段

长度

含义

版本

4比特

IP协议的版本号,分为IPv4和IPv6协议。

首部长度

4比特

IPv4的首部长度。

区分服务

8比特

用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。

总长度

16比特

指首部和数据之和的长度。

标识

16比特

IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。

标志

3比特

目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。

片位移

13比特

指出较长的分组在分片后,该片在原分组中的相对位置。

生存时间TTL(Time To Live)

8比特

表示数据报在网络中的寿命,功能是“跳数限制”。

协议

8比特

指出此数据报携带的数据是使用何种协议。

首部检验和

16比特

数据报每经过一个设备,设备都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。

源地址

32比特

报文发送方的IPv4地址。

目的地址

32比特

报文接收方的IPv4地址。

选项字段

0~40字节长度可变

用来支持排错、测量以及安全等措施。在必要的时候插入值为0的填充字节。

数据部分

可变

用来填充报文。

 

IPv4 扩展头部

 

IPv6 与 IPv4 头部对比

 

 

IPV6 理解的十个误区

1. IPv6 还不能用于生产环境

IPv6 已经开发了20年了,最初的工作是在1992年展开的,叫做“IP Next Generation”,在1998年被标准化为 IPv6。[]在2008年在因特网上部署,并且2008年的奥运会服务器就支持 IPv6。在2011年6月8日,几个大型网站开始测试启用 IPv6,叫做“World IPv6 Day”。所以 IPv6 是经过时间检验,可以正式商用的

 

2. IPv6 将破坏我的网络

IPv6 并不是 IPv4 的补丁,它是一个新的协议可以在同一根网线上传输。它并不要求你禁用 IPv4,所以你并不需要对现有的网络进行更改。你可以在你的网络中同时部署 IPv6 和 IPv4。

 

3. IPv6 很难用

IPv6 和 IPv4 最大的区别是,IPv6 的地址长度是 IPv4 的四倍(128/32=4),地址的数量翻了无数倍(10^29倍)。你也许会认为 IPv6 的地址太难记了,但是IPv6和 IPv4 的结构是一样的,子网加主机。你可以将一个 IPv6 的地址读为“子网2中的主机7”。虽然你的地址中有很多的数字,但是那不意味着你不能用零来填充,可以用16进制简写。

 

4. 用户会恨我

IP地址对用于一般是透明不可见的,域名或APP交互即可,所以大部分用户不会注意到 IPv4 还是 IPv6。大部分的PC操作系统和浏览器都支持 IPv6。IPv6 支持 IPv4 支持的那些协议,例如 TCP 和 UDP。它也是通过 DNS 来解析地址,也就是说只要你不是使用 IP 地址来访问,IPv6 对于你来讲就是透明的。

 

5. IPv6 不安全

由于地址充足,IPv6 不需要 NAT,这是一件好事。NAT 隐藏了局域网内部的结构,但是 NAT 也就相当于防火墙规则的安全性。一个不好的安全规则等于没有规则。NAT 并不是为安全而建的,它只是延长 IPv4 寿命的折中方案。正如很多折中方案一样,它有副作用。NAT 让管理员和入侵者都很难理解网络结构。IPv6 的可怕在于它让公众意识到 NAT 这位国王原来没有穿衣服!

 

6. IPv6 生来就是安全的

坊间总是有传闻 IPv6 比 IPv4 更安全,因为它支持 IPSec VPN。但是 IPSec 只有你设置的时候才起作用,并且 IPv4 也支持它。IPSec 并没有让 IPv6 比 IPv4 更安全。但这个传闻也不是完全不对,起码 IPv6 的地址范围让地址扫描比 IPv4 困难很多。

 

7. 不急着部署 IPv6

Internet 发展到今天,我们已经面临一个问题,有些地方 - 特别是亚洲 - 已经没有新的 IP 地址可以用。人们仍然可以上网,那是因为 ISP 使用了 NAT。但是在 IPv4 上使用 NAT 比迁移到 IPv6 要麻烦很多。很多经济正在高速发展的地区正在面临 IPv4 地址匮乏的问题,他们有强烈的需求迁移到 IPv6。

 

8. 我马上就要部署 IPv6

即使 IPv6 已经被广泛部署,IPv4 也不会马上消失。IPv4 仍将在互联网上存在很长一段时间,特别是企业内网。IPv4 将和 IPv6 并行存在。

 

9. 没有人在使用 IPv6

在2011年的“WOrld IPv6 Day”过后,2012年迎来了“World IPv6 Launch”。绝大部的主要网站已经运行在 IPv6 上。很多 ISP 和路由器厂商加入了这项行动,使得 IPv6 更容易被访问。在 World IPv6 Launch 之后,任何人都可以使用 IPv6 了。

 

10. 我并没有用 IPv6

这大概是所有误解中最严重的一条。大部分的操作系统都是支持 IPv6 的,并且默认启用。如果你认为你的网络并不支持 IPv6,那很有可能是你不知道。即使你把 IPv6 路由功能关掉,类似于 Teredo 这样的管道协议也可以让一台主机拥有公共的 IPv6 地址,甚至是在 NAT 后面。

 

IP地址数量

截至2017年12月,我国IPv6地址数量为23430块/32,年增长10.6%

全球 IPv4 地址数已于2011年2月分配完毕,全球IPv4总地址 2^32 大约40亿个,

其中,需除去一些保留A、B、C段,如 10.0.0.0、172.16.0.0-172.31.0.0、172.168.0.0 、 192.168.0.0

自2011年开始我国IPv4地址总数基本维持不变,截至2017年12月,共计有33870万个,全球占比 3.387/40 = 8.468%

数据来自于:2018年中国互联网络发展状况统计报告

IP个数查询:https://neo.quadranet.com/utilities/ip

IPv6测试:http://test-ipv6.com

 

IPv6表示方法

IPv6的地址长度为128bit,是IPv4地址长度的4倍。

于是IPv4点分十进制格式不再适用,采用十六进制表示。

IPv6有3种表示方法:

一、冒分十六进制表示法

格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:

ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

这种表示法中,每个X的前导0是可以省略的,例如:

2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A

二、0位压缩表示法

在某些情况下,一个IPv6地址中问可能包含很长的一段0,可以把连续的一段0压缩为“::”

但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:

FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::

三、内嵌IPv4地址表示法

为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:

X:X:X:X:X:X:d.d.d.d

前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,

例如

::192.168.0.1

::FFFF:192.168.0.1

就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用

 

 

参考推荐

IP地址段与子网掩码

2018年中国互联网络发展状况统计报告

阿里云、腾讯云等弹性IP的开发API接口

9大代理服务器软件的比较与分析