IPv6 — 地址格式与寻址模式
目录
文章目录
前文列表
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 — 地址格式与寻址模式的更多相关文章
- IPV6地址格式分析
IPV6地址格式分析 IPv6的地址长度是128位(bit). 将这128位的地址按每16位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开. 例如:2000:0000:0000:0000:00 ...
- X86/X64处理器体系结构及寻址模式
由8086/8088.x86.Pentium发展到core系列短短40多年间,处理器的时钟频率差点儿已接近极限.尽管如此,自从86年Intel推出386至今除了添加一些有关流媒体的指令如mmx/sse ...
- 解决 cocos2dx iOS/mac 设置纹理寻址模式后纹理变黑的问题
sprite:getTexture():setTexParameters(gl.LINEAR,gl.LINEAR,gl.REPEAT,gl.REPEAT) 在安卓设备上,设置了纹理自定义寻址模式,纹理 ...
- IPv6第二层寻址,IPv6接口要求
1. IPv6第二层寻址 IPV6地址以两种方式与第2层地址相关.第一种方式是IPV6独有的,提供了从第2层地址构建接口ID的机制.第二种方式对IPv4和IPV6都是一样的,提供了将一个IP组播地址映 ...
- Intel 80x86 寻址模式
随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则.在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么. 一.预赛: (1)作数 在接触寻址方式之前,我们还要先了解 ...
- IPv6地址格式示例及IPv6与IPv4的区别分析
认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...
- IPv6地址格式
1.说明 IPv6是互联网协议的第六版, 现有IPv4只支持大概40亿个网络地址, 而IPv6支持3.4e38个网络地址. IPv4的地址长度是32位(bit), IPv6的地址长度是128位. 尽管 ...
- [华三] IPv6技术白皮书(V1.00)
IPv6技术白皮书(V1.00) http://www.h3c.com/cn/d_200802/605649_30003_0.htm H3C S7500E IPv6技术白皮书 关键词:IPv6,隧道 ...
- IPv6笔记-地址结构与分类
1.地址基础 IPv6地址由被划分为8个16位块的128位组成. 然后将每个块转换为由冒号符号分隔的4位十六进制数字. 2001::3238:00E1:0063:0000:0000:FEFB 每一块多 ...
- IPV6技术笔记(剖析IPv4toIPv6)
IPV6技术笔记 IPv6地址入门概念 什么是IPv6? IPv6,全称Internet Protocol version 6,即网际协议版本6,也叫互联网通信协议第六版.是互联网工程任务组(IETF ...
随机推荐
- #并查集,单调栈#美团2018年CodeM大赛-决赛 C-Traffic
题目 分析 首先如果枚举起点\(i\),点\(i\)到点\(j\)(i<j)的距离跳到点\(k\)(k<i)一定不优,所以可以先处理这种情况, 用单调栈维护\(dp\)单调递增,并且如果栈 ...
- Windows编译PDF库:libharu
libharu编译需要libpng,libpng依赖zlib,所以需要下载这三个库 libharu下载:http://libharu.org/ libpng下载:http://www.libpng.o ...
- Qt调用系统DLL,判断网络连接状态
*: Win32 网络连接 dll 文件名叫:wininet.dll,位置在 C:\WINDOWS\system32 目录下,将 其拷贝到项目工程下. #include <QLibrary> ...
- node require的循环引用是怎么一回事
require 运行过程 require 引用是同步的,没有异步这么一说,它会先运行一遍. setouttime(function(){ export=a; }) 如果我们require的时候,那么这 ...
- vue使用 elementUI中el-upload的遇到的问题总结
使用场景,使用el-upload上传文件,选择文件后不立即上传到服务器上,点击提交按钮时与其他form表单数据一起提交,类似的需求,相信有很多小伙伴遇到,可能也会遇到跟我一起的问题,在这里记录一下 & ...
- Vue 项目 invalid host header 问题 配置 disableHostCheck:true报错
项目场景:解决 Vue 项目 invalid host header 问题disableHostCheck:true报错 问题描述使用内网穿透时出现 invalid host header找了好多都是 ...
- 力扣645(java)-错误的集合(简单)
题目: 集合 s 包含从 1 到 n 的整数.不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 . 给定一个数组 nu ...
- 力扣453(java)-最小操作次数使数组元素相等(简单)
题目: 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. 示例 1: 输入:nums = [1,2,3]输出:3解释:只需要3次操作 ...
- 力扣341(java)-扁平化嵌套列表迭代器(中等)
题目: 给你一个嵌套的整数列表 nestedList .每个元素要么是一个整数,要么是一个列表:该列表的元素也可能是整数或者是其他列表.请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数. ...
- 函数计算GB镜像秒级启动:下一代软硬件架构协同优化揭秘
简介: 优化镜像加速冷启动大致分为两种做法:降低绝对延迟和降低冷启动概率.自容器镜像上线以来我们已经通过镜像加速技术,分阶段降低了绝对延迟.本文在此基础上,介绍借助函数计算下一代IaaS底座神龙裸金属 ...