【IPv6】IPv6地址格式及地址分类(组播、单播、任播)整理

news2024/11/25 8:41:39

IPv6地址格式

       IPv6 地址从 IPv4 地址的 32 bits 扩展到 128 bits,IPv6 地址的表示、书写方式也从 IPv4 的点分十进制,修改16进制的冒号分割

IPv4 点分格式(.)

192.168.11.11

IPv6 冒号分割(:)

2408:8459:3032:0000:0000:0000:0001:a9fd

IPv6 的规范

IPv6 地址,IETF 在标准中规定了 IPv6 的规范文本表示形式:

省略每个字段中的前导零

压缩前:0000:0000:0000:0000:0000:0000:0000:0001
压缩后:::1

使用双冒号 “::” 替换连续全零的字段

       每一块多个前导的0可以省略,一个块全为0可以简写为一个0,,多个块为连续0的话可以简写为:: (地址表示中仅能有一个::)

压缩前:2001:0410:0000:0000:fb00:1200:5000:4500
压缩后:2001:410::fb00:1200:5000:4500

压缩前:2001:0410:0000:1234:fb00:1200:5000:4500
压缩后:2001:410::1234:fb00:1200:5000:4500

压缩前: 3ffe:0000:0000:0000:1010:2a2a:0000:0001
压缩后:3ffe::1010:2a2a:0:1

不允许压缩单个零字段

压缩前: 3ffe:0000:0000:0000:1010:2a2a:0000:0001
压缩后:3ffe::1010:2a2a:0:1

十六进制中的 a, b, c, d, e, f 必须是小写的

2001:0410:0000:1234:fb00:1200:5000:4500

IPv6 地址分类

单播 (Unicast)

        单播地址唯一标识一个 IPv6 节点的接口。发送到单播地址的报文将被发送到由该地址标识的接口。

全球单播地址

       全球单播(Global Unicast) 一般从运营商处申请到的IPv6地址空间为/48,三个最高有效位始终设置为001,再由自己根据需要进一步规划:

       

链路本地单播地址 

        只在本地链路的节点之间使用,不会被路由(不同的链路上可以重复),用来自动地址配置、邻居发现、路由器发现等等,每个ipv6接口都必须具备的地址,且默认自动配置。类似于windows系统中IPv4的169.254.0.0/16地址(link-local IPv4 address)它的有效范围仅仅在所处链路上。以FE80::/10为前缀,11-64位为0,外加一个64bits的接口标识(一般是EUI-64)。

        链路本地地址是仅用于与同一本地链路上的设备进行通信。必须保证这些地址在链路上的唯一性,因为数据包不会被路由到该链路之外。也就是说,路由器不会转发任何以链路本地地址为源地址或目的地址的数据包。所有 IPv6 网络接口都配置链路本地地址,前缀为 fe80::/10 (实际上是 fe80::/64 的子集)。

环回

       与 IPv4 环回地址 127.0.0.1 等价。不能将该地址分配给任何物理接口,主机可以利用此地址向自己发送 IPv6 数据包。在路由器等网络设备上,通常使用环回地址来建立路由协议的邻居。

未指定地址

      未指定地址是全 0 地址,不能分配给接口。未指定地址被用作源地址以表示接口无 IPv6 地址,仅被用做源地址。

本地唯一地址

       其实就是类似ipv4的内网地址,ipv4有三段192.168/16、10/8、172.16~172.31/16,只能在私网内使用,自行配置网段

        本地唯一地址的前缀为:fc00::/7,是对 IPv4 私有地址的替换 (RFC 1918),仅供在一个站点或一组站点中本地使用。本地唯一地址具有全局唯一性,但无法在全球互联网上路由。本地唯一地址解决了 IPv4 和 RFC 1918 地址中出现的一些操作问题,被设计用于企业站点或有限的网络集。
ULAs 必须通过在路由器上配置本地前缀 (Router Advertisement) 或通过 DHCPv6 来分配,地址结

 

内嵌IPv4

        映射 IPv4 地址的 IPv6 地址,用来帮助从 IPv4 迁移到 IPv6,如在 IPv6 套接字上处理 IPv4 连接。使用前缀 ::ffff:0:0/96 (0:0:0:0:0:ffff:0:0/96),例如 ::ffff:192.0.2.124。注意,这里的文本表示方式略有不同,以便更容易在 IPv6 地址中嵌入 32 位 IPv4 地址。

        这个地址就是把IPv4地址包含在IPv6地址中,把IPv6地址的高80位全部设置为0, 然后中间16位设置为1, 低32位设置为IPv4地址。如下图:

image-20210417163307557

组播 (Multicast)

       IPv6 组播(多播)地址是一组接口的标识符(典型在不同节点上)。一个接口可以属于任何数目的组播组。组播地址最高位前8位固定为全1,也就是“FFXX::/8”

       IPv6通信的核心大量的使用了组播(邻居发现协议NDP),IPv6不再使用广播。IPv6的任何节点都能够成为一个组播成员,源节点可以发送数据包到组播组,任何一个组播成员都能收到来自这个组播组的数据包。

well-known组播

Interface-local scope

Link-local scope
 Site-local scope

节点请求(Solicited-Node)

       Solicited-Node多播地址前缀是ff02:0:0:0:0:1:ff00::/104,Solicited-Node多播地址用于主要用于NDP(Neighbor Discovery Protocol)协议,NDP协议的功能有两个:

Address resolution

Duplicate Address Detection (DAD)

       NDP协议的Address resolution功能就类似IPv4的ARP协议,名字都一样,就是根据IP地址请求MAC地址。DAD功能是用来检测局域网中的所有设备的单播地址都是不同的。

        在IPv4环境中,ARP地址解析协议利用广播将MAC请求消息发送给整个以太网链路上的所有主机,目的主机回应ARP Reply从而使发送源获得目的主机的MAC地址。

        节点请求则以一种“点对点”的形式将MAC地址请求消息发送到目标主机(因为主机的请求节点组播地址如FF02::1:FFAA:4C3E在整个链路上是唯一的),所以源主机可以直接将节点请求信息发到目标主机节点请求组播地址上,节点请求组播地址是提高MAC地址解析的核心技术,那么这个目标主机的节点请求组播是如何生成的?

        节点请求组播的构成如下: 该组播地址是将一个单播IPv6地址(可以是本地链路地址也可以是全球单播地址)的后24位填充到一个请求节点组播地址的124位的固定前缀FF02::1:FF中,生成一个唯一的节点请求组播地址。

        如一台IPv6主机的本地链路地址为FECO:0000:0000:0000:0230:18FF:FEAA:4C3E,现在通过对这个地址的实践分析,来理解该地址所对应的节点请求组播地址的构成原理,如下图所示。首先是还原节点请求组播地址的124位固定前缀的标准格式:“FF02:0000:0000:0000:0000:0001:FF”然后取出IPv6主机的本地链路地址FECO:0000:0000:0000:0230:18FF:FEAA:4C3E中的最后24位,填充到“FF02:0000:0000:0000:0000:0001:FF”前缀中,IPv6使用十六进制表达,那么一个十六进制字符是4个二进制位,所以需要将IPv6单播地址中的最后6个字符(二进制为24位)取下填充到124位固定前缀中形成最后的地址:FF02:0000:0000:0000:0000:0001:FFAA:4C3E,最后使用“零压缩”法表示成为:FF02::1:FFAA:4C3E。

 IPv6的组播地址与MAC地址的映射关系

       IPv6的节点请求多播地址去替代了ARP地址解析协议的目标广播地址255.255.255.255,这只能表示IPv6的节点请求从网络层上的优化与改进,在数据链路层优化则是:

        在IPv4的ARP地址解析协议中的请求消息报文的目标链路层地址为FFFF.FFFF.FFFF,那么在IPv6中节点请求消息报文的目标链路层地址是什么?在IPv4中组播的IP地址是可以映射成为数据链路层的MAC地址,在IPv6中这个概念仍然生效,IPv6的节点请求组播地址也可以映射成数据链路层地址,具体方法如下图所示组播的MAC地址是通地IPv6的组播IP地址映射而来,映射的原则是:将IPv6组播地址的后32位取出,填充到固定前缀是3333的MAC地址中来生成数据链路层地址。

Win10系统中通过netsh interface ipv6 show neighbors可查看设备各个接口下的邻居建立情况: 

单播地址到Solicited-Node组播地址的映射

       Solicited-Node组播地址前104位是固定的,还剩下的24位则是来自单播地址,这剩下24位和单播地址是相同的。如下图,把单播地址的低24位拷贝过来,作为Solicited-Node多播地址的低24位。

这个单播地址可以是全局单播地址,也可以是Link-Local单播地址。

Solicited-Node组播地址到MAC地址的映射

        Solicited-Node组播地址要映射到MAC地址上,就是Mac地址的高12位不变,低32位改为Solicited-Node多播地址的低32位。如图所示:


 

组播地址示例

       IPv6 标准为所有的 NTP servers 定义了组播组 ID:0x101
这个组 ID 可以与不同的范围值一起使用:

注意:
临时分配的多播地址只有在定义的范围内才有意义。
组播地址不应用作 IPv6 报文的源地址或出现在任何路由报头中。
node-local scope 修改为 interface-local scope

任播 (Anycast)        

          任播地址的作用是在多台主机或多台路由器提供相同服务的场合下实现冗余性和负载均衡机制。任播并不专用于IPv6,早在1993年的RFC 1546中就已经将任播定义为用于IPv4的试验性规范。该规范为任播定义了专用前缀,使得通过该前缀即可识别任播地址。任播主要应用于DNS和HTTP等服务。为了正确处理这些非全局唯一的地址,该RFC还讨论了需要对TCP做的可能修改。

         但是在实际应用中,任播并没有得到所期望的实现和使用。通常使用的是一种被称为共享单播地址(shared unicast address)的方法。该方法通过将一个普通单播地址分配给多个接口并在路由表中创建多个路由表项。在这种情况下,网络层和传输层都将其视为全局唯一的IP地址。如果不是,那么应用程序中就必须内嵌处理这种有歧义地址的相关机制。一种例外情况就是应用程序采用了独立的无状态请求/应答处理方式,如DNS over UDP。Internet上的根DNS就是使用共享单播地址设立的,该过程无需网络层的任何支持,也能用于IPv6。

        IPv6开发人员在设计之初就考虑如何根据RFC 1546将任播融合到网络层中,因而没有为任播分配特殊前缀。IPv6任播地址空间与全局单播地址完全相同,因而必须为任播参与接口明确说明所配置的是任播地址。在接口包含相同任播地址的区域中,必须在路由表中将每台主机都宣告为一条独立的表项。如果多播接口没有可定义的区域,那么就要通过Internet传播所有的任播表项(这是最坏的一种情况),因而建议不使用或严格限制这类全局任播地址。

        如果网络中的一组路由器都能提供访问公共路由域的能力,那么就可以为这组路由器分配单个地址。客户端向该地址发送数据包时,会被依次转发给可用路由器。一个例子就是RFC 3068中定义的6to4中继任播地址(将在第10章讨论)。移动IPv6规范也使用了任播地址。

       需要注意到是,使用任播地址时,发送端无法控制将数据包发送到特定接口,该决策是在路由协议层面确定的。发送端向任播地址发送多个数据包的时候,数据包可能会到达不同的目的端。因此,如果是一系列请求和应答消息或者数据包被分段了,任播就可能会出现问题。

       RFC 4291 规定的子网路由器的任播地址如下:

        基本上,该地址看起来像一个常规的单播地址,带有指定子网的前缀和设置为全零的标识符。发送到这个地址的数据包将被发送到该子网的一台路由器上。所有路由器都需要支持它们有接口的子网的子网路由器任播地址。

       保留子网任播地址可以有两种格式:   

 

 RFC 2526 规定在每个子网内,最大的 128 个接口标识值将保留为子网任播地址分配。
Reserved anycast IDs

        这种形式的任播地址和共享单播地址之间的主要区别是,在后者中,应用程序需要支持任播,而在前者中,如果可能的话,将避免这种支持。我们需要指导如何使用它和修改现有的有状态传输协议。 

        任播地址与共享单播地址在使用上的主要区别在于,使用共享单播地址时,应用必须支持任播,而使用任播地址时,应用可以不支持任播,因而需要有相应的使用指南并说明如何对现有的状态化传输协议进行修改。Draft-doi-ipv6-anycast-func-term-05.txt描述了IPv6任播的使用条件以及使用要点。 

任播与组播的区别

       任播是将报文转发到一组节点中的一个(仅是一个),而组播却是将 报文转发给一组节点中的所有成员。
        Server A, B, C均申明适用任播地址2001:AD02::1, 路由器根据路由协议决定将目的为2001:AD02::1的报文发给三者中的一个(如:Cost最小的Server C)

IPv6 vs. IPv4 特殊地址

PrefixDesignationIPv4 equivalent
::/128Unspecified
This address may only be used as a source address by an initializing host before it has learned its own addresses.
0.0.0.0
::1/128Loopback
This address is used when a host talks to itself over IPv6. This often happens when one program sends data to another.
127.0.0.1
::ffff/96

Example: ::ffff:192.0.2.47

IPv4-mapped
Used to embed IPv4 addresses in an IPv6 address. One use for this is in a dual-stack transition scenario where IPv4 addresses can be mapped into an IPv6 address. See RFC 4038 for more details.
No IPv4 equivalent. However, you can search for the mapped IPv4 address in the relevant Whois Database.
fc00::/7

Example: fdf8:f535:82e4::53

Unique Local Addresses (ULAs)
Reserved for local use in home and enterprise environments (not public address space).
Private, or RFC 1918 address space:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
fe80::/10

Example: fe80::200:5aee:feaa:20a2

Link-Local Addresses

Used on a single link or a non-routed common access network, such as an Ethernet LAN. They do not need to be unique outside of that link.

May appear as the source or destination of an IPv6 packet. Routers must not forward IPv6 packets if the source or destination contains a link-local address.

169.254.0.0/16
2001:0000::/32

Example: 2001:0000:4136:e378:8000:
63bf:3fff:fdd2

Teredo
This is a mapped address allowing IPv6 tunnelling through IPv4 NATs. The address is formed using the Teredo prefix, the server’s unique IPv4 address, flags describing the type of NAT, the obscured client port, and the client IPv4 address, which is usually a private address. It is possible to reverse the process and identify the IPv4 address of the relay server, which can then be looked up in the relevant Whois Database.
No IPv4 equivalent
2001:0002::/48

Example: 2001:0002:6c:ab::a

Benchmarking
Reserved for use in documentation. They should not be used as source or destination addresses.
198.18.0.0/15
2002::/16

Example: 2002:cb0a:3cdd:1::1

6to4
A 6to4 gateway adds its IPv4 address to this 2002::/16, creating a unique /48 prefix. As the IPv4 address of the gateway router is used to compose the IPv6 prefix, it is possible to reverse the process and identify the IPv4 address, which can then be looked up in the relevant Whois Database.

See how it works on Potaroo.

There is no IPv4 equivalent, but 192.88.99.0/24 has been reserved as the 6to4 relay anycast address prefix by the IETF.
2001:db8::/32

Example: 2001:db8:8:4::2

Documentation
used in examples and documentation. These should never be source or destination addresses.
  • 192.0.2.0/24
  • 198.51.100.0/24
  • 203.0.113.0/24
2000::/3Global Unicast
The operators of networks using these addresses can be found using the RIR Whois servers listed in the IANA registry.
No equivalent single IPv4 block
ff00::/8

Example: ff01:0:0:0:0:0:0:2

Multicast
Used to identify multicast groups. They should only be used as destination addresses, never as source addresses.
224.0.0.0/4

 参考链接

ipv6地址零压缩方法_IPv6地址详解-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_39983554/article/details/112415232IPv6 地址格式及报文详解_ipv6格式-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/u013669912/article/details/139904198
华为数通 IPv6 全球单播地址、组播、任播 | Leoco-Blog (zleoco.com)icon-default.png?t=O83Ahttps://www.zleoco.com/?p=2155

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

平面电磁波的电场能量磁场能量密度相等,注意电场能量公式也没有复数形式(和坡印廷类似)

1、电场能量密度和磁场能量密度相等(实数场算的) 下面是电场能量密度和磁场能量密度的公式,注意这可不是坡印廷定理。且电场能量密度没有复数表达式,即不是把E和D换成复数形式就行的。注意,一个矢量可以转化为复数形式,两个矢量做…

6.4 数据处理架构模式和实践

6.4 数据处理架构模式和实践 目录概述需求: 设计思路实现思路分析1.批处理架构2.实时处理架构3.流处理架构4.微服务架构(重点)5.数据湖架构6.数据仓库架构 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , s…

Java | Leetcode Java题解之第452题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; class Solution {public int findMinArrowShots(int[][] points) {if (points.length 0) {return 0;}Arrays.sort(points, new Comparator<int[]>() {public int compare(int[] point1, int[] point2) {if (point1[1] > point2[1…

微软官网列出了 Windows 11 LTSC 2024 中的全部新功能

今天早些时候&#xff0c;微软发布了有关受托管PC的Windows 11 24H2 升级和兼容性的详细信息。 该帖子针对的是负责在各自办公室和组织中处理系统的 IT 系统管理员。与此同时&#xff0c;微软也发布了有关 Windows 11 LTSC 或长期服务渠道的信息。 该公司已于四月早些时候证实…

yolov10+strongsort的目标跟踪实现

此次yolov10deepsort不论是准确率还是稳定性&#xff0c;再次超越了之前的yolodeepsort系列。 yolov10介绍——实时端到端物体检测 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上&#xff0c;引入了一种新的实时目标检测…

Java 异常一口气讲完!(_ _)。゜zzZ

Java 异常处理 Java面向对象设计 - Java异常处理 异常是在没有定义正常执行路径时在Java程序的执行期间可能出现的条件。 Java通过将执行操作的代码与处理错误的代码分离来处理错误。 当发生异常时&#xff0c;Java会创建一个包含有关异常的所有信息的对象&#xff0c;并将其…

HTML增加文本复制模块(使用户快速复制内容到剪贴板)

增加复制模块主要是为了方便用户快速复制内容到剪贴板&#xff0c;通常在需要提供文本信息可以便捷复制的网页设计或应用程序中常见。以下是为文本内容添加复制按钮的一个简单实现步骤&#xff1a; HTML结构&#xff1a; 在文本旁边添加一个复制按钮&#xff0c;例如 <butto…

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo

蘑菇分类检测数据集 21类蘑菇 8800张 带标注 v 蘑菇分类检测数据集 21类蘑菇 8800张 带标注 voc yolo 蘑菇分类检测数据集介绍 数据集名称 蘑菇分类检测数据集 (Mushroom Classification and Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目标检测模型…

管理方法(12)-- 采购管理

采购人员不是在为公司讨价还价,而是在为顾客讨价还价,我们应该为顾客争取最低的价钱。-----山姆 沃尔顿 沃尔玛的创始人。 1. 采购的定义和原则 5R原则:适时(Right Time)、适质(Right Quality)、适量(Right Quantity)、适价(Right Price)、适地(Right Place)。…

Linux -- 文件系统(文件在磁盘中的存储)

目录 前言&#xff1a; 了解机械磁盘 初始盘片与磁头 盘片是怎么存数据的呢&#xff1f; 详解盘片 如何访问磁盘中的一个扇区呢&#xff1f; -- CHS 定位法 磁盘的逻辑存储 LBA&#xff08;Logical Block Addressing --- 逻辑块寻址&#xff09; 如何将 LBA 地址转换为…

C++ | Leetcode C++题解之第455题分发饼干

题目&#xff1a; 题解&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int m g.size(), n s.size();int count 0;for (int i 0, j 0; i < …

js中各种时间日期格式之间的转换

前言&#xff1a;近几天在做百度地图时,需要转换时间格式并做显示,下面这篇文章主要给大家介绍了关于js中各种时间格式的转换方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下 &#x1f308;&#x1f308;文章目录 先来认识 js 的时间格式有哪些&#xf…

CSS3旋转、平移、缩放、倾斜

CSS3平移、缩放、倾斜、旋转 前言 下面代码用到了盒子如下&#xff1a; 使用 一、平移translate() 语法&#xff1a;translate(x轴平移距离, y轴平移距离) 使用方式如下&#xff1a; /* x轴平移200px&#xff0c;y轴平移100px */ transform: translate(200px, 100px);二、…

JavaWeb——Vue组件库Element(5/6):案例:组件实现(概述、Form表单、Table表格、Pagination 分页、效果展示、完整代码)

目录 概述 Form表单 Table表格 Pagination 分页 效果展示 完整代码 概述 在刚才制作出来的页面当中&#xff0c;上面项目的名称已制作好&#xff0c;左侧的菜单栏也已配置好。 接下来主要处理的是右侧主展示区域当中的组件编写。 在右侧的主展示区域&#xff0c;主要有…

【C++】多肽

目录 一 多肽定义 1. 多肽的构成条件 1 例一 2 例二 2. 虚函数 3. 虚函数重写的两个意外 1 协变 2 析构函数的重写 二 关键字override 和 final 1. final 2.override 三 三重对比 1. 练习 四 多肽的原理 1. 多肽调用和普通调用 2.虚函数表 3. 分析 4. 原理 …

【web安全】——文件包含漏洞

1. 文件包含基础 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。 1.1. 文件包含简介 什么叫包含呢&#xff1f;以PHP为例&#xff0c;我们常常把可重复使用的函…

【CKA】十二、持久化存储卷PersistentVolume

12、持久化存储卷PersistentVolume 1. 考题内容&#xff1a; 2. 答题思路&#xff1a; 按题目要求检查各个参数&#xff0c;我就是第一次没看清楚&#xff0c;把ReadWriteOnce写成ReadWriteMany了&#xff0c;幸亏做完检查了一遍 这个参数可有可无&#xff0c;加上也不影响 …

【Go语言】Ergo:构建分布式系统的现代化 Erlang 框架

Ergo 是一个基于 Go 语言的开源框架&#xff0c;专门用于构建分布式系统。它为开发人员提供了与 Erlang/OTP 类似的编程模型和功能。Ergo 通过将 Erlang 的强大分布式并发编程模型带入 Go 语言的生态中&#xff0c;使得开发者能够轻松创建高度可靠、可扩展的分布式应用程序。 …

NumPy 第三课 -- Ndarray 对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray&#xff0c;它是一系列同类型数据的集合&#xff0c;以 0 下标为开始进行集合中元素的索引。 ndarray 对象是用于存放同类型元素的多维数组。 ndarray 中的每个元素在内存中都有相同存储大小的区域。 ndarray 内部由以下内…

CMU 10423 Generative AI:lec15(Scaling Laws 大规模语言模型的扩展法则)

文章目录 一 概述1. **扩展规律的背景**2. **两种主要的扩展规律**3. **模型容量扩展规律**4. **信息论下界**5. **计算扩展规律**6. **训练高效性**7. **结论与启示** 二 2bit/parameter 概念&#xff08;模型的存储能力分析&#xff09;**1. 概念解释****2. 图表解读****3. 量…