IP地址之IPv6
一、IPv6概述
目前使用的IP地址都是IPv4版本,之所以开发出IPv6版本主要是基于以下原因:
1、IPv4地址空间不足,分配不合理;
2、IPv4头部太过于复杂;
3、使用IPv4使得路由器及主机配置复杂;
4、对于IPv4重新编址很困难;
5、使用IPv4会造成庞大的路由表信息;
6、IPv4对于安全、组播、移动网络的支持不够。
针对于以上问题,目前所采用的解决方法如下:
1、NAT
使用NAT技术来将内网的私有地址转换成可以在公网通信的IP地址,节省地址空间;但做NAT会消耗系统资源,而且会破坏端到端IP应用。
2、子网划分
子网划分是将一个大的IP段划分为多个小的IP段,以满足更多的网络需求;但子网划分会进一步造成IP的浪费,每个网络都有一个网络地址和一个广播地址,这两个地址是不能进行通信的,所以划分的网络越多,IP就浪费的越多。
3、DHCP
DHCP可以根据需要来自动的分配IP地址,长时间不用的IP就会回收以便再次分配出去。
4、无类域间路由(CIDR)
CIDR用于解决路由表庞大的问题,CIDR会将属于一个子网的多条路由条目I汇总成一条路由以减少路由表的复杂度。
5、加强地址管理
二、IPv6基本包头
IPv6的基本包头相对于IPv4要减化了不少,其各项的含义如下:
Version:版本,值为6;
Traffic class:相当于IPv4中的Service Type,用于标识服务类型。
PPP:表示IP数据包的优先级,很少使用;
D:若为0表示一般延迟,若为1表示为低延迟;
T:若为0表示一般传输量,若为1表示高传输量;
R:若为0表示为一般可靠度,若为1表示高可靠度。
Flow Label:流标签,长度为20位,用于标识同一数据流。
PayloadLength:包的总长度,相当于IPv4中的Package Length。
Next header:包后面的上层协议,相当于IPv4中的Protocol。
1:ICMP
4:IP
6:TCP
17:UDP
除了以上的协议标识外,Next header还可以是标识扩展头,后面会介绍。
Hop Limit:相当于IPv4的TTL,取值范围1-255。
三、IPv6扩展头
扩展头位于IPv6的基本头于四层段头之间的位置。
IPv6中定义了6大选项扩展头:逐跳选项头、选路头、分段头、目的地选项头、身份验证头(AH)头,封装安全性净荷(ESP)头。
扩展头用于实现IPv6中的扩展功能,由于IPv6尚未普及各个扩展头的功能就不此描述了,下面看一下各个扩展头在Next header字段中所对应的值
0:逐跳头
43:选路头
44:分段头
51:身份验证头
52:封装安全性净荷头
59:没有下一跳
60:目的地选项头
RFC1883规定,扩展头链接应按以下顺序:
1、IPv6基础头
2、逐跳选项头
3、目的地选项头
4、选路头
5、分段头
6、身份验证头
7、封装安全性净荷头
四、IPv6编址
IPv6采用128位二进数值来标识地址信息,为了简化书写和记忆的难度,将其转换成16进制数值。
IPv6地址的表示法有三种,分别是:
1、首选格式
直接将二进制数转换成十六进制数。
2、压缩表示
方法1:前导0省略。
方法2:连续两个冒号之间的0可以省略,直接用两个冒号即可,如"::",但一个IPv6地址只能使用一次,否则会发生混淆。
IPv6地址分单播地址、组播地址、任意播地址。
1、单播地址
单播地址就是可以在互联网上进行通信的地址。单播的范围为:2000::/4-3fff::/4。
2、链路本地地址
用于同一个链路上的相邻节点之间通信,相当于IPv4里面的169.254.0.0/16地址。IPv6的路由器不会转发链路本地地址的数据包。其前缀为FE80::/64,其前缀是固定不变的。
3、站点本地地址
对于无法访问internet的本地网络,可以使用站点本地地址,这个相当于IPv4里面的私有地址。前缀是FEC0::/48。站点本地址址已被收回,其原因是IPv6数据足够多,不需要私有地址来节省空间了。
4、回环地址
回环地址::1用于标识一个回环接口,可以使一个节点可以给自己发送数据包。相当于IPv4的回环地址127.0.0.1。