美文网首页
一文读完IPv4与IPv6的区别

一文读完IPv4与IPv6的区别

作者: 喜忧参半 | 来源:发表于2023-12-29 23:16 被阅读0次

    IPv6编址与寻址

    IPv6地址

    IPv4:32 bits or 4bytes long
    分为私有地址和公有地址,上网需要做一个NAT转换,主要为了解决地址少问题。
    IPv6:128 bits or 16bytes : 4 tims the bits of IPv4


    v6地址和v4地址表示方法不同:
    用十六进制表示:如:FE08:...
    16位一组,中间用:隔开,如:2001:12FC:..
    若以零开头可以省略,全零的组可用"::"表示,如:1:2::ABCD:..
    地址前缀长度用“/xx”表示,如: 1::1/64
    注:“::” 一个v6地址只能出现一次


    例如同一个地址的不同表示方法:
    ①0001:0123:0000:0000:0000:ABCD:0000:0001/96
    ②1:123:0:0:0:ABCD:0:1/96
    ③1:123::ABCD:0:1/96


    v4环回地址是127.0.0.1,v6环回地址是0:0:0:0:0:0:0:1 简写 ::1
    当电脑没有配置IPv6的时候,0:0:0:0:0:0:0:1充当占位符,
    当配置了IPv6以后,在IPv6中代表默认路由,即:: 代表0.0.0.0/0


    IPv6地址 = 前缀 + 接口标识
    前缀:相当于v4网络地址中的网络ID
    接口标识:相当于v4地址中的主机ID
    如:2001:A304:6101:1::E0:F726:4E58/64
    前缀是2001:A304:6101:1 接口标识:E0:F726:4E58 那么前缀64位,接口64位
    如:2001:123::xx:xx:x/128 ,那么这个代表一个环回口地址 例如2.2.2.2/32
    如:2001:123::xx:xx:x/127 ,那么这个代表一个点到点地址,例如12.1.1.1/30

    IPv6地址分类

    v6地址分为三种地址:
    ①单播地址(UA) ②组播地址(MA) ③泛播地址(AA)
    在IPv6中不再使用广播的概念,所有的广播都是用组播代替。
    单播和组播都和v4相同。泛播即任意播,是指,在分布式场景中,多个设备使用同一个泛播地址为最近的用户提供服务。

    地址分类
    地址类型 二进制前缀 IPv6标识
    未指定 00..0(128bits) ::/128
    环回地址 00..1(128bits) ::1/128
    组播 11111111.xx FF00::/8
    链路本地地址(用于路由协议) 1111111010.xx FE80::/10
    站点本地地址(私有地址) 1111111011.xx FEC0::/10
    全局单播(公有地址)
    单播

    单播地址用于一对一的连接,IPv6单播地址有以下类型:

    • 未指定的地址,环回地址和IPv4兼容地址
      IPv4兼容地址,是把v6地址的后32位,用来存放v4地址,例如:::192.168.30.1 = ::C048:1E01
    • 本地链路地址,简称Link-Local 地址
      FE80::/10
    • 本地站点地址,简称Site-Local地址
      FEC0::/10
    • 可聚合全球单播地址,简称AGUA地址
      2000::到3FFF:FFFF:FFFF:FFFF.....
      AGUA地址,前三位必须是001,后十三位为TLA,再后8位为RES区域位,再往后24位为NLAs,是网络位,供运营商进行分配,之后的16位为SLA,为子网位,分配给企业用,企业拿到的就是2::/48的地址。

    组播

    组播地址用于一到多的连接,地址主要是FF00::/8
    前八位为FF,后四位代表标志位,Flag位为0代表永久的,Flag位为1代表暂时的,而再后四位代表范围,
    范围为1代表本地接口范围,2代表本地链路范围,5代表本地站点范围,8代表组织结构范围,E代表全球范围。
    例如FF02::9 这个地址FF开头,是个组播地址,第三位为0,代表永久分配,第四位为2,代表本地链路范围。

    组播指定地址:

    组播地址 范围 含义 描述
    FF01::1 节点 所有节点 在本地接口范围的所有节点
    FF01::2 节点 所有路由器 在本地接口范围的所有路由器
    FF02::1 本地链路 所有节点 在本地链路范围的所有节点
    FF02::2 本地链路 所有路由器 在本地链路范围的所有路由器
    FF05::2 站点 所有路由器 在一个站点范围的所有路由器
    节点必需的地址

    任何一个v6节点都需要开启以下地址:
    每个接口的本地链路地址、环回口地址、被分配的单播地址、
    所有节点组播地址、主机所属的组播组地址、本地站点地址
    所用的每个单播和任播地址的被请求节点组播地址(相当于v4的arp协议,使用ICMPv6)

    被请求节点组播地址
    就是本地链路范围的组播地址,前面是FF02:,中间是全零,然后是FF/104,即FF02::1:FF/104

    IPv6在Ethernet技术上

    IPv6拥有一个特定的Ethernet协议ID,是0x86DD,用来分辨是IPv6还是IPv4。

    Destination Ethernet Address Source Ethernet Address Type header and payload
    0x0800 IPv4
    0x86DD IPv6
    组播在Ethernet中的映射

    如果一个数据包是三层的封装发送到组播地址,你肯定需要一个目的MAC地址,那么这个目的MAC如何表示?
    答:把你要发送的这个三层的组播地址的最后三十二位拿出来,当做目标MAC,然后往前补16位的33:33.
    即,比如发送的组播地址是FF02::1:FF17:FC0F,那么最后32位FF17:FC0F用来做MAC地址,并补齐地址为:33:33:FF17:FC:0F,这就是IPv6在以太协议栈中的地址映射。
    不难发现,FF02::1:FF17:FC0F,前面是FF02,中间全零,后端是FFxx,这很显然是一个被请求节点组播地址。

    接口ID的生成

    v6地址中都会有接口ID,这是由MAC地址构成,通过48bit的MAC地址转化为64bit的接口ID,肯定是扩充得到的,通过EUI-64的扩充方式。

    例如:一个MAC地址是00:90:27:17:FC:0F,通过把MAC地址对折,前面24bit,后面24bit,中间固定的插入FF:FE字段共16bit,得到一个EUI-64地址,EUI-64地址中的第7bit位代表物理地址的全球唯一性,如果不是1要改为1,与48bit位的物理地址相反,1为全球管理,0为本地管理。
    通过实验能看出,IPv6的接口地址中式插入了FF:FE字段,并且在地址的第7bit改为了1.
    IPv6地址配置技术

    IPv6可以发现邻居,其实通过ICMPv6来实现的。(NDP_RFC2461
    IPv6邻居发现原理:
    首先PC1发送一个ICMP135类型邻居请求消息(NS)到PC2的被请求节点组播地址,PC2收到后,回复一个ICMP136类型邻居宣告消息(NA)到IPC1,这样在PC1就记录下了PC2的MAC地址,类似于v4网络中,将目标MAC存放在自己的ARP缓存表中。


    我们抓包看看,在v6网络中是通过ICMPv6建立邻居关系,最后Neighbor Solicitation和Neighbor Advertisement就代表着建立邻居请求和邻居宣告的完成。
    启用IPv6
    • 启用IPv6流量转发
    Router(config) ipv6 unicast-routing  //默认关闭,跑路由协议需开启,其实就是加入组播地址 FF02::2
    Router(config) ipv6 ref load-sharing original //等价路由下,基于hash算法的数据报流量分担
    
    • 通过在接口上配置IPv6地址,开启接口对IPv6支持
      Router(config-if-GigabitEthernet 0/0)#ipv6 address 2001:12::1/64 //PC机模式
    • 也可以不配置v6地址,先配置本地链路地址
      Router(config-if-GigabitEthernet 0/0)#ipv6 enable //默认情况下,不可用 PC机模式
    IPv6的自动配置

    IPv6地址的自动配置分为【无状态自动配置】和【有状态自动配置】。
    IPv4中的DHCP配置,是一种有状态自动配置,是通过DHCP这种应用层协议来实现的。
    IPv6中,可以通过ICMPv6实现无状态自动配置。
    PC通过ICMP133向FF02::2发送一个RS请求,路由器收到后,通过ICMP134向目的地址FF02::1发送一个RA消息。这些地址都是基于Ethernet的。
    FF02::2(链路上的所有路由器的组播地址) FF02::1(所有节点的组播地址)

    IPv6路由选择(RiPng、OSPFv3)

    RIPng中的主要更新
    • UDP端口号:IPv4中的RIP使用UDP520号端口,IPv6的RIPNG使用UDP521号端口
    • 本地链路地址:使用本地链路地址作为更新消息的源地址
    • 组播地址:IPv4中的RIP使用224.0.0.9,IPv6中的RIPng使用FF02::9
    • Metric值:在RIPng中,默认情况下进入路由表之前的RIPng度量值+1
    • 一些时间参数:见 “ show ipv6 rip”
      负载均衡功能:RIPng支持默认16条路径进行负载均衡(Max:64条)


    OSPFv3

    IPv6的OSPF和IPv4的OSPF差别并不大,下面的实验中,同时跑了IPv4和IPv6协议栈,基于接口的宣告可以加快邻居的建立关系。


    基于IPv4和IPv6网络的共存和整合

    -双栈协议(Dual Stack):网络中的主机、服务器和路由器可以同时使用IPv4和IPv6协议栈。
    -隧道协议(Tunneling):隧道使孤立的IPv6主机、服务器、路由器和域利用现有的IPv4基础设施与其他IPv6网络通信。

    例如在两端都是IPv6的网络,中间是IPv4的网络,这时候,如何让两端IPv6的网络能够实现OSFP路由协议的宣告,这时候使用tunneling,为IPv6地址做一层IPv4的封装,然后到对端后又进行解封装除去IPv4的头部,实现IPv6的互通。


    以上就是目前IPv6的相关原理与配置方法,临近元旦终于有时间进行整理一下了。

    相关文章

      网友评论

          本文标题:一文读完IPv4与IPv6的区别

          本文链接:https://www.haomeiwen.com/subject/siajndtx.html