你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

IPv6(Internet Protocol Version 6,下一代IP协议)解决哪些问题?

  • IPv4地址的耗尽(于2011年2月耗尽),32bit的地址段大小已经明显枯竭了。不少运营商通过NAT技术变相的扩充地址池(将多个私网地址NAT成单个公网地址,进而缩减公网地址的利用,NAT分静态NAT、动态NAT、PNAT等)。NAT技术能够让由私有IP构成的局域网内所有的计算机通过一台具有公网IP和NAT功能的网络设备联入公网(Internet),也就是说一个局域网就只需要一个或很少几个公网IP就行了,从而达到了节约公网IP地址的目的。然后NAT技术也只是起到缓解作用,远水解不了近渴,NAT技术随之带来了溯源等安全性问题(NAT技术隐藏了私网地址)。因此IPv6的出现可以彻底解决地址短缺问题(128bit的地址段2^128,保守估算IPv6实际可分配的地址,整个地球的每平方米面积上可分配1000多个地址)。
  • IP安全性考虑(支持IPsec),IPv6扩展了地址层次结构,采用灵活的首部格式(定义了许多扩展首部),IPv6允许数据包含有选项的控制信息(选项放在有效荷载中)。

IPv6中的IPSec选项可以对IP层上的通信提供加密和授权,可以实现远程企业内部网的无缝接入,IPSec的认证报文用于保证数据的一致性,而封装的安全负载报头用于保证数据的保密性和数据的一致性。在IPv4里也支持IPSec,但IPv4的IPSec是通过叠加方式实现的,在IPv4报文之前再加上一个IPSec头,一方面需要支持增减IPSec头的设备,另一方面两个报文会使报文携带数据的有效载荷变少了,传输效率下降,和IPv6的实现方式没法比。另外,病毒和互联网蠕虫是最让人头疼的网络攻击行为,在IPv4的网络里饱受其苦,这种传播方式在IPv6的网络中就玩不转了,这些病毒或蠕虫还想通过扫描地址段的方式来找到有机可乘的主机就犹如大海捞针,IPv6的安全性得到提升。

  • IPv6服务质量更棒,IPv6地址中QoS服务质量主要有两部分:一个8位的业务流量类别Traffic Class和一个新的20位的流标签Flow Label,业务流字段扩大到1个字节,这就可以定义256个级别的优先级,对各种多媒体信息根据紧急性确定数据包的优先级,从而保证每一项服务都能达到用户满意的质量,这与IPv4中的TOS(服务质量字段)相比已经有了很大提高。IPv6还包含一些关于控制QoS的消息,实现优先级控制和QoS保证,将很大程度上改善服务质量。

IPv4升级的原因有如下六点:

  1. 地址太少,32bit 才42亿多个地址,因为地址缺乏,产生中间技术NAT。---本质原因
  2. IPv4复杂的报头(基础包头就20byte),网络节点处理效率不高
  3. 重编制困难,复杂的路由器和主机配置。要么手工配置或者dhcp。
  4. 很大的路由表,地址分配杂乱无章。Internet公网路由条目20来万条。IANA前期派发地址没有遵循CIDR。
  5. 部署安全,组播,移动比较麻烦。IPsec 若是NAT则不可以部署IPsec VPN(NAT破坏了端到端的连接性),并且是需要大量的命令。但是IPv6是集成了IPsec的,基本不需要太多命令。
  6. 移动性,IPv6内部已经集成了移动性。对移动终端的支持很好。

IPv6报文结构(与v4对比)


你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

IPv6固定40字节的基本首部,去掉首部的没必要的功能,使得IPv6首部字段数减至8个。

  • 取消首部长度字段,因为固定了首部长度为40个字节;
  • 取消了服务类型字段;取消了服务类型字段;
  • 取消了总长度字段,改用有效载荷长度字段
  • 把TTL字段改为跳数限制字段
  • 取消了协议字段,改用下一个首部字段
  • 取消了校验和字段;
  • 取消了选项字段,用扩展首部来实现选项功能(逐条选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项)

IPv6特性:

  1. 报头简单:虽然报头大,但是字段少,路由器收到ipv6报文查找三层信息时候更快。
  2. 取消广播(广播带有强制性,并且广播只能在一个广播域内传递),IPv6使用组播来取代广播。
  3. 无校验和,L2--IPv6(无连接协议,不需要校验和)--TCP(校验和)--HTTP--FCS(帧尾校验);三层报头完全没必要校验和,减少延迟。
  4. 扩展报头 类似IPv4上层协议号。
  5. 流标签-扩展QOS应用(当前被保留)。

IPv6地址:(取消了IPv4的广播)

  • 单播(unicast):传统点对点通信
  • 多播(multicast):一点多多点通信
  • 任播(anycast):任播的目的站是一组计算机,但是数据报在交付时只交付其中一个,通常就近原则选择距离最近的那个。


你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

GUA地址范围2000::/3 to 3FFF::/3 2001:DB8::/32地址空间保留。link-local地址类似私网,不可在公网路由。

Link-Local地址:FE80::/64,可以通过EUI-64自动生成链路本地地址;也可以给路由器接口静态手动配置链路本地地址。用于在同一链路上的设备通信。不能在公网上路由,类似与IPv4的私网地址。一个IPv6设备必须至少有一个Link-Local地址。

GUI地址(全球唯一):2000::/3~3FFF::/3 , 3(Global Routing Prefix)--1(Subnet ID)--4(Interface ID)原则,一个主机(接口)可以有多个GUI地址。

IPv6使用冒号分十六进制表示(8*16也即8段),允许将数字前的0省略,允许0压缩成::(::只能用一次,多次使用怎么判定压缩了多少位0段),比如FF08:0:0:0:0:0:0:BB可缩减为FF08::BB。

EUI-64地址(前24bit为公司标识符+后面40位扩展标识符):

  • 根据接口的MAC地址再加上固定的前缀来生成一个IPV6的地址。在IPv6无状态地址自动配置过程以及接口下生成的Link-local链路本地地址的过程中,一般是根据EUI-64规则来生成接口ID部分:也就是IPv6地址128位长度中的后64位部分。
  • IEEE EUI-64地址表示有一个用于网络接口寻址的新标准。在IPv6中,无状态自动配置机制(指在网络中没有DHCP服务器的情况下,允许节点自动配置IPv6地址的机制)使用EUI-64格式来自动配置IPv6地址
  • 工作原理:自动将48bit的以太网MAC地址扩展成64bit,再组合一个64bit的IPv6地址前缀,组成一个IPv6地址。(link-local 地址也是依据此原理)


你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

链路(Link-Local)本地地址:

配置方式:

1、手动

2、自动:eui64(根据mac地址换算而来)、 stable_secret(跟随网络环境的变化而变化,处于固定网络环境时其值将固定)、 random(随机生成)

全球单播(GUA)地址:等级结构 3-1-4规则(前缀位3段占48bit,子网位1段占16bit,主机位4段占64bit)

配置方式:

1、手动

2、自动:

(1)无状态(Stateless):依据路由RA报文包含的prefix前缀信息自动配置IPv6地址,组成方式是Prefix + (EUI64 or 随机)。Stateless也可以称为SLAAC(Stateless address autoconfiguration)。

(2)有状态(Stateful):通过DHCPv6方式获得IPv6地址。

其中“有状态”又分为2种

(1)有状态DHCPv6(Stateful DHCPv6):IPv6地址、其他参数(如DNS)均通过DHCPv6获取。

(2)无状态DHCPv6(Stateless DHCPv6):IPv6地址依然通过路由通告RA方式生成,其他参数(如DNS)通过DHCPv6获取。

IPv6协议栈:ICMPv6

IPv6协议栈里的ICMPv6协议合并了IPv4的ICMP、IGMP、ARP功能。

IPv6地址解析工作在网络层,叫邻居发现协议。邻居发现协议与链路层协议无关,不像IPv4的ARP介于链路层和网络层之间。这样实现加强了地址解析协议与底层链路的独立性,对每一种链路层协议都使用相同的地址解析,无须再为每一种链路层协议定义一个新的地址解析协议;IPv6的地址解析还利用三层组播寻址,限制了报文的传播范围,可节省网络带宽。另外IPv6取消了广播,只有组播,因为IPv6的地址掩码段里包含的地址太多了,如果采用广播方式,发送的报文数量比IPv4时要多得多,严重占用网络带宽,必须取消广播的方式;安全性得到提升。在网络层实现地址解析,可以利用网络层标准的安全认证机制来防止ARP攻击和ARP欺骗,大大提升网络安全,试想IPv4里的大部分病毒和漏洞攻击,都是针对ARP的,可见IPv4的地址解析不够安全,IPv6提升了一个档次。

ICMPv6的功能:

你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

  • 解析网段内其他节点的IP地址;
  • 给节点做无状态地址自动配置;
  • 做地址重新迁移;
  • 跟踪邻居状态;
  • 检测网段内是否有其他PC使用相同的IP地址(解决地址冲突);
  • 路由器发现及重定向;


你真的了解IPv6协议栈吗,IPv4与IPv6有何区别?

ICMPv6 NDP邻居发现

RA路由器通告报文(ICMPv6 type 134):IPv6路由器只要启用了GUA地址,就会周期性(默认200s)发送RA报文(源地址router link-local address , 目的地址 all-node multicast address)。包含的内容主要是网段内的路由前缀,发给网段内的所有节点。邻居收到后就使用EUI-64去生成自己的GUA地址,类似于IPv4的DHCP,这个过程称之为“无状态地址配置”。

RS路由器请求报文(ICMPv6 type 133 ):一台PC连接到IPv6网段,若发现接进来后没有立即收到RA报文,则会立即发送RS请求给网段路由器发送RA报文(源地址:PC link-local地址,目的地址:all-router multicast address)。

NS邻居请求报文(ICMPv6 type 135类似于IPv4中的ARP请求报文。NS邻居请求报文请求邻居的二层Mac地址。(源地址src =0(::),目的地址:自己的被请求节点地址 ) 。

也可以用于重复地址检测DAD,正常是不会有人应答的,除非地址和我自己的一样,那就说明地址冲突了。

NA邻居通告报文(ICMPv6 type 136):类似与IPv4的ARP应答报文

ICMPv6 Type 135 NS 、136 NA 取代ARP,检测重复地址DAD。

ICMPV6 Type 133 RS 、134 RA 无状态地址自动配置 & Renumbering(重新编址)

注意:两路由器之间的连接,不需要发送RA。 路由器只会周期性的通过以太网接口发送RA,通过环回口、串口默认是不会发送此报文的。RA本身的目的是发给PC的。

所以在路由器互联接口可以配置RA的报文抑制:

R2(config)#interface ethernet 0/0

R2(config-if)#ipv6 nd ra suppress #抑制RA报文的发送(只有在以太网接口被抑制)

无状态自动配置SLAAC

使用 SLAAC,主机通常使用本地链接 fe80::/64

地址来调出其接口。主机随后向 ff02::2(全路由器本地链接多组播)发送一个“路由器请求RS”。本地链接上的 IPv6 路由器以网络前缀以及其他可能的信息来响应主机的本地链接地址。主机随后将该网络前缀与其通常构建的接口ID(构建方式与本地链接地址相同)配合使用。路由器定时发送多播更新(“路由器转发”)以确认或更新其提供的信息。

DHCPv6技术

上述无状态地址配置方案中设备并不记录所连接的IPv6主机的具体地址信息,可管理性差。而且当前无状态地址配置方式不能使IPv6主机获取DNS服务器的IPv6地址等配置信息,在可用性上有一定缺陷。DHCPv6一种有状态地址自动配置协议就可以解决这个问题。

与其他IPv6地址分配方式(手工配置、通过路由器通告消息中的网络前缀无状态自动配置等)相比,DHCPv6具有以下优点:

  • 更好地控制IPv6地址的分配。DHCPv6方式不仅可以记录为IPv6主机分配的地址,还可以为特定的IPv6主机分配特定的地址,以便于网络管理。
  • DHCPv6支持为网络设备分配IPv6前缀,便于全网络的自动配置和网络层次性管理。
  • 除了为IPv6主机分配IPv6地址/前缀外,还可以分配DNS服务器IPv6地址等网络配置参数。
  • 由于没有广播地址,DHCPv6 的工作原理与适用于 IPv4 的 DHCP 略有不同。基本上,主机将 DHCPv6 请求从其本地链接地址发送到 ff02::1:2 上的端口 547/UDP,即全局DHCP服务器本地链接多播组。然后 DHCPv6 服务器通常向客户端的本地链接地址上的端口 564/UDP 发送一个包含相应信息的回复。

国家都力推IPv6部署,但是在双栈情况下部分应用资源还没有全部改到位(毕竟要重新开发一套支持IPv6的系统还是需要花费很大的人力物力的),故而导致我们通过双栈去访问许多应用时还是不顺畅。目前就教育网、几个大厂(BAT)的IPv6资源访问可能相对愉快点。


分享到:


相關文章: