IPv6简介
IPv6优势;
更大的地址空间:地址由32位变成了128位,也就是说会有2的128次方个理论上的地址可以被使用,这样从目前来看就一劳永逸的解决了IP地址的紧张问题。
基于前缀的地址类型:在IPv6里不同的地址有不同的前缀,那么前缀是固定的,地址类型就可以轻易的区分出来。
支持接口自动配置;
支持服务类型区分:有一个Class for service的概念;
改进了组播的支持:IPv4也支持组播,只不过IPv6改进了对组播的支持;
内置的认证加密机制:内置IP security 系列协议;
提供了几种IP4到IP6的升级方式:这点很重要,现在4的发展非常好,投资特别大,所以必然要解决如何保护用户现有的投资,所以平滑的4到6的升级方式是非常必要的;
提供最大的地址空间是IPv6的最主要的优势。
IPv6地址
IPv4地址:点分十进制比如:202.113.12.112,是32位2进制数被写成了4个十进制数,每个数在0—255之间,最大地址空间是2的32次方,也就是4G的样子;
IPv6地址:
128位的IP地址,写成冒号分割的16进制的方法,FE80:0000:0000:0000:0001:0800:23e7:f5db
每四位是16位2进制数,8组16位二进制数就可以表示128位2进制数;
这个地址写起来很繁琐,这里面有一些冒号之间是全0,这个时候可以把“0000”写成“0”,或者把前导的0去掉,比如0001写成1,也可以把连续的0000用连续的冒号替代,当然为了避免二义性,连续两次的:只能写一次,而且只能把一串连续的0变成连续的::,没有二义性就可以轻易的推导出原始格式。
IP地址分类
三种地址类型:
Unicast:单播,指代一台主机的一个端口,当我们用这个地址进行通信或者进行网上数据传输的时候,目标的接收主机就是一台主机;
Multicast:主播,指代一组计算机,当数据包经过此方式传送的时候,那么这一组计算机都会受到此数据包。广播是组播的一种特殊的形式;
Unicast和multicast是IPv4和IPv6兼容的;
Anycast:IPv6独有的,任意播(随便翻译,呵呵),它是一个特殊的单播地址,但是它同时分配给多个主机的接口,当多个主机有共同的anycast地址的时候,网络转发者比如路由器会把带有anycast的数据包转发给任意符合此地址的主机,那么具体转发给谁取决于策略(比如谁离的最近,谁的带宽最高etc),也就是说当一个IP包的目标地址是anycast的时候,由网络传输设备交给任意一个拥有anycast地址的主机,对IP包的传输提供了更好的灵活性。
IPv6地址前缀:
IPv6是靠前缀区分类别的,前缀有很多种方式
(2进制)
0000 0000 Reserved
0000 001 Reserved for NSAP
0000 010 Reserved for IPX
001 Aggregatable Global Unicast addresses
(16进制)
等同于 2000: :/3
APNIC 2001:0200::/23
ARIN 2001:0400::/23
RIPE 2001:0600::/23
6Bone 3FFE::/16
6to4Tunnel 2002::/16
100 Reserved for Geographic-based Unicast addresses
1111 1110 10 Link-local addresses
1111 1110 11 Site-local addresses
1111 1111 Multicast addresses
IPv6数据包格式;
首先有一个与Ipv4兼容的version字段,占四个bit;后面有class字段,用于服务类型的区分,区分的是class for service,不同的流有不同的服务类型,放在class这八个比特里面;flow label,从特定的源发送到特定的目的,这样的一系列的报文叫做一个流,对一个流可能有一个特殊的处理方法,路由器只要看到这个标志就知道它是属于哪个流的包,就知道如何去处理,不需要去检查每个报文其余的报文头,所以flow label也是Ipv6一个很有特色的地方,有了class 和 flow label字段,使得Ipv6比较适合去传输需要QOS(quality of service)的信息;payload length是整个负载的长度;next header是下一头的指示,ipv6数据包是一个基本的头和多个扩展的头连接起来,然后进行多头的可扩展的结构;Hop Limit,相当于Ipv4中的TTL;下面是128的source Address 和128的destination address;整个的IP头比4中的长,主要是地址占据了更多的空间,从简洁和效率上来讲比IP4是要好的多了。