目录

前文列表

IPv6 — 网际协议第 6 版

IPv6 的地址格式

IPv6 地址格式为 8 段 16 位(共 128 位)组成:

0010000000000001 0000000000000000 0011001000111000 1101111111100001 0000000001100011 0000000000000000 0000000000000000 1111111011111011

使用 32 个(4 * 8)十六进制数表示。十六进制表:

不同的段之间以符号 : 分隔,e.g. 2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b。

  • 最左侧的三个段(48 位)包含站点前缀。站点前缀描述通常由 ISP 或区域 Internet 注册机构(Regional Internet Registry,RIR)分配的站点的公共拓扑。
  • 下一个段网管分配的 16 位子网 ID。子网 ID 描述专用拓扑(也称为站点拓扑),因为它是一个私有网络的标识。
  • 最右侧的四个段(64 位)包含接口 ID,也称为标记。接口 ID 可以从接口的 MAC 地址自动配置,也可以采用 EUI-64 格式手动配置。

上图示例显示了 IPv6 地址的全部 128 位。前 48 位 2001:0db8:3c4d 包含表示公共拓扑的站点前缀。随后的 16 位 0015 包含代表站点专用拓扑的子网 ID。低阶(最右边的 64 位 0000:0000:1a2f:1a2b)包含接口 ID。

即使在转换为十六进制格式后,IPv6 地址仍然很长。所以 IPv6 提供了一些规则来缩短地址:

  • 规则 1:丢弃前导零,高位的连 0 可省略不写,低位的 0 不可省略,上述地址可简化记为 2001:db8:3c4d:15:0:0:1a2f:1a2b。
  • 规则2:连续多段全 0 可用符号 :: 替代且仅替代一次(只能出现一次),上述地址可进一步简化记为 2001:db8:3c4d:15::1a2f:1a2b。

此外,还支持 点分十六进制 的写法,e.g. 2001:0db8:85a3:08d3:1319:8a2e:0370:7344 则记为 2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4,其倒序写法用于在 ip6.arpa 子域名中记录 IPv6 地址与 Domain 之间的映射关系。

站点前缀

IPv6 地址格式同样采用了 CIDR(Classless Inter-Domain Routing,无类别域间路由)的方式,通过 前缀长度(Ipv6 Address / Prefix Length) 来划分 网络号主机号

IPv6 地址最左边的字段是用来路由 IPv6 包的前缀,最多占用 IPv6 地址最左侧的 48 位。例如,IPv6 地址 2001:db8:3c4d:0015:0000:0000:1a2f:1a2b/48 的站点前缀包含在最左边的 48 位 2001:db8:3c4d 中。此前缀可使用如下形式(将零省略掉)来表示:2001:db8:3c4d::/48。

地址生成方式

IPv4:手动配置、DHCP 自动分配。

IPv6:手动配置、DHCPv6 自动分配、基于 ICMPv6 的自动生成。

IPv6 地址的分类以及寻址模式



单播(Unicast)地址

单播地址用于标识一个网络接口(Interface),在单播寻址模式下,IPv6 协议会把送往地址的数据包送往给其 Interface。

单播地址可以进一步细分为以下 4 类:

  • 全球唯一地址(Global Unique Address):公网地址,全球可达。
  • 唯一本地地址(Unique Local Unicast Address):私网地址,同子网段可达。
  • 链路本地地址(Link-Local Address):基于邻居发现协议的自动配置地址,同一个链路上的所有主机可达,不需要手动配置。
  • 站点本地地址(Site-Local Address):已丢弃,被链路本地地址替代。

单点传送地址的类型由地址中最左边(高阶)的连续位(其中包含前缀)来确定。单点传送地址的格式按以下分层结构进行组织:

  • 公共拓扑
  • 站点(专用)拓扑
  • 接口 ID

单播地址作用范围:

Interface ID

IPv6 具有三种不同类型的本地单播地址方案。地址的后 64 位始终作为 Interface ID。在本地单播地址的场景中,Interface ID 可直接从 MAC 转换而成:MAC 地址是在世界唯一的,Interface ID 利用了 MAC 地址的唯一性。所以 Host 可以直接使用 IEEE 的扩展唯一标识符(EUI-64)格式自动的配置其 Interface ID。比如:将 48 位的 IEEE 802 MAC 地址平分为两部分,然后在中间插入 16 位的 FFFE 即可转换为 64 位的 Interface ID 了。因为,MAC 地址是全球唯一的,所以从 MAC 地址转换得来的 Interface ID 也是全球唯一的。

为了将 EUI-64 ID 转换为 IPv6 Interface ID,EUI-64 ID 的最高有效的第 7 位被补充。 例如:

全球唯一地址(Global Unique Address)

是全球唯一和可识别的 IPv6 地址,等同于 IPv4 的公网地址。由以下 3 部分组成:

  • 全球路由前缀(Global Routing Prefix):标识 1 个 Site。
  • Subnet ID:标识 Site 中的一个 Subnet。
  • Interface ID:标识 Subnet 中的一个 Interface。

  • 公共拓扑:站点前缀定义从网络到路由器的公共拓扑。企业的站点前缀可以从 ISP 或区域 Internet 注册机构(Regional Internet Registry,RIR)获取。
  • 站点拓扑和 IPv6 子网:在 IPv6 中,子网 ID 定义网络的管理子网,它的最大长度为 16 位。可以在配置 IPv6 网络的过程中指定子网 ID。子网前缀通过指定已分配了子网的特定链路来定义路由器的站点拓扑。IPv6 子网在概念上与 IPv4 子网相同,因为每个子网通常都与一个硬件链路相关联。但是,IPv6 子网 ID 用十六进制表示法表示,而不是用点分十进制表示法表示。
  • 接口 ID:接口 ID 用来标识特定节点的接口。接口 ID 必须在子网内唯一。IPv6 主机可以使用相邻节点搜索协议自动生成其自身的接口 ID。相邻节点搜索协议基于主机接口的 MAC 地址或 EUI-64 地址自动生成接口 ID。也可以手动指定接口 ID,建议对 IPv6 路由器和启用了 IPv6 的服务器采用这种方式。

注意,在全球单播地址中,规定如 2001:BCFF:FEA6::/48 表示一个 IPv6 路由前缀,2001:BCFF:FEA6:6C01::/64 表示一个 IPv6 子网前缀。

本地唯一地址(Local Unique Address)

唯一本地地址(Unique Local Unicast Address)



前缀为 fc00::/7,该地址是本地全局唯一的,但只能用于本地通信,不通过 Internet 路由,等同于 IPv4 的私有网络地址,用于取代站点本地地址。该地址包含一个 40 位的伪随机数,以减少当网站合并或数据包误传到网络时碰撞的风险。

站点本地地址(Site-Local Address)

只可在 Site 内路由,相当于 IPv4 的私网地址。站点本地地址由于起初的标准定义模糊而被弃用,而后 RFC 又重新定义了唯一本地地址以满足本地环境中私有 IPv6 地址的使用,已被唯一本地地址替代。

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

链路本地地址前缀具有以下格式:fe80::interface-ID/10,当一个节点启用 IPv6 时自动生成,interface-ID 通常从 48 位 MAC 地址派生而来。



用于单一链路,适用于自动配置、NDP(Neighbor Discovery Protocol,邻居发现协议)等实现,路由器不转发以 fe80 开头的地址到 Link。前 64 位为 fe80::,而后 64 位为 Interface ID。可见,同一个 Link 上的所有 Interfaces 的前 64 位都是相同的,再通过后 64 的 Interface ID 来唯一标识一个 Interface。所以,Link-Local Address 只在 Subnet 中有效,即使 Link 上并没有路由器,Interfaces 之间也是可以通信的。

组播(Multicast)地址



在 IPv6 中没有广播的概念,而是使用用组播来代替,因此 IPv6 中存在大量的组播使用。组播地址用于标识一组 Interfaces。IPv6 的组播寻址与 IPv4 相同,目的地为多个主机的数据包在特殊的多播地址上发送。所有对该组播信息感兴趣的主机需要首先加入该组播组。加入组的所有 Interfaces 接收组播数据包并对其进行处理,而对组播数据不感兴趣的其他主机则忽略组播信息。

普通的组播地址前缀为 ff00::/8,通过第二段的最后四位来标识多播的 “范畴”。其中有些地址已用于指定特殊协议,例如 ff0X::101 对应所有区域的 NTP 服务器。

标志位为 0000 表示是永久保留的组播地址,分配给各种技术使用;标志位为0001 表示是用户可使用的临时组播地址。范围段定义了组播地址的范围,其定义如下:

  • 0001:本地接口范围。
  • 0010:本地链路范围。
  • 0011:本地子网范围。
  • 0100:本地管理范围。
  • 0101:本地站点范围,类似组播的私网地址。
  • 1000:组织机构范围。
  • 1110:全球范围,类似组播的公网地址。

下面是一些组播指定地址:

  • FF02::1,在本地链路范围的所有节点。
  • FF02::2,在本地链路范围的所有路由器。
  • FF02::5,all ospf routers。
  • FF02::9,所有运行 RIP 的路由器。
  • FF02::A,所有运行 eigrp 的路由器。
  • FF05::2,在一个站点范围内的所有路由器。

在创建某个接口的 IPv6 单点传送地址时,内核会自动使该接口成为某些多点传送组的成员。例如,内核会使每个节点都成为 “请求节点” 多点传送组的成员,相邻节点搜索协议使用该组来检测可访问性。内核还自动使节点成为 “所有节点” 或 “所有路由器” 多点传送组的成员。

  • 请求节点组播地址(Solicited-node multicast address):ff02::1:FFXX:XXXX,其中 XX:XXXX 为相对应的单播或任播地址中的三个最低的字节。

任播(Anycast)地址

任播(Anycast)地址,又称任意点传送地址,相当于是单播(Unicast)和广播(Broadcast)的综合体。单播是单点通信,广播是单一来源和多个目的地进行通信。而任播则在以上两者之间,它像广播一样,会有一组接收节点的地址列表,但只会发送给距离最近或发送成本最低(根据路由表来判断)的其中一个接收地址,当该接收地址收到数据包并进行回应,且加入后续的传输,该接收列表的其他节点,会知道某个节点地址已经回应了,它们就不再加入后续的传输作业。当前,任播地址只能分配给中间设备(e.g. 路由器、三层交换机等),不能分配给终端设备(e.g. 手机、电脑等),而且不能作为发送端的地址。

IPv6 任意点传送地址用来标识一组位于不同 IPv6 节点上的接口。每组接口都称作一个任意点传送组。当包发送到任意点传送地址时,任意点传送组中物理位置最接近发送者的成员将收到包。

特殊的地址

  • 未指定地址:::/128,即 0:0:0:0:0:0:0:0。只能作为尚未获得正式地址的 Host 的源地址,不能作为目的地址,不能分配给真实的 Interface。

  • 环回地址:::1/128,相当于 IPv4 中的回环地址 lo 127.0.0.1。

  • 路由协议的保留组播地址

  • 保留路由器/节点的多播地址:这些地址帮助路由器和主机与段上的可用路由器和主机通信,而无需配置 IPv6 地址。主机使用基于 EUI-64 的自动配置 IPv6 地址,然后通过这些地址与段上的可用主机/路由器通信。

  • ORCHID(Overlay Routable Cryptographic Hash Identifiers):2001:10::/28,这些是不可送达的 IPv6 地址,用于加密散列识别。

  • 示例地址:2001:db8::/32,这些地址应用于 IPv6 地址的示例中,或用于描述网络架构,作为描述性地址。

  • IPv4 转译地址:IPv4 位址可以很容易的转化为 IPv6 格式。举例来说,如果 IPv4 的一个地址为 135.75.43.52(十六进制为 0x874B2B34),它可以被转化为 0000:0000:0000:0000:0000:FFFF:874B:2B34 或者 ::FFFF:874B:2B34。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为 ::ffff:135.75.43.52。

    • ::A.B.C.D,兼容 IPv4 的 IPv6 地址。其中 A.B.C.D 代表 IPv4 地址。即后 32 位可以用 10 进制数表示,因此 ::ffff:192.168.89.9 相等于 ::ffff:c0a8:5909,自动将 IPv6 包以隧道方式在 IPv4 网络中传送的 IPv4/IPv6 节点将使用这些地址。
    • ::FFFF:A.B.C.D,是 IPv4 映射过来的 IPv6 地址,其中代表 IPv4 地址,e.g. ::ffff:202.120.2.30 ,它是在不支持 IPv6 的网上用于表示 IPv4 节点。
    • 2001::/16,全球可聚合地址,用于 Teredo 隧道,由 IANA 按地域和 ISP 进行分配,是最常用的 IPv6 地址,属于单播地址。
    • 2002::/16,6 to 4 地址,用于 6 to 4 自动构造隧道技术的地址,属于单播地址。

IPv6 — 地址格式与寻址模式的更多相关文章

  1. IPV6地址格式分析

    IPV6地址格式分析 IPv6的地址长度是128位(bit). 将这128位的地址按每16位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开. 例如:2000:0000:0000:0000:00 ...

  2. X86/X64处理器体系结构及寻址模式

    由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率差点儿已接近极限.尽管如此,自从86年Intel推出386至今除了添加一些有关流媒体的指令如mmx/sse ...

  3. 解决 cocos2dx iOS/mac 设置纹理寻址模式后纹理变黑的问题

    sprite:getTexture():setTexParameters(gl.LINEAR,gl.LINEAR,gl.REPEAT,gl.REPEAT) 在安卓设备上,设置了纹理自定义寻址模式,纹理 ...

  4. IPv6第二层寻址,IPv6接口要求

    1. IPv6第二层寻址 IPV6地址以两种方式与第2层地址相关.第一种方式是IPV6独有的,提供了从第2层地址构建接口ID的机制.第二种方式对IPv4和IPV6都是一样的,提供了将一个IP组播地址映 ...

  5. Intel 80x86 寻址模式

    随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则.在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么. 一.预赛: (1)作数 在接触寻址方式之前,我们还要先了解 ...

  6. IPv6地址格式示例及IPv6与IPv4的区别分析

    认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...

  7. IPv6地址格式

    1.说明 IPv6是互联网协议的第六版, 现有IPv4只支持大概40亿个网络地址, 而IPv6支持3.4e38个网络地址. IPv4的地址长度是32位(bit), IPv6的地址长度是128位. 尽管 ...

  8. [华三] IPv6技术白皮书(V1.00)

    IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...

  9. IPv6笔记-地址结构与分类

    1.地址基础 IPv6地址由被划分为8个16位块的128位组成. 然后将每个块转换为由冒号符号分隔的4位十六进制数字. 2001::3238:00E1:0063:0000:0000:FEFB 每一块多 ...

  10. IPV6技术笔记(剖析IPv4toIPv6)

    IPV6技术笔记 IPv6地址入门概念 什么是IPv6? IPv6,全称Internet Protocol version 6,即网际协议版本6,也叫互联网通信协议第六版.是互联网工程任务组(IETF ...

随机推荐

  1. java中DelayQueue的使用

    目录 简介 DelayQueue DelayQueue的应用 总结 java中DelayQueue的使用 简介 今天给大家介绍一下DelayQueue,DelayQueue是BlockingQueue ...

  2. Pandas统计计算

    基本的统计方法 Method Description count Number of non-NA values describe Compute set of summary statistics ...

  3. C# PropertyChanged 事件-数据绑定

    在.NET平台上,数据绑定是一项令人十分愉快的技术.利用数据绑定能减少代码,简化控制逻辑. 通常,可以将某个对象的一个属性绑定到一个可视化的控件上,当属性值改变时,控件上的显示数据也随之发生变化.要实 ...

  4. 域名之A记录,CNAME,NS联系和区别

    域名解析中常常涉及:A记录,CNAME,NS 1. A记录 又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器.说明:指向的目标主机地址类型只能使用IP地址; ...

  5. .NET周刊【4月第1期 2024-04-07】

    国内文章 一个程序员的编年史 https://www.cnblogs.com/lunacy/p/18117213 作者拥有15年软件开发经验,曾在多家公司工作,项目和团队起伏充满变数.2007年,在太 ...

  6. mysql 必知必会整理—视图[十二]

    前言 简单整理一下视图. 正文 视图: 需要MySQL 5 MySQL 5添加了对视图的支持.因此,本章内容适用于MySQL 5及以后的版本. 视图是虚拟的表.与包含数据的表不一样,视图只包含使用时动 ...

  7. 布匹瑕疵检测数据集EDA分析

    分析数据集中 train 集的每个类别的 bboxes 数量分布情况.因为训练集分了两个:train1,train2.先根据两个数据集的 anno_train.json 文件分析类别分布.数据集:布匹 ...

  8. Pytorch-tensor的激活函数

    1.激活函数 激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题.因为很多问题都不是线性的,你只有给它加入一些非线性因素,就能够让问题更好的解决. 函数1:RE ...

  9. 集群部署时的分布式 session 如何实现?

    面试官心理分析 面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务.接口幂等性.分布式锁, ...

  10. C内存操作API的实现原理

    我们在编写C代码时,会使用两种类型的内存,一种是栈内存,另外一种是堆内存,其中栈内存的申请和释放是由编译器来隐式管理的,我们也称为自动内存,这种变量是最简单而且最常用的,然后就是堆内存,堆的申请和释放 ...