• IPv6的概念
    • IPv4的问题
    • IPv6的优势
    • IPv6的报头改进
    • IPv6地址表达
      • 表达方式
      • 接口ID的生成
      • IPv6的特殊地址
    • IPv6报文格式
  • IPv6地址类型
    • 全球单播地址
    • 链路本地地址
    • 站点本地地址
    • 唯一本地地址
    • 组播地址
    • 任播地址
    • 特殊地址

 

IPv6的概念

【计算机网络】第十章:IPv6概念引入_计算机网络

IPv4:已经公网地址数量不够用以及安全等问题。因此,现在的现状就是全世界将就着用IPv4,IPv6有但是不普及。v4终将被v6替代。
IP地址的分配不太均衡,美国占据全球半数的IP地址,欧洲相对匮乏,亚太地区问题则更加严重。

IPv4的问题

【计算机网络】第十章:IPv6概念引入_计算机网络_02
解决地址空间不足的临时性解决方案:

  • DHCP:动态主机配置协议。使用时分配地址,不使用(关机)或契约时间到达,收回公网IP地址。
  • CIDR:无类别域间路由。无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。通过子网划分的方法,让相同的IP地址因不同的子网掩码而不同。
  • NAT:地址转换服务。企业内网使用私网地址,私网地址在不同企业之间可以重复,访问外网时转换为唯一的公网地址,让一个公网地址代表一个企业。

上述方法都有各自的弊端,不能作为根本性的解决方案。且IPv4还面临着许多安全问题,如ARP的先天不足而导致的一系列问题。

【计算机网络】第十章:IPv6概念引入_计算机网络_03

  1. 由于现在已经不是平均一人一台电脑,可以一人多台,加上服务器和企业用设备,公网地址现在也是勉强够用。地址紧张可能只出现在我们这种人口庞大的国家,对于美国而言,可能一个学校的地址范围就比得上我们市级地址范围(纯粹口胡,只是表达一下人口不密集的国家,v4仍然没有我国这样紧张,比如韩国)。
  2. 网络地址浪费:在互联网初期,由于人们没曾想过现在的普及量,从而像新浪搜狐等都使用过A类地址,造成了大量的地址浪费。因而在各路由器拓扑上配置的比较糟糕,过于冗长的路由表浪费了路由器过多资源。
  3. Qos服务质量在V4时代没有考虑,从而导致现在更灵活高效的环境下显得无力。例如,Qos用于给数据包分成不同优先级,在带宽有限时,高优先级数据包优先传输,低优先级数据包可以缓慢传输或者不传输。现在需要管理员进行人工设定,对资源和人力都是一种浪费。

IPv6的优势

【计算机网络】第十章:IPv6概念引入_计算机网络_04

  1. 地址空间巨大:v4理论上提供了43亿地址空间,但是由于地址保留和地址分配的原则,实际上可用的地址远远达不到43亿。而v6的128位地址数量,相当于43亿x43亿x43亿x43亿的地址数量,形象比喻成每个地球人可用拥有超过1000个以上的IPv6地址。v6近乎无限的地址空间是与v4最根本的区别。现阶段我们认为IPv6的地址空间是不可能分配完的。

  2. 报文结构优化。
    【计算机网络】第十章:IPv6概念引入_计算机网络_05
    IPv4的报头长度是不固定的,基本长度是20字节,加上扩展部分最多可以有60字节。如果IPv4数据包中包含了扩展的Option选项,会对路由器有两个消极的影响。路由器需要对这些拥有option选项的数据包进行分流处理,影响路由效率,报头长度不固定因而不利于直接使用硬件来进行路由选择。Internet发展到现在,随着万兆以太网技术的出现,物理链路上的传输速度显著改善,现在路由器的处理速度成为了阻碍Internet发展的主要因素之一。
    IPv6对IPv4的报头进行了一些优化。红色标识的部分都已经被去掉了。IPv6有固定头部和扩展头部,对于V4版本中Option选项的一些功能都被移动到了扩展头部中,这样就不需要路由器对扩展头部进行特别处理。除非设定了一些特有的扩展头部中的选项,路由器会进行一定的特别处理,但是即便设定了这些选项,相对于IPv4,路由器仍然可以高效处理。
    扩展头部和头部的扩展部分是不同的,一个是专门单独的一块区域,用于实现某些功能,一个是在头部追加一些信息,使得头部长度可变。

  3. 自动配置和重新编址。通过网关向内部网络通告一个网络前缀,就能获得一个IPv6全局地址。当网段变化 ,只需要网关通告新的网络前缀即可,大大提高了可管理性。

  4. 层次化网络结构和路由聚合。路由汇总减少路由器中路由表的条目数,提高路由转发效率。加快网络收敛,增加网络稳定性。IPv6相比于IPv4,对于这些操作更加方便。

  5. 支持安全和移动特性。IPv4需要额外设定协议, IPv6的扩展报头本征就支持安全协议,实现端到端安全。任何基于IPv6的认证不需要额外的认证协议。移动互联网时代下,IPv6采用了路由和目标选项的扩展头部,支持移动特性。

  6. 更好地支持Qos。头部中的流标签是V4没有定义过的,该标签使得路由器可以对同一种流的数据包进行标识和特殊处理。使用这个标签可以使得路由器不打开内部的负载数据就可以标识出这一种数据,即使负荷部分进行了加密,也仍然可以实现对于Qos的支持。这是IPv6的主要优势。


IPv6的报头改进

【计算机网络】第十章:IPv6概念引入_计算机网络_05
比较上图,我们来分析一下。

  • 黄色部分。V6对V4进行了保留。
  • 红色部分。V6去掉了这一部分。包括首部长度、标识符、flag、片偏移、option、补充位、头部校验等。这些功能如果要在IPv6中实现,则就在基本头部后面加一个扩展头部来实现。
  • 蓝色部分。在IPv4中,表示一组数据流我们需要知道源地址、目标地址、传输层协议和端口号、源MAC地址、目标MAC地址等,而IPv6中,只需要源地址、目标地址和流标签,因此IPv6执行Qos时更加灵活。路由器收到数据包后需要对数据包的每个字节进行分析和处理,IPv6地址占头部空间的比重大,头部组成元素种类少,路由器处理种类变少,从而提高了识别和读取效率。
    【计算机网络】第十章:IPv6概念引入_计算机网络_07
    【计算机网络】第十章:IPv6概念引入_计算机网络_08

IPv6的地址扩充,可以让地球允许每个人轻松拥有1000个IP地址。不需要地址分配,自动发现和自动配置简化了网络管理和维护。
Anycast:一种提供客户端就近访问的通信方式。复数同功能同企业的服务器的v6地址共用,通过Anycast服务器,客户端访问服务器时,由于目标IP地址是唯一且存在多个目标,此时会选择就近目标。提高访问效率,且可以有效减缓DDOS攻击,因为各地的僵尸机发送的流量会被这种机制转发到其他同地址服务器,使得分散了DDOS流量,则DDOS攻击想要成功则需要比v4时使用几倍以上的流量。


IPv6协议栈
【计算机网络】第十章:IPv6概念引入_计算机网络_09
V4到V6的升级是网络层的升级,与传输层、数据链路层等无关。v6取消了v4部分协议,并用新生协议扩展了部分协议的内容以及规避了风险。

IPv6地址表达

表达方式

【计算机网络】第十章:IPv6概念引入_计算机网络_10
IPv6的地址是128位二进制,一个16进制可以表示8位二进制,所以共16个16进制(8个字节)。用冒号隔开,每部分2字节。那么这个地址就很复杂了,人如果想要记忆很不方便,因而需要自动分配。
地址压缩:8组如果一组全为0,则可以简写成0;如果一组中,0开头,则可以简写0,只写0结束后的部分;如果有几组连续的0,则可以用双冒号表示,不需要在意是多少组连续0,计算机可以区分。但是这种表示方法只能在一个v6地址中使用一次。
ex)
1234 : 0000 : 0000 : 0000 : 0000 : 0000 : 0008 : 8000 1234:0000:0000:0000:0000:0000:0008:8000 1234:0000:0000:0000:0000:0000:0008:8000
= 1234 : : 8 : 8000 =1234::8:8000 =1234::8:8000【计算机网络】第十章:IPv6概念引入_计算机网络_11
子网掩码用位数表达,而不是255数量。混合地址会用.来表示v4。v6中一组地址是4位16进制,也就是16位二进制。而v4地址,是四组4位2进制,都是16位二进制。也就说v6中v4地址占一组地址空间。【计算机网络】第十章:IPv6概念引入_计算机网络_12
IPv6接口部分的生成方法:
1.手工分配:一般用于服务器,服务器为网民提供服务时。
2.自动生成:有网络前缀即可自动无重复分配。一般win系统在无状态分配时,就是使用这种方式。
3.IEEE规范生成。linux或安卓苹果等系统在无状态分配时使用。


接口ID的生成

【计算机网络】第十章:IPv6概念引入_计算机网络_13
MAC地址:前24位是厂商ID,每一个厂商唯一。后24位是厂商分配的,要求不可重复的网卡ID。第七位如果是1则该mac地址全球唯一,若为0则表示本地唯一。

EUI-64规范就是在中间(第24位之后)插入FFFE并将第七位的0改为1。由于这一位变成了0,也就表示这个地址在全球是唯一的。

也就说使用这种规范的前提下,只需要网关给一个网络前缀,接口ID可以由设备本身自动生成。

IPv6的特殊地址

【计算机网络】第十章:IPv6概念引入_计算机网络_14
默认情况下,前64位是网路部分,后64位是主机部分。通过全球路由前缀区分区域,子网划分区域内的小区域,更加方便运维管理。前48位是路由前缀, 前64位是子网前缀。
【计算机网络】第十章:IPv6概念引入_计算机网络_15
在同一网段中通信时,优先使用链路本地地址而不是网络地址。

【计算机网络】第十章:IPv6概念引入_计算机网络_16
【计算机网络】第十章:IPv6概念引入_计算机网络_17
全球单播地址:2000::/3。把2000展开写成0010 0000 0000 0000,可以发现第一组地址中001x即是单播地址,而0011表示的是3。也就说v6中,2和3开头的地址是单播地址。
【计算机网络】第十章:IPv6概念引入_计算机网络_18
在同一网段中,ping计算机名,默认使用v6的链路本地地址。当然,强行使用v4也可以ping通。
IPv6访问网站:http://[2001:12::2]:80 地址需要用中括号括起来。

IPv6报文格式

【计算机网络】第十章:IPv6概念引入_计算机网络_19
IPv6的基本头部:是每个IPv6数据包必须包含的。固定长度40byte。提供了数据包转发的基本信息,途径的所有路由器都会解析基本头部。
IPv6的扩展头部:可有可无,根据需要来。长度可变,没有固定长度也没有最大长度的限制,因而可以容纳IPv6通信时所有的扩展数据。扩展头部被当做有效载荷的一部分,一般情况下不被路由器解析,通常只有目标设备才会处理扩展头部。当然存在个别情况,但是效率仍高于IPv4。
上层数据单元:TCP/UDP/IGMP等。
【计算机网络】第十章:IPv6概念引入_计算机网络_20

  • Version版本号:4bit,0.5byte。对于IPv6而言,值是6。
  • Traffic Class流类别:业务标识,长度是8it,1byte。等同于IPv4的Tos,表示这一类IPv6数据包的优先级,主要应用于Qos。

TOS包括共8位,包括3 bit的优先权字段(取值可以从000-111所有值),4 bit的TOS子字段和1 bit未用位但必须置0。
3bit的8个优先级的定义如下:
111–Network Control(网络控制);
110–Internetwork Control(网间控制);
101–Critic(关键);
100–Flash Override(疾速);
011–Flash(闪速);
010–Immediate(快速);
001–Priority(优先);
000–Routine(普通)。
优先级6和7一般保留给网络控制数据使用,如路由。
优先级5推荐给语音数据使用。
优先级4由视频会议和视频流使用。
优先级3给语音控制数据使用。
优先级1和2给数据业务使用。
优先级0为默认标记值。
在标记数据时,既可以使用数值,也可以使用名称(英文名称)。
4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
Telnet、Rlogin这两个交互应用要求最小的传输时延,FTP文件传输要求最大吞吐量,最高可靠性是指网络管理(SNMP)和路由选择协议。用户网络新闻要求最小费用

  • Flow Label流标签:20bit,2.5byte。用于区分实时流量。流可以理解为特定的应用或进程发送的,从某一个地址到另一个或多个地址的连续报文。我们可以使用不同的流标签加源地址来确定数据流,中间设备可以基于这些信息进行更高效的数据流的区分。现在的网络需要传输的不仅是传统数据,还有很多实时数据(语音、视频),因此流标签显得格外重要。
  • Payload Length有效载荷长度:16bit,2byte。指的是紧跟在基本头部后面的数据长度。包括扩展头部和上层数据单元,总称有效载荷部分。
  • Next Header下一个头部:8bit。指的是紧跟在基本头部后面的第一个扩展头部,如果它存在。类似于IPv4的 protocol id。
  • Hop Limit跳数限制:长度8bit,类似于IPv4的TTL字段(生存时间),定义了数据包能够经过的路由器最大数目,没经过一个路由器,该数值-1,当值为0,则路由器丢弃该数据包。
  • 源地址/目标地址:128*2/8=32字节。
    共计40byte。

**扩展头部:**扩展头部可以没有,也可以有多个。它位于基本头部和继承的上层数据传输单元之间。【计算机网络】第十章:IPv6概念引入_计算机网络_21
特点:长度无限制,扩展头部总是8个字节的整数倍。

  • 扩展头部内也包含一个[Next Header]的字段,也是8bit,代表该头部后的扩展头部。也可以指上层继承的有效数据(简称载荷)。
  • 扩展头部长度,表示剔除Next Header以后的本报文长度。
  • 数据:长度、内容可变。可以有填充部分。
    IPv6可以有多个扩展报头,添加多个报头时,需要按照一定顺序。
    【计算机网络】第十章:IPv6概念引入_计算机网络_22

【计算机网络】第十章:IPv6概念引入_计算机网络_23

NextHeader的值是58,表示下一个数据包是ICMP数据包,比起IPv4的报文格式不同(IPv4的protoc id是1表示ICMP)。但是对于TCP(都是6)等,NextHeader和protocol id的值代表的是一样的。

【计算机网络】第十章:IPv6概念引入_计算机网络_24

IPv6地址类型

【计算机网络】第十章:IPv6概念引入_计算机网络_25
IPv6中没有广播地址的概念,但是增加了一个任播地址。

  • 全球单播地址:目前已经分配的全球单播地址的前缀都是001开头,也就是16进制的2000开头。所以目前所有单播地址的地址范围是2000~3FFF。IPv6中使用前缀长度来表示地址的网络部分,不再使用网络掩码。上述的全球单播地址空间占IPv6地址空间的八分之一。
  • 保留地址:全球单播地址的一部分。不同于私网地址,但是这部分地址也不会出现在公网上。
  • 链路本地地址:不能跨越到本网段之外。用于二层交换机连接的各个节点之间通信,在没有分配全球单播地址时,可以使用链路本地地址通信。且在IPv4的地址存在时,局域网内通信优先使用IPv6链路本地地址。
  • 站点本地地址和唯一本地地址:IPv6中的私网地址,后面详细介绍。
  • 组播地址:组播地址用于标识一组节点,加入某个组播组的成员会接收发往这个组播组相应的地址的数据报文。
  • 特殊地址: : : / 128 ::/128 ::/128可以看成v4中DHCP请求IP地址时的0.0.0.0地址,在未分配地址时使用该地址。但是不能把它当做默认路由0.0.0.0,在IPv6中,默认路由是 : : / 0 ::/0 ::/0。环回地址 : : 1 / 128 ::1/128 ::1/128可以理解为v4的127.0.0.1,用于测试本机的IPv6协议栈是否工作正常。
  • 任播地址:说白了就是将一个相同服务类型的单播地址分配给多个服务器,让多个服务器拥有一个相同的单播地址。这个单播地址被分配到了多个节点上。当客户端请求服务时,请求数据包会发送到离发送源最近的服务器节点上。目前还没有被广泛使用。
    接下来我们来看一下细节。

全球单播地址

【计算机网络】第十章:IPv6概念引入_计算机网络_26
Aggregatable Global Unicast Address简称AGUA,全球单播地址。就是IPv6中的公网地址,允许对路有前缀进行汇总,从而限制了全球路由表的数量。全球单播地址有全球路有前缀和子网ID以及接口ID。虽然看上去有三个部分,但是这个全球路有前缀本身也有多个部分。第一部分是注册机构规定的,比如亚太地区是2400/12,然后进一步划分给ISP,划分给移动联通电信等网络运营商,然后ISP拿到后,再对剩下的几位进行下一步划分,最后企业和个人拿到的全球路有前缀就是经由注册机构、ISP等共同划分的结果。
企业拿到全球路由前缀后,进一步划分子网ID。一般是16个比特位,可以分六万多个子网。 一般而言接口ID是64位,而全球路有前缀加子网ID共64位。两部分分别充当IPv4中的主机部分和网络部分。

链路本地地址

【计算机网络】第十章:IPv6概念引入_计算机网络_27
链路本地地址只能应用到连接到同一个链路的节点之间使用(局域网内使用,无法通过路由转发),前十位是1111 1110 10,后面54位全0。也就说见到FE80::/10时,就是一个链路本地地址。这是一个非常重要的概念,后面会频繁接触。

站点本地地址

【计算机网络】第十章:IPv6概念引入_计算机网络_28
IPv6的私有地址,不会路由到公网上,FEC0::/10是它的前缀。站点本地地址是微软提出的概念,他认为尽管IPv6地址池非常大,但是有些用户就是习惯使用内网来保证内部信息的安全,因此保留了内网私有地址的使用。
局限性:当网络大规模部署以及企业间合并时,这部分地址容易有冲突。所以现在一般推荐使用唯一本地地址。

唯一本地地址

【计算机网络】第十章:IPv6概念引入_计算机网络_29
改良以后的IPv6私有地址,它只能应用在企业内网中而不能被转发到公网上。
构成:

  • 前缀部分固定FC00::/7
  • L:表示的是使用范围。1表示在本地使用,0被保留,方便以后出现地址空间不足时的扩展。
  • 全球唯一前缀:随机分配,由于40个比特位随机组合,当两个企业合并时,两个企业内设备可以直接通信,冲突的概率极低。
  • 子网ID:方便企业进行进一步功能划分,16比特位可以分六万多个地址。方便进一步管理。
    路由器配置只要限制过滤FC00开头的地址,就能保证私网数据不会传播到公网上。

组播地址

【计算机网络】第十章:IPv6概念引入_计算机网络_30
用于IPv6的组播应用和协议,由于IPv6中不大使用组播,所以通信核心大量使用了组播地址。比如邻居发现和组播路由和ARP等。
前缀:

  • 标志字段:FF00::/8。

  • flag:四位二进制组成,前三位恒为0。第四位如果是0,表示该地址恒为组播,如果是1则是一个临时组播。因此如果前缀为FF0x就是永久组播地址,如果是FF1x就是临时组播地址。

  • 范围:规定了组播数据流在网络中发送的范围。如果值是1则表示本地的接口范围,2表示本地的链路范围,3本地子网范围,4本地管理的范围,5站点范围,8整个组织机构,E全球范围。我们用的最多的是FF02表示永久链路组播地址。
    IPv4中有一个224.0.0.4地址,是由OFPS使用的,也是在一个链路范围内有效。IPv6继承了部分IPv4的功能,特殊的部分地址如图所示。
    组播组ID没有把后面112位比特都当做组ID,而是只使用了其中的最后32位。为了映射到组播MAC地址方便,这个映射类似于IPv4中组播IP地址到组播MAC地址的正映射过程。

  • 请求节点组播地址Solicited-Node:最后的24位bit不定。用于IPv6中的ARP请求。当一个节点或路由器接口配置了一个单播地址,就会自动将这个节点或接口的地址加入一个这样的组播组。如果某一个PC想要获取这个节点的MAC地址,就向这个组播组发送相应的ARP请求。这后面的24位bit就是由相应节点或者接口的MAC地址的后24位直接映射过来。

任播地址

【计算机网络】第十章:IPv6概念引入_计算机网络_31
任播地址标识一组提供相同网络服务的接口或节点。如图所示,两台服务器都提供同样的HTTP服务,我将一个单播地址赋予这两个服务器节点。当用户发请求时,请求报文会发送到离请求者路由意义上最近的节点。它共享单播地址空间,企业中应用时,相同功能服务器分配同一个单播地址来使用任播的形式来响应用户请求,可以有复数优势。
1.当某一个服务器发生故障down掉,由于其他工作中服务器的IP地址并未改变,不需要重新建立连接,用户可以正常访问服务器。而如果不使用任播,则需要重新建立一个TCP连接。
2.实现负载均衡和提供冗余。动态的分担网络流量压力,当任播地址服务器数量足够多时,甚至能够一定程度上消化DDOS。因为DDOS攻击的目的是占据网络带宽,而基于IPv6的特性,DDO击的流量将被分流道离僵尸机路由意义最近的服务器,流量将被分流成多分,加之不断提高的带宽,能够增加DDOS难度。任播地址对于黑客而言,将更加考验技术。

特殊地址

【计算机网络】第十章:IPv6概念引入_计算机网络_32
未指定地址可以作为某些IPv6数据报文的源地址的,比如DHCP请求报文或者重复地址检测等。IPv6重复地址检测:在地址查重未确定时,不能够使用被分配的IP地址。不能使用被分配的地址之前,使用的地址就是这一个地址。

环回地址:前面已经介绍过,不再赘述。