浅谈ipv6

目录

IPv6 地址分类

IPv6 地址—IPv6接口ID的生成方式

IPv6 地址—IPv6组播地址

预定义的All Nodes Addresses组播地址:

预定义的All Routers Addresses组播地址:

Solicited-Node多播地址:

icmpv6协议

IPv6 邻居发现协议

重复地址检测

重定向

Path MTU—PMTU发现过程

 NS报文作用

ipv4和ipv6地址和DNS获取区别

无状态、有状态地址分配

无状态(Stateless M=0):根据RA中的前缀信息自动配置ipv6地址

有状态(M=1):通过DHCPv6⽅式获得IPv6地址

最后附上一个大佬的文章!!


(IPv6地址组成:前缀 + 接口标识)

IPv6 地址分类

  • 单播地址:标识一个接口,目的为单播地址的报文会被送到被标识的接口

链路本地地址:用于本地链路寻址,自动地址配置和邻居发现,以FE80开头, 例FE80::E0:F726:4E58

  • 组播地址
  • 任播地址

(单播地址或任播地址的后64位除特殊情况必须是该接口的接口标识符)

IPv6 地址—IPv6接口ID的生成方式

依据IEEE-EUI-64自动生成:将48比特的MAC地址转化为64比特的接口ID(在中间插入FFFE,将表示Universal/Local (U/L)位由0改成1)

IPv6 地址—IPv6组播地址

前缀:FFxx::/8;

在IPV6中没有广播的概念,而是使用用组播来代替;因此IPv6中存在大量的组播使用。

预定义的All Nodes Addresses组播地址:

FF01:0:0:0:0:0:0:1   (interface-local)

FF02:0:0:0:0:0:0:1   (link-local).

预定义的All Routers Addresses组播地址:

FF01:0:0:0:0:0:0:2    (interface-local)

FF02:0:0:0:0:0:0:2    (link-local).

FF05:0:0:0:0:0:0:2    (site-local).

Solicited-Node多播地址:

(Solicited-Node多播地址的前缀都是相同的,只有最后24位不同,而最后24位取自单播或者任播地址的最后24位。这24位实际就是取自于64位接口标识符的后24位。)

 RFC 4861 IPv6邻居发现中规定,在节点进行地址解析时,要将邻居请求(NeighborSolicitation)消息发送到请求目标地址(目的地址是一个组播地址)的请求-节点多播地址。

  

RFC4862 无状态地址自动配置 中规定,在节点执行 DAD重复地址检测(DuplicateAddress Detection) 时,要将邻居请求(NeighborSolicitation)消息发送到请求目标地址的  被请求-节点多播地址。(源地址为空,进行组播检测是否有人在使用此地址了,如果有带上地址的回复,则证明此地址被用了)

回复带了地址(则表示此地址有人在用):

浅谈ipv6_第1张图片

浅谈ipv6_第2张图片

浅谈ipv6_第3张图片

数据包的目的地址是根据target address 生成的

简单描述:

我想用这个target地址,那我就先把这个NS报文发送给这个target地址所在的组放ff02::16,所有的组成员就会收到,如果有某个组成员用了这个target ip,则就会回复带有此target ip的报文证明有人在用此ip了。

IPv6的ND模块中用于报文目的地址、IPv6重复地址检测(DAD)的目的地址(也就是正在被进行地址解析或者重复地址检测的地址)

        FF02:0:0:0:0:1:FFXX:XXXX XX:XXXX取单播/任播地址的接口ID的后24Bits

ipv6 与MAC地址的映射关系

        FF02:0:0:0:0:1:FFXX:XXXX  MAC 地址是3333+接口ID后32bits。

icmpv6协议

邻居发现、PathMTU发现机制均是基于ICMPv6协议报文实现的

IPv6 邻居发现协议

重复地址检测

使用NS和NA的交互过程 邻居请求NS使用组播(根据ip的到mac),相当于IPV4的arp请求,从协议地址向硬件地址映射的功能, 邻居公告NA返回则直接使用单播。

主机和路由器在接口初始化时都会自动生成 Link-local地址 接口ID通常使用EUI-64格式生成

非Link-local地址的自动配置只应用于主机,主机需要从路由器公告获取前缀信息。(isp给我们最外层路由器分配两个地址,一个是全球单播ipv6地址、一个是前缀),只有主机可以直接使用此前缀生成ipv6。想其他设备也可以使用前缀生成地址,则需要再搭建一个服务器,

重定向

可以直接到达想要到的目的地,节省带宽资源、已经减轻中介设备的负担。

Path MTU—PMTU发现过程

( IPV6只在源节点分片,目的节点重组)

路由器转发时,将数据包的大小和出接口的MTU比较,不大于MTU就可以通过,否则就给源节点发送ICMPv6的数据包过大消息,并告知MTU的值。即需要协商最小MTU。

 NS报文作用

1、DAD地址检测

2、根据ip建立通信获取mac

浅谈ipv6_第4张图片

链路本地地址(Link-local Address)是一类特殊的IP地址,仅用于在网段内、同一广播域内的主机相互通讯使用,这类主机可认为是不须要外部互联网服务的。

 inet6 addr: fe80::e267:b3ff:fe00:2/64(链路本地地址,即使没给分配,都会自动根据自己的mac生成,因为NS交互就是要通过ip通信来获取对方mac,但是生成前(NS报文)会进行DAD检测,无冲突则用此地址)

 E0:67:B3:00:00:02  ---》fe80::e267:b3ff:fe00:2生成说明:

fe80 :开头的ip地址在ipv6中是链路本地地址

e2:根据mac中的E0,将第七位翻转而得到 E0: 1110 0000  --》E2:1110 0010

ff:fe:在fe80之后的第4、5字节替换为FFFE

(生成链路本地地址的方式不止这一种)

ipv4和ipv6地址和DNS获取区别

1.ipv4 dhcp 获取,可以获取一切信息,包括ipv4地址掩码,网关;DNS

2.ipv6地址获取有2种方式,有状态和无状态获取。

无状态、有状态地址分配

通过RA中的M、O标志位决定是无状态还是有状态地址分配

M标记值为0时,表示RA中携带的Prefix Information Option可以用于完成无状态地址分配;

M标记值为1时,表示需要使用DHCPv6协议获取IPv6地址。

M标记为0时,Host可以使用RA中Prefix Information Option中的IPv6 Prefix和自己的接口ID组成IPv6全球单播地址

目前IPv6地址的分配方法有以下几种:

手动配置。手动配置 IPv6 地址 / 前缀及其他网络配置参数( DNS NIS
SNTP 服务器地址等参数)
无状态自动地址分配。由接口 ID 生成链路本地地址,再根据路由通告报文
RA Router Advertisement )包含的前缀信息自动配置本机地址
有状态自动地址分配,即 DHCPv6 方式。 DHCPv6 又分为如下两种 :
       ➢ DHCPv6 有状态自动分配。 DHCPv6 服务器自动分配 IPv6 地址 /PD 前缀及
        其他网络配置参数(DNS NIS SNTP 服务器地址等参数)
        ➢ DHCPv6 无状态自动分配。主机 IPv6 地址仍然通过路由通告方式自动生
        成,DHCPv6 服务器只分配除 IPv6 地址以外的配置参数,包括 DNS NIS
        SNTP服务器等参数

无状态(Stateless M=0):根据RA中的前缀信息自动配置ipv6地址

IPv6无状态地址分配,使用ND协议的RS<->RA交互完成

ipv6地址通过路由通告RA方式生成

有状态(M=1):通过DHCPv6⽅式获得地址

  IPv6地址、其他参数(如DNS)均通过DHCPv6获取     

m=0就是无状态(ipv6地址通过ra前缀生成),m=1就是有状态(ipv6地址通过dhcpv6获取)

最后附上一个大佬的文章!!

深入浅出ipv6有状态、无状态

你可能感兴趣的:(网络协议,网络,ip)